Импорт ArcPy

ArcPy – это пакет сайта Python, который обеспечивает успешный и продуктивный анализ географических данных, конвертацию данных, управление данными и автоматизацию карт в Python. Приложения и скрипты ArcGIS написаны с использованием ArcPy, что позволяет получить доступ к многочисленным модулям Python, разработанным пользователями ГИС и программистами, работающими в различных отраслях. Еще одно преимущество использования ArcPy в среде Python состоит в том, что Python является универсальным языком программирования, который легко освоить. Это интерпретируемый язык с динамической типизацией, что дает возможность быстро моделировать и проверять скрипты в интерактивной среде и вместе с тем обеспечивает возможность написания больших приложений.

# Importing arcpy
import arcpy
# Set the workspace environment and run Clip_analysis
arcpy.env.workspace = 'C:/Data/Tongass'
arcpy.Clip_analysis('standb4', 'clipcov', 'standby_clip', 1.25)

После импорта ArcPy вы можете запускать все инструменты геообработки, входящие в состав стандартных наборов инструментов, установленных вместе с ArcGIS.

Импорт модулей

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

Чтобы импортировать модуль целиком, используйте команду импорта модуля import:

# Import only arcpy.mp
import arcpy.mp

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

# Import arcpy, os and sys
import arcpy
import os
import sys

Во многих случаях использование всего модуля не требуется. Чтобы импортировать часть модуля, можно использовать выражение from-import. В следующем примере показан импорт класса env (класс env содержит все параметры среды геообработки). Теперь для доступа к параметрам среды вместо arcpy.env можно использовать более простую команду –. env

# Import env from arcpy and set the workspace environment
from arcpy import env
env.workspace = 'c:/data'

Иногда бывает необходимо обратить внимание на идентификацию модуля или части модуля, которые вы использовали, чтобы сделать скрипт более простым для чтения, или потому, что имя, предлагаемое по умолчанию, слишком длинное. В каждом из этих случаев можно использовать форму from-import-as. Как и в предыдущем случае, в следующем примере также выполняется импорт класса env, но ему еще присваивается имя ENV:

# Import env from arcpy as ENV and set the workspace environment
from arcpy import env as ENV
ENV.workspace = 'c:/data'

Таким же образом можно импортировать модуль картографии mapping:

# Import the mapping module from arcpy as MAP and create an ArcGISProject
#  object
from arcpy import mp as MAP
aprx = MAP.ArcGISProject('c:/Projects/YosemiteNP/Yosemite.aprx')

Еще один вариант импорта – использование конструкции from-import-*. Содержимое модуля импортируется непосредственно в пространство имен, что позволяет использовать все содержимое напрямую, без указания префикса. Пример:

# Import management from arcpy as * 
from arcpy.management import *

Однако, с этим подходом связаны определенные риски. Другие объекты, переменные, модули и т. д. с такими же именами будут перезаписываться, не говоря уже о том, что при работе с большими модулями, пространство имен может переполняться. Можно рассуждать следующим образом: в следующем примере, модули управления (management) и анализа (analysis) импортируются как *. Оба эти модуля содержат инструмент Вырезать. Если вы попытаетесь использовать инструмент Вырезать, какой именно инструмент Вырезать из двух будет использоваться? Правильный ответ – второй инструмент, но этот подход может привести к неопределенности и трудностям при чтении скрипта.

# Import the management and analysis modules from arcpy as *
from arcpy.management import *
from arcpy.analysis import *
# Which Clip is it?
Clip('standb4', 'clipcov', 'standby_clip', 1.25)

Но в некоторых случаях, выражение from-import-* может упростить код, как в случае с модулем sa ArcGIS Spatial Analyst . Одно из преимуществ модуля sa состоит в том, что вы можете задать несколько классов и функций в одной строке, чтобы получить выходной растровый объект.

Лицензия:

Для обоих следующих примеров требуется дополнительный модуль ArcGIS Spatial Analyst .

# Import arcpy and the sa module as *
import arcpy
from arcpy.sa import *
# Get input parameters
inRaster1 = arcpy.GetParameterAsText(0)
inRaster2 = arcpy.GetParameterAsText(1)
inRaster3 = arcpy.GetParameterAsText(2)
outRaster = (Raster(inRaster1) + (Raster(inRaster2) - Raster(inRaster3)))

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

# Import arcpy and the sa module
import arcpy
from arcpy import sa
# Get input parameters
inRaster1 = arcpy.GetParameterAsText(0)
inRaster2 = arcpy.GetParameterAsText(1)
inRaster3 = arcpy.GetParameterAsText(2)
outRaster = (sa.Raster(inRaster1) + (sa.Raster(inRaster2) - sa.Raster(inRaster3)))

Связанные разделы


В этом разделе
  1. Импорт модулей