Arcmap Виберіть за атрибутами з Python


9

Я хотів би, щоб наступним чином вибрати (виділити) шар "проект", який перетинає сітку, а потім витягнути запис із вибраного "Сітки". Мені не потрібно зберігати шар.

Примітка. Запуск сценарію з ArcMap у вікні консолі Python.

import arcpy

# Make a layer from the feature class
arcpy.MakeFeatureLayer_management("project","project_lyr")

# Then add a selection to the layer based on location to features in another feature class 
arcpy.SelectLayerByLocation_management("project_lyr","INTERSECT","Grid")

Цей код запускається і помилок не наводиться, проте він не вибирає (виділяє) жодних функцій. Будь-яка ідея чому? Також працює дуже повільно.

Результати

В основному я намагаюся це зробити:

введіть тут опис зображення

Це працює дуже швидко майже миттєво, але я хочу зробити те саме, використовуючи python. Мені просто потрібно значення з таблиці вибраних функцій, мені не потрібна копія шару.

Частиною рішення може бути використання робочої області в пам'яті, яка є

Запис даних у робочу область пам'яті часто значно швидше, ніж запис у інші формати ...

Просто не впевнений, як реалізувати робочу область в пам'яті


Ви запускаєте цей скрипт у ArcMap (тобто в консолі Python)? Або ззовні ArcMap (тобто в межах IDLE або іншого редактора Python)? Єдиний спосіб ArcMap "вибрати (виділити) будь-які функції" - це зсередини ArcMap. Я підозрюю, що ви запускаєте скрипт поза ArcMap, тому що import arcpyкоманда запускає деякий час.
dmahr

Я запускаю сценарій з ArcMap у вікні консолі Python.
Трістан Форвард

Якщо ви запускаєте його всередині ArcMap, arcpy.MakeFeatureLayer()рядок вам не потрібен , оскільки projectце вже шар. Просто роби arcpy.SelectLayerByLocation_management("project","INTERSECT","Grid").
dmahr

чудовий формат запитань!
Бред Несом

Завдяки @dmahr, все ще працює повільніше, ніж вбудований Select by Attribute, але працює.
Трістан Форвард

Відповіді:


2

Хороше питання!

Dmahr вірно, швидше просто просто вибрати шар, а не створювати функціональний шар. Я також додав би решту змінних, хоча вони не є обов'язковими.

arcpy.SelectLayerByLocation_management ("project_lyr", "INTERSECT", "Grid", "#", "NEW_SELECTION")

Ще одна річ, яку я знаходжу, - це те, що запускати речі у вікно пітона ArcMap завжди повільніше. Я вважаю, що якщо ви пишете код у файл .py, додаєте його як скрипт до панелі інструментів, а потім запускаєте його, обробка піде швидше.

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