Створити шар із інструменту «Вибрані функції»: Як зберігається список функцій?


12

У ArcGIS Desktop є інструмент під назвою Створити шар із вибраних функцій . Використовуючи цей інструмент, я можу перетворити виділення в шар в ArcMap.

Я здогадуюсь, що існує "список особливостей", який вбудований у шар десь, який виділяє, які функції відображати на карті.

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

Якщо в шарі немає WHEREзапиту або пункту визначення, то як зберігається список функцій?


2
Існує велика різниця між пунктом меню та інструментом геообробки. Те, що ви говорите, колишнє. Ви можете використовувати дані, збережені у fidset, для створення своїх шарів.
FelixIP

2
Я майже впевнений, що під час створення шару вибору не зберігається пункт WHERE і що після його створення ви НЕ зможете знайти оригінальний вибір, який використовується для його створення. Я сподіваюся, що я виявився неправильним у формі відповіді, тому що нещодавно я мав справу з дуже старим шаром вибору та з'ясуванням оригінального вибору функцій, які використовувалися для його створення, було б зручно.
Dan C

1
Fidset є властивістю шару. Це є ; відокремлений рядок для зберігання FID вибору.
FelixIP

Створення шару з вибраних функцій НЕ створює DYNAMIC-шар. Отриманий шар зовсім не динамічний. Він заснований на FID-наборі. Якщо ви зміните вихідні дані, FID зміняться, і ваш рівень вибору порушиться. Це не що інше, як шар «Запит», який зберігає пункт «де»
jbalk

Відповіді:


14

Створення шару з вибраних функцій НЕ створює DYNAMIC-шар . Отриманий шар зовсім не динамічний. Він заснований на FID-наборі.

Якщо ви зміните вихідні дані, FID зміняться, і ваш рівень вибору порушиться.

У шарі вибору немає пункту. Він заснований на FIDset (FID, які були вибрані, коли ви використовували "Створити шар із вибраних функцій").

Зауважте, що якщо ви додаєте або видалите записи з вихідних даних, FID зміняться, і ваш рівень вибору покаже неправильні записи.

Ви плутаєте шар вибору з шаром запиту, який зберігає пропозицію де і є динамічним.

EDIT: Список функцій шару вибору зберігається в пам'яті. Неправильно застосовувати шари відбору, окрім тимчасових робіт, оскільки немає можливості відновити вихідний відбір після того, як вибірковий шар порушиться.

Щоб знайти список функцій у шарі вибору, ви можете використовувати безліч різних методів, включаючи 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(';'))

1
Існує також вбудований спосіб з описом, щоб отримати FIDSet. Це рядок, але його легко перетворити на список: OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))
crmackey


11

Найкращий спосіб я зрозумів, як Create Layer from Selected Featuresце посилання, що я натрапив на створення тимчасового шару для вибору функцій

Створення тимчасового шару дозволяє виконувати такі дії, як зробити вибір, не впливаючи на вихідне джерело даних. Цей шар не відображатиметься у вмісті ArcCatalog, оскільки він створений в пам'яті та просто посилається на дані, що зберігаються на диску. Ці шари можуть бути використані як вхідні дані до інших інструментів геообробки в межах вашого робочого сеансу. Після виходу із програми шари в пам'яті будуть видалені.

Інструмент "Зробити функціональний шар" знаходиться в наборі інструментів "Шари та таблиці" в панелі інструментів "Інструменти управління даними". Клацніть правою кнопкою миші інструмент Make Feature Layer та натисніть кнопку Open (Відкрити) або двічі клацніть її, щоб відкрити інструмент.

Механізмом, який може прочитати в цьому просторі диска, було б отримати доступ до "набору результатів"

Крім того , як уже згадувалося раніше і Esri накрийте його роботи з вибраними функціями ,

У цьому прикладі шар, який створюється з вибраних функцій, корисний лише як тимчасовий робочий набір даних (наприклад, для використання в якості введення в геопроцесорну модель). Новий шар складає список FeatureID (FID) або ObjectID (OID) вибраних функцій і стане недійсним, коли оригінальне джерело даних буде оновлено або змінено .

Також тут більше обговорення як загального читання, Використання робочої області в пам'яті , пов'язаної з in_memoryробочою областю. Це лише призначено для отримання додаткової інформації, якщо вас зацікавило.


2

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

Наприклад, ви можете вручну додати / видалити будь-які функції з набору вибору за допомогою головного меню , наприклад, перетягнувши поле, яке може бути з одного з попередніх Select by Attributes / Location.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.