Я хотел бы, чтобы следующее выделило (выделило) слой "project", который пересекает сетку, а затем вытащил запись из выбранной "Grid". Мне не нужно сохранять слой.
Примечание. Запуск сценария из 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. Мне просто нужно значение из таблицы выбранного объекта, мне не нужна копия слоя.
Частично решением может быть использование рабочей области в памяти, которая
Запись данных в рабочее пространство в памяти часто происходит значительно быстрее, чем запись в другие форматы ...
Просто не уверен, как реализовать рабочее пространство в памяти
источник
import arcpy
команды занимает некоторое время.arcpy.MakeFeatureLayer()
линия, так какproject
это уже слой. Просто делайarcpy.SelectLayerByLocation_management("project","INTERSECT","Grid")
.Ответы:
Хороший вопрос!
Dmahr прав: быстрее просто выбрать слой, а не создавать векторный слой. Я также добавил бы остальные переменные, даже если они не являются обязательными.
Еще одна вещь, которую я нахожу, это то, что запуск вещей в окне Python в ArcMap всегда происходит медленнее. Я обнаружил, что если вы напишите код в файл .py, добавите его в виде сценария на панель инструментов и затем запустите, обработка будет выполняться быстрее.
источник