Создание нового скрипта Python

Для хранения кода на языке Python создаются файлы Python (.py). Эти файлы являются файлами ASCII, которые содержат стандартные выражения Python.

Шаги:
  1. В Интегрированной среде разработки Python (IDE) по вашему выбору создайте новый скрипт и добавьте следующие строки в верхней части вашего скрипта:
  2. # Import ArcPy site-package and os modules
    import arcpy 
    import os
    

    Это импортирует в скрипт набор модулей (site package) ArcPy и модуль операционной системы os. Модуль os предоставляет легкий доступ к самым используемым инструментам операционной системы. В этом скрипте используются некоторые методы работы с именами файлов из модуля os.

    Для универсального использования данного скрипта в нем имеются следующие четыре аргумента.

    • Входная рабочая область, определяющая набор классов пространственных объектов для обработки
    • Класс пространственных объектов, который будет использоваться инструментом Вырезание (Clip) в качестве области, вырезаемой из входного класса пространственных объектов
    • Выходная рабочая область, в которую будут записаны результаты работы инструмента Вырезание (Clip).
    • Допуск XY, который будет использоваться инструментом Вырезание (Clip)
  3. Добавьте в скрипт следующий код для определения и установки переменных на основе определяемых пользователями значений, передаваемых в скрипт при выполнении:
  4. # Set the input workspace
    arcpy.env.workspace = arcpy.GetParameterAsText(0)
    
    # Set the clip featureclass
    clipFeatures = arcpy.GetParameterAsText(1)
    
    # Set the output workspace
    outWorkspace = arcpy.GetParameterAsText(2)
    
    # Set the XY tolerance
    clusterTolerance = arcpy.GetParameterAsText(3)
    
  5. Добавьте в окно скрипта следующую инструкцию по обработке ошибок и функцию ArcPy ListFeatureClasses():
  6. try:
        # Get a list of the featureclasses in the input folder
        fcs = arcpy.ListFeatureClasses()
    

    Python обеспечивает обязательное использование отступов в коде после определенных выражений, что является частью этого языка. Инструкция try определяет начало блока кода, который будет обрабатываться в связке с обработчиком исключений – инструкцией except. Весь код в пределах этого блока должен быть указан с отступом. В Python используются блоки try/except для обработки непредвиденных ошибок во время выполнения. Обработчики исключений определяют, что следует делать программе при выдаче исключения системой или самим скриптом. Обработка исключений также позволит скрипту незаметно завершать работу и возвращать информативные сообщения вместо того, чтобы привести к системной ошибке.

    Функция ListFeatureClasses() возвращает список с именами классов пространственных объектов в текущей рабочей области. Рабочая область определяет расположение данных и место, в котором будут создаваться все новые данные, если не указан полный путь. В качестве рабочей области уже установлено значение первого аргумента. Для прохождения по каждому классу пространственных объектов, содержащемуся в списке, используется цикл for.

  7. Добавьте следующий код:
  8. for fc in fcs:   
        # Validate the new feature class name for the output workspace.
        featureClassName = arcpy.ValidateTableName(fc, outWorkspace)
        outFeatureClass = os.path.join(outWorkspace, featureClassName)
            
        # Clip each feature class in the list with the clip feature class.
        # Do not clip the clipFeatures, it may be in the same workspace.
        if fc != os.path.basename(clipFeatures):
            arcpy.Clip_analysis(fc, clipFeatures, outFeatureClass, 
                                clusterTolerance)
    

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

    Метод os.path.basename используется для операций с путем к классу пространственных объектов вырезания, позволяя вычислять в выражении только имя класса пространственных объектов, а не весь путь. Инструмент Вырезание (Clip) доступен в виде функции ArcPy с использованием различных строковых переменных в качестве значений параметров.

  9. Добавьте следующие строки, чтобы завершить скрипт:
  10. except Exception as err:
        arcpy.AddError(err)
        print err
    

    Выражение except является обязательным после предыдущего использования выражения try; в противном случае возникнет синтаксическая ошибка. Если в процессе выполнения возникнет ошибка, будет выполнен код из блока except. Любые сообщения об ошибках добавляются с использованием функции AddError() в случае запуска скрипта из инструмента-скрипта. Все сообщения об ошибках также выводятся через стандартный интерфейс вывода в случае, если скрипт запускается вне инструмента.

  11. Добавьте следующий заголовок в начало скрипта:
  12. """-----------------------------------------------------------------------------
      Script Name: Clip Multiple Feature Classes
      Description: Clips one or more shapefiles
                   from a folder and places the clipped
                   feature classes into a geodatabase.
      Created By:  Insert name here.
      Date:        Insert date here.
    -----------------------------------------------------------------------------"""
    
  13. Сохраните скрипт.
  14. ПримечаниеПримечание:

    При наименовании переменных следует помнить, что Python чувствителен к регистру, поэтому имя clipFeatures не равнозначно имени ClipFeatures.

    ПримечаниеПримечание:

    GetParameterAsText() используется для получения аргументов. Если в скрипте используются определенные имена наборов данных и значения параметров, возможно, в нем не понадобится использовать функцию GetParameterAsText().

    ПримечаниеПримечание:

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

Завершенный скрипт:

"""-----------------------------------------------------------------------------
  Script Name: Clip Multiple Feature Classes
  Description: Clips one or more shapefiles
               from a folder and places the clipped
               feature classes into a geodatabase.
  Created By:  Insert name here.
  Date:        Insert date here.
-----------------------------------------------------------------------------"""

# Import ArcPy site-package and os modules
import arcpy 
import os

# Set the input workspace
arcpy.env.workspace = arcpy.GetParameterAsText(0)

# Set the clip featureclass
clipFeatures = arcpy.GetParameterAsText(1)

# Set the output workspace
outWorkspace = arcpy.GetParameterAsText(2)

# Set the XY tolerance
clusterTolerance = arcpy.GetParameterAsText(3)

try:
    # Get a list of the featureclasses in the input folder
    fcs = arcpy.ListFeatureClasses()

    for fc in fcs:   
        # Validate the new feature class name for the output workspace.
        featureClassName = arcpy.ValidateTableName(fc, outWorkspace)
        outFeatureClass = os.path.join(outWorkspace, featureClassName)
        
        # Clip each feature class in the list with the clip feature class.
        # Do not clip the clipFeatures, it may be in the same workspace.
        if fc != os.path.basename(clipFeatures):
            arcpy.Clip_analysis(fc, clipFeatures, outFeatureClass, 
                                clusterTolerance)

except Exception as err:
    arcpy.AddError(err)
    print err

Связанные темы

5/10/2014