Фильтрация объектов с определяющими запросами

При определении набора данных, который вы хотите отобразить как слой на карте или сцене, иногда бывает нужно отобразить только некоторые пространственные объекты этого набора. Примеры:

  • Из набора данных городов мира необходимо выбрать только те, где население превышает 1 млн
  • Из набора данных по рекам необходимо выбрать только те, которые не пересыхают летом
  • Из набора данных земельных участков необходимо выбрать только коммерческие

Определяющие запросы позволяют задавать поднабор объектов для работы, отфильтровав извлечение объектов из набора данных по слою. Это означает, что определяющий запрос влияет не только на отображение, но также на наличие объектов в атрибутивной таблице слоя, возможность их выделения, надписывания, идентификации и обработки инструментами геообработки.

Если вы хотите ограничить отображение объектов, но сохранить возможность обработки и запросов к объектам, используйте фильтры отображения. Определяющие запросы и фильтры отображения могут использоваться на слое вместе, но определяющие запросы ограничивают доступность объектов в слое, а фильтры отображения - ограничивают только их отображение.

Определяющие запросы могут включать одно или несколько условий. Они пишутся на языке SQL с помощью специального конструктора запросов. Для изучения работы с запросами и условиями, способами сохранения и загрузки запросов из файлов см. раздел Начало работы с выражениями в запросах.

Слой может содержать несколько определяющих запросов, связанных с ним, но одновременно только один запрос может быть активным. Даже если в слое задано несколько определяющих запросов, неактивными могут быть все, т.е. запрос не применяется.

Примечание:

В этом разделе описано применение определяющих запросов в векторном слое, но их также можно применять и к автономным таблицам.

Создание определяющего запроса для слоя

Чтобы создать определяющий запрос для слоя, выполните следующие действия:

  1. Убедитесь, что слой выделен на панели Содержание.
  2. В наборе вкладок Векторный слой щелкните вкладку Данные.
  3. На вкладке Данные в группе Определяющий запрос щелкните кнопку Построить определяющий запрос Установщик, чтобы открыть диалоговое окно Свойства слоя с открытой вкладкой Определяющий запрос.
  4. Щелкните кнопку или ниспадающее меню Новый определяющий запрос, чтобы создать новый запрос в режиме выражения, режиме SQL или в файле выражения запроса (.exp).
  5. Выбирайте из меню значения, чтобы создать запрос. Эти меню и их значения зависят от соответствующих исходных данных.
  6. Дополнительно щелкните Добавить условие Добавить новое условие, чтобы добавить другое условие к выражению. Выберите в новом выражение необходимые значения из меню. Повторите это действие, чтобы добавить дополнительные условия, при необходимости.
  7. Дополнительно щелкните Параметры поля Настройки, чтобы изменить отображение значения поля. Эти настройки применяются ко всем условиям.
    • Показать псевдонимы полей выбрано по умолчанию. Щелкните Показать имена полей, чтобы включить имя таблицы в ниспадающее меню поля условия. Это особенно полезно, если слой участвует в соединении, которое содержит общие имена полей.
    • Щелкните Сортировать по возрастанию или Сортировать по убыванию, чтобы отображать имена полей в ниспадающем списке в алфавитном порядке. Щелкните Исходный порядок, чтобы вернуться к порядку полей по умолчанию.
    • Показать видимые поля выбрано по умолчанию. Щелкните Показать все поля, чтобы отображать спрятанные поля в ниспадающем меню поля условия.
  8. Дополнительно, задержите курсор над именем запроса и щелкните, чтобы изменить имя.
  9. Дополнительно, щелкните Проверить правильность SQL выражения Проверить правильность SQL-выражения, чтобы проверить его.
  10. Для проверки и завершения создания запроса щелкните Применить.
  11. Если это единственный определяющий запрос в слое, он станет активным и будет применен немедленно. Если в слое есть и другие определяющие запросы, щелкните Сделать активным Сделать активным, чтобы применить определяющий запрос к слою.

Задание активного определяющего запроса

Можно задать для таблицы или слоя несколько определяющих запросов и переключаться между ними. Только один из них может быть активным, либо активных запросов может не быть вообще. Определяющие запросы сохраняются как свойство слоя.

Чтобы переключаться между активными определяющими запросами, выполните следующие действия:

  1. Убедитесь, что слой выделен на панели Содержание.
  2. В наборе вкладок Векторный слой щелкните вкладку Данные.
  3. На вкладке Данные, в группе Определяющий запрос, выберите запрос из меню Определяющий запрос для его применения к слою.
  4. Либо можно задать активный запрос в диалоговом окне Свойства слоя.
    • Щелкните Сделать активным Сделать активным для применения запроса к слою. Другие запросы станут не активными. Активный запрос указан внизу диалогового окна Свойства. Если у вас есть большое число запросов, а активного запроса не видно, щелкните Показать активный определяющий запрос Показать активный определяющий запрос, чтобы прокрутить к нему.
    • Щелкните Очистить активный запрос Очистить активный запрос, чтобы к слою или таблице запрос не применялся. Все запросы относятся к слою или таблице, но ни один из них в настоящий момент не будет применен.

Подсказка:

Вы можете фильтровать список слоев на панели Содержание, чтобы показать только слои с активным определяющим запросом.

Изменение существующих запросов

Для выбранного слоя на панели Содержание на вкладке Векторный слой на вкладке Данные в группе Определяющий запрос щелкните кнопку Построить определяющий запрос Установщик, чтобы открыть диалоговое окно Свойства слоя с открытой вкладкой Определяющий запрос. Для изменения запроса поместите над ним курсор и выполните одно из следующего:

  • Для изменения, добавления и удаления выражений запроса щелкните Редактировать.
    • Чтобы изменить выражение в запросе, измените значения.
    • Чтобы удалить выражение из запроса, нажмите Удалить выражение Удалить условие.
    • Чтобы добавить выражение в запрос, щелкните Добавить выражение Добавить новое выражение.

    Щелкните Применить, чтобы применить изменения к определяющему запросу.

  • Чтобы удалить определяющий запрос из слоя или таблицы, без входа в режим редактирования, наведите курсор на ячейку запроса и щелкните Удалить определяющий запрос Убрать.
  • Чтобы переименовать определяющий запрос, щелкните его имя и введите новое.
  • Чтобы экспортировать синтаксис в файл выражения запроса (.exp), без входа в режим редактирования, наведите курсор на ячейку запроса и щелкните Сохранить определяющий запрос Сохранить.
  • Чтобы заменить текущий запрос другим из файла выражения запроса (.exp), без входа в режим редактирования, наведите курсор на ячейку запроса и щелкните Загрузить определяющий запрос Загрузить запрос.

Задание запросов сразу для нескольких слоев

Если у нескольких слоев есть определяющие запросы с одинаковыми именами - даже если содержание запросов не является идентичным - запросы можно активировать для слоев одновременно. То есть можно создать несколько связанных запросов и применить их все сразу. И можно переключиться на другой набор запросов - предназначенный для реализации другого сценария, если необходимо.

Для применения определяющих запросов с одинаковыми именами к нескольким слоям выполните следующие действия:

  1. Убедитесь, что слои выделены на панели Содержание.
  2. В наборе вкладок Векторный слой щелкните вкладку Данные.
  3. На вкладке Данные, в группе Определяющий запрос, выберите запрос из меню Определяющий запрос для его применения к слою.

    Будут показаны только определяющие запросы с одинаковыми для всех выбранных слоев именами.

Автоматизация создания определяющего запроса

Вы можете автоматизировать создание и выполнение определяющих запросов с помощью Python, используя комбинацию функций ArcPy. Подробнее об этой теме, включая примеры кода, см. документацию для класса Layer.

Публикация слоев с определяющими запросами

При публикации слоя в качестве векторного или в слое изображений карты, сохраняется и применяется только активный определяющий запрос. Все остальные определяющие запросы будут удалены.