Создание рабочих процессов в окне Python

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

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

В следующем примере кода с помощью функции ListFeatureClasses создается список всех классов пространственных объектов в рабочей области, после этого с помощью инструмента GetCount выполняется печать некоторого числа пространственных объектов из каждого класса в этом списке.

>>> arcpy.env.workspace = "c:/data"
>>> for fc in arcpy.ListFeatureClasses():
...     print("{0}, {1}".format(fc, arcpy.GetCount_management(fc)))

Такие классы, как пространственные привязки, полевые карты и поля и индексы позволяют создавать объекты, которые можно использовать с другими инструментами и функциями геообработки.

Например, с помощью Python очень долго и непрактично задавать все подробные свойства пространственных привязок. Напротив, класс SpatialReference позволяет быстро заполнить свойства объекта SpatialReference и использовать его в качестве входных данных для инструмента геообработки. В следующем примере кода объект SpatialReference заполняется свойствами равнопромежуточной конической проекции Северной Америки, после чего объект используется с инструментом Создать класс пространственных объектов (Create Feature Class) для создания нового класса пространственных объектов с указанной пространственной привязкой.

import arcpy
inputWorkspace = "c:/temp"
outputName =  "rivers.shp"
spatialRef = arcpy.SpatialReference("North America Equidistant Conic")
arcpy.CreateFeatureclass_management(inputWorkspace, outputName, "POLYLINE", "", "", "", spatialRef)

Созданий функций

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

def listFieldNames(table, wildcard=None, fieldtype=None):
    fields = arcpy.ListFields(table, wildcard, fieldtype)
    nameList = []
    for field in fields:
        nameList.append(field.name)
    return nameList

В Python функции задаются с помощью ключевого слова def, за которым следует имя функции и список параметров. Указанная выше функция listFieldNames — это небольшая функция, возвращающая список имен полей из таблицы или класса пространственных объектов. Оператор return используется для возврата значения из функции.

>>> fieldNames = listFieldNames("c:/data/water.gdb/water_pipes")

Но когда для своей работы создавать функции приходится постоянно, следует подумать о написании инструмента скрипта. Это естественное развитие от написания коротких фрагментов кода к созданию собственных функций и инструментов скриптов геообработки. Более подробно о создании собственных инструментов скриптов.

9/11/2013