В ArcGIS Desktop есть инструмент под названием Создать слой из выбранных объектов . Используя этот инструмент, я могу преобразовать выделение в слой в ArcMap.
Я предполагаю, что в слое, где-то встроенном в слой, есть «список объектов», который выделяет, какие объекты отображать на карте.
Я бы подумал, что «список функций» был бы сохранен в where
предложении в запросе определения в виде списка objectids
. Например: where objectid in(123,456,789,...)
. Однако, это не так.
Если у слоя нет WHERE
предложения или определения, то как хранится список объектов?
Ответы:
Создать слой из выбранных объектов НЕ создает ДИНАМИЧЕСКИЙ слой . Результирующий слой вообще не является динамическим. Он основан на FIDset.
Если вы измените исходные данные, FID изменится, и ваш слой выбора сломается.
В слое выбора нет предложения where. Он основан на наборе FID (FID, которые были выбраны при использовании «Создать слой из выбранных объектов»).
Обратите внимание, что если вы добавляете или удаляете записи из исходных данных, FID изменится, и ваш слой выбора покажет неверные записи.
Вы путаете слой выбора со слоем запроса, который хранит предложение where и является динамическим.
РЕДАКТИРОВАТЬ: список объектов для слоя выбора сохраняется в памяти. Не рекомендуется использовать слои выбора, кроме как для временной работы, поскольку невозможно восстановить исходное выделение после разрыва слоя выбора.
Чтобы найти список объектов в слое выбора, вы можете использовать множество различных методов, включая SearchCursor, для создания списка идентификаторов.
Что-то вроде этого:
Из комментария crmackey :
Существует также встроенный способ с описанием для получения FIDSet. Это строка, но ее легко преобразовать в список:
источник
FIDSet
. Это строка, но ее легко преобразовать в список:OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))
Лучше всего я понял, как
Create Layer from Selected Features
эта ссылка, с которой я столкнулся, создала временный слой для выбора объектовМеханизм, который может считывать данные на этом диске, заключается в том, как получить доступ к «набору результатов».
Кроме того, как уже упоминалось ранее и Esri покрыть это Работа с выбранными функциями ,
Кроме того, здесь более подробно обсуждается общее чтение « Использование рабочего пространства в памяти» , связанное с
in_memory
рабочим пространством. Это просто предназначено для дополнительной информации, если вам было интересно.источник
Я предполагаю, что слой из
Create Layer From Selected Features
не основан наWHERE
предложении или логическом условии, потому что набор выбора может быть создан без использования логики.Например, вы можете вручную добавлять / удалять любые объекты из набора выбора, используя главное меню , например, перетаскивая поле, которое может быть из одного из предыдущих «Выбор по атрибутам / местоположению».
Я предполагаю, что selection set (
IFeatureSelection
) - это просто обширный набор результатов (содержащий копии идентификаторов исходного слоя), а не правила, определяющие набор результатов. Отсюда предупреждение в связанной документации о том, что идентификаторы могут стать недействительными, если идентификаторы исходного слоя изменятся.источник