Python и геообработка

Python является языком написания скриптов в ArcGIS. В ArcGIS включены Python API, ArcPy, предоставляющий доступ ко всем инструментам геообработки, а также к дополнительным функциям и классам, и специализированные модули, позволяющие автоматизировать задачи ГИС. Вы можете писать скрипты, которые будут использовать как ArcPy, так и огромный набор функций, которые включают стандартный Python и библиотеки сторонних разработчиков. Вы можете запускать команды и скрипты Python в ArcGIS Notebooks, в окне Python, через инструменты-скрипты, или можно запустить Python вне ArcGIS Pro. Как бы вы ни запускали Python, фундаментально команды работают одним и тем же способом и используют одинаковые инструменты геообработки.

Ниже представлен простой скрипт геообработки, использующий ArcPy.

import arcpy

roads = "c:/base/data.gdb/roads"
output = "c:/base/data.gdb/roads_Buffer"

# Run Buffer
arcpy.analysis.Buffer(roads, output, "100 Feet")

Задание параметров инструмента

Каждый инструмент геообработки имеет фиксированный набор параметров, который обеспечивает инструмент необходимой для запуска информацией. Когда инструмент используется в Python, значения его параметров должны быть заданы корректно, только так инструмент будет нормально работать при запуске скрипта. Если для параметров указаны корректные значения, инструмент готов к запуску. Большинство параметров можно задать в виде строк. Некоторые сложные параметры можно задавать как объекты, что облегчает работу с ними, по сравнению со строками.

Строки представляют собой текст, который уникально определяет значение параметра, например, путь к данным или ключевое слово. В следующем примере показаны входные и выходные параметры, заданные для инструмента Буфер. Обратите внимание, что к имени инструмента присоединяется псевдоним набора инструментов, в который он входит. В этом примере две строковые переменные используются для задания входных и выходных параметров, чтобы сделать вызов инструмента более легким для понимания.

Многие инструменты геообработки включают как обязательные, так и дополнительные параметры. Часто большинство дополнительных параметров указывать не нужно. Есть несколько способов работы с такими не использующимися аргументами. Один из них – сохранить все дополнительные аргументы и ссылаться на них как на пустые строки "", используя знак "#" или тип None.

import arcpy
arcpy.management.AddField("schools", "school_id", "LONG", "", "", "", "", "NON_NULLABLE")
Второй способ – использовать аргументы ключевого слова и имя аргумента для присвоения значения. Использование аргументов ключевого слова позволяет пропускать не использующиеся дополнительные аргументы или задавать их в произвольном порядке.

import arcpy
arcpy.management.AddField("schools", "school_id", "LONG", field_is_nullable="NON_NULLABLE")

Выходные данные инструмента

ArcPy возвращает выходные значения инструмента в виде объекта Result. Объект Result сохраняет информацию о запуске инструментов, включая сообщения, параметры, а также пути к выходным данным и их значения. Эти результаты могут быть доступны даже после того, как были выполнены несколько других инструментов.

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

import arcpy

arcpy.env.workspace = "c:/city/data.gdb"

# Geoprocessing tools return a Result object 
result = arcpy.management.CopyFeatures("roads", "urban_roads")

# A print function will display the string representation of the output.
print(result)

# A Result object can be indexed to get the output value.
result_value = result[0]

При создании выходных данных, которые создаются на промежуточном этапе рабочего процесса, выходной аргумент можно опустить, что позволит инструменту создать уникальный путь и имя выходных данных. Это можно сделать, задав выходным данным значение "#" или None, или, если выходные данные – это последний аргумент, пропустив его полностью. В любом случае возвращенное значение является полным путем к новому источнику данных.

import arcpy
arcpy.env.workspace = "c:/city/data.gdb"

result = arcpy.management.CopyFeatures("roads", "#")

Построение рабочего процесса геообработки

ArcPy имеет несколько полезных классов и функций, которые помогут вам расширить функционал скрипта геообработки для последовательного запуска инструментов. Функции можно использовать для получения списка определенных наборов данных, чтобы выполнить пакетную обработку, для описания набора данных, чтобы прочитать программными средствами его свойства, а также для выполнения множества других полезных задач геообработки.

Подробнее о написании скриптов геообработки с использованием функций ArcPy