Инструмент Создать слой из выбранных объектов: Как хранится список объектов?

12

В ArcGIS Desktop есть инструмент под названием Создать слой из выбранных объектов . Используя этот инструмент, я могу преобразовать выделение в слой в ArcMap.

Я предполагаю, что в слое, где-то встроенном в слой, есть «список объектов», который выделяет, какие объекты отображать на карте.

Я бы подумал, что «список функций» был бы сохранен в whereпредложении в запросе определения в виде списка objectids. Например: where objectid in(123,456,789,...). Однако, это не так.

Если у слоя нет WHEREпредложения или определения, то как хранится список объектов?

Wilson
источник
2
Существует большая разница между пунктом меню и инструментом геообработки. То, что вы говорите, бывшее. Вы можете использовать данные, хранящиеся в Fidset, чтобы сделать ваши слои.
FelixIP
2
Я уверен, что при создании слоя выбора не сохранено предложение WHERE, и после его создания вы НЕ сможете узнать исходное выделение, использованное для его создания. Я надеюсь, что я ошибся в форме ответа, потому что недавно я имел дело с очень старым слоем выбора и выяснил, какой оригинальный набор функций использовался для его создания, было бы удобно.
Дан С
1
Fidset является свойством слоя. Это ; отдельная строка для хранения выбранных FID.
FelixIP
Создать слой из выбранных объектов НЕ создает ДИНАМИЧЕСКИЙ слой. Результирующий слой вообще не является динамическим. Он основан на FIDset. Если вы измените исходные данные, FID изменится, и ваш слой выбора сломается. Это не что иное, как слой Query, в котором хранится предложение where
jbalk

Ответы:

14

Создать слой из выбранных объектов НЕ создает ДИНАМИЧЕСКИЙ слой . Результирующий слой вообще не является динамическим. Он основан на FIDset.

Если вы измените исходные данные, FID изменится, и ваш слой выбора сломается.

В слое выбора нет предложения where. Он основан на наборе FID (FID, которые были выбраны при использовании «Создать слой из выбранных объектов»).

Обратите внимание, что если вы добавляете или удаляете записи из исходных данных, FID изменится, и ваш слой выбора покажет неверные записи.

Вы путаете слой выбора со слоем запроса, который хранит предложение where и является динамическим.

РЕДАКТИРОВАТЬ: список объектов для слоя выбора сохраняется в памяти. Не рекомендуется использовать слои выбора, кроме как для временной работы, поскольку невозможно восстановить исходное выделение после разрыва слоя выбора.

Чтобы найти список объектов в слое выбора, вы можете использовать множество различных методов, включая SearchCursor, для создания списка идентификаторов.

Что-то вроде этого:

OIDlist = []
with arcpy.da.SearchCursor(layer, 'OBJECTID') as scur:
    for row in scur:
        OIDlist.append(row[0])

Из комментария crmackey :

Существует также встроенный способ с описанием для получения FIDSet. Это строка, но ее легко преобразовать в список:

OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))
jbalk
источник
1
Существует также встроенный способ с описанием, чтобы получить FIDSet. Это строка, но ее легко преобразовать в список: OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))
crmackey
Информация, связанная с
Wilson
11

Лучше всего я понял, как Create Layer from Selected Featuresэта ссылка, с которой я столкнулся, создала временный слой для выбора объектов

Создание временного слоя позволяет вам что-то делать, например делать выборки, не затрагивая исходный источник данных. Этот слой не будет отображаться в содержимом ArcCatalog, поскольку он создается в памяти и просто ссылается на данные, хранящиеся на диске. Эти слои можно использовать в качестве входных данных для других инструментов геообработки в вашей рабочей сессии. После выхода из приложения слои в памяти будут удалены.

Инструмент «Создать векторный слой» находится в наборе инструментов «Слои» и «Табличные представления» в наборе инструментов «Инструменты управления данными». Щелкните правой кнопкой мыши инструмент «Создать векторный слой» и выберите «Открыть» или дважды щелкните его, чтобы открыть инструмент.

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

Кроме того, как уже упоминалось ранее и Esri покрыть это Работа с выбранными функциями ,

В этом примере слой, созданный из выбранных объектов, полезен только как временный рабочий набор данных (например, для использования в качестве входных данных в модели геообработки). Новый слой создает список FeatureID (FID) или ObjectID (OID) выбранных объектов и становится недействительным при обновлении или изменении исходного источника данных .

Кроме того, здесь более подробно обсуждается общее чтение « Использование рабочего пространства в памяти» , связанное с in_memoryрабочим пространством. Это просто предназначено для дополнительной информации, если вам было интересно.

whyzar
источник
2

Я предполагаю, что слой из Create Layer From Selected Featuresне основан на WHEREпредложении или логическом условии, потому что набор выбора может быть создан без использования логики.

Например, вы можете вручную добавлять / удалять любые объекты из набора выбора, используя главное меню , например, перетаскивая поле, которое может быть из одного из предыдущих «Выбор по атрибутам / местоположению».

Я предполагаю, что selection set ( IFeatureSelection) - это просто обширный набор результатов (содержащий копии идентификаторов исходного слоя), а не правила, определяющие набор результатов. Отсюда предупреждение в связанной документации о том, что идентификаторы могут стать недействительными, если идентификаторы исходного слоя изменятся.

tinlyx
источник