Функция – это часть приложения, выполняющая определенную задачу. Функция может включаться в более крупную программу.
В ArcPy все функции геообработки представлены в виде функций, однако не все функции являются инструментами геообработки. Кроме инструментов в ArcPy есть несколько функций для улучшения рабочих процессов геообработки с использованием Python. Функции могут использоваться для создания списков определенных наборов данных, извлечения свойств набора данных, проверки имени таблицы перед ее добавлением в базу геоданных, а также для выполнения многих других полезных задач геообработки. Эти функции доступны только в ArcPy и недоступны, как инструменты в приложениях ArcGIS, поскольку написаны специально для рабочих процессов Python.
Общий синтаксис функции аналогичен синтаксису инструмента: у нее есть аргументы, которые могут потребоваться или не потребоваться, и она что-то возвращает. Возвращаемое значение неинструментальной функции может быть различным — от строк до объектов геообработки. Функции инструментов всегда возвращают объект Result и обеспечивают поддержку сообщений геообработки.
В следующем примере используются две функции ArcPy: GetParameterAsText, чтобы получить входной аргумент, и Exists, чтобы определить, существуют ли входные данные. Функция Exists возвращает булево значение (True или False).
import arcpy
input = arcpy.GetParameterAsText(0)
if arcpy.Exists(input):
print("Data exists")
else:
print("Data does not exist")
В следующем примере создается список классов пространственных объектов с помощью функции ListFeatureClasses, а затем цикл проходит по списку, вырезая каждый класс пространственных объектов классом пространственных объектов границы.
import arcpy
import os
# The workspace environment needs to be set before ListFeatureClasses
# to identify which workspace the list will be based on
arcpy.env.workspace = "c:/data"
out_workspace = "c:/data/results/"
clip_features = "c:/data/testarea/boundary.shp"
# Loop through a list of feature classes in the workspace
for fc in arcpy.ListFeatureClasses():
# Set the output name to be the same as the input name, and
# locate in the 'out_workspace' workspace
output = os.path.join(out_workspace, fc)
# Clip each input feature class in the list
arcpy.analysis.Clip(fc, clip_features, output, 0.1)