ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Справка
  • Sign Out
ArcGIS Desktop

ArcGIS Online

Картографическая платформа вашей организации

ArcGIS Desktop

Полноценная профессиональная ГИС

ArcGIS Enterprise

ГИС предприятия

ArcGIS Developers

Инструменты для встраивания приложений с местоположениями

ArcGIS Solutions

Бесплатные шаблоны карт и приложений для отрасли

ArcGIS Marketplace

Получение приложения и данных для вашей организации.

  • Документация
  • Поддержка
Esri
  • Войти
user
  • Мой профиль
  • Выход

ArcMap

  • На главную
  • Начало работы
  • Карта
  • Анализ
  • Управление данными
  • Инструменты
  • Дополнительные модули

Python. Краткий обзор

  • Запуск инструмента
  • Использование параметров среды
  • Использование функций
  • Использование классов
  • Работа с модулями

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

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

Если говорить упрощенно, ArcPy организован через инструменты, среды, функции, классы и модули.

Запуск инструмента

В следующем примере показано, как запустить инструмент Буфер (Buffer). Во время работы инструмента по умолчанию в правой части окна Python в разделе справки появляются сообщения.

>>> arcpy.Buffer_analysis("c:/data/Portland.gdb/streets", "c:/data/Portland.gdb/steets_buffer", "500 METERS")

Вот еще один пример запуска инструмента. В этом примере используются инструменты из наборов Управление данными (Data Management) и Конвертация (Conversion). К входному классу объектов, содержащему список улиц, добавляется поле, затем оно вычисляется, а класс объектов загружается в многопользовательскую базу геоданных.

>>> import arcpy 
>>> arcpy.AddField_management("c:/data/Portland.gdb/streets", "LENGTH_MILES", "TEXT")
>>> arcpy.CalculateField_management("c:/data/Portland.gdb/streets", "LENGTH_MILES", "!shape.length@miles!", "PYTHON_9.3")
>>> arcpy.FeatureClassToFeatureClass_conversion("c:/data/Portland.gdb/streets", "Database Connections/MySDE.sde/PortlandDataset", "streets")
Дополнительные сведения об использовании инструментов в Python

Получение результатов работы инструмента

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

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

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

>>> result = arcpy.Buffer_analysis("rivers", "riverBuf", "50 METERS")
>>> print result
C:\Portland\Portland_OR.gdb\riverBuf
>>> arcpy.Clip_analysis("streets", result, "streets_50m_of_rivers")

Возвращается количество пространственных объектов.

>>> result = arcpy.GetCount_management("streets_50m_of_rivers")
>>> print result.getOutput(0)
54

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

>>> result = arcpy.CalculateDefaultGridIndex_management("streets_50m_of_rivers")
>>> for i in range(0, result.outputCount):
...     print result.getOutput(i)
...
560
200
0

Использование параметров среды

Параметры среды геообработки можно рассматривать как дополнительные параметры, которые влияют на результат работы инструмента. Они отличаются от обычных параметров инструментов тем, что они задаются отдельно от инструмента и используются инструментом во время его работы. Такие параметры среды как область интереса, система координат выходного набора данных и размер ячейки нового набора растровых данных, можно задать заранее, затем они будут использованы во время работы инструмента.

Параметры среды доступны в виде свойств класса env. Эти свойства можно использовать для получения текущих значений параметров среды и для их задания. Ниже приведены примеры того, как использовать значения среды.

Задаются параметры среды рабочей области.

>>> arcpy.env.workspace = "c:/data/Portland.gdb"
>>> arcpy.Buffer_analysis("streets", "streetBuf", "500 METERS")

Задается индекс пространственной решетки для значения, возвращаемого инструментом.

>>> arcpy.env.spatialGrid1 = arcpy.CalculateDefaultSpatialGridIndex_management("streets").getOutput(0)

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

if arcpy.env.cellSize != 30:
    arcpy.env.cellSize = 30
Дополнительные сведения об использовании параметров среды в Python

Использование функций

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

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

import arcpy

# prints True
print arcpy.Exists("c:/data/Portland.gdb/streets") 

# prints NAD_1983_StatePlane_Oregon_North_FIPS_3601_Feet
sr = arcpy.Describe("c:/data/Portland.gdb/streets").spatialReference
print sr.name 

# prints Available
print arcpy.CheckExtension("spatial") 

arcpy.CheckOutExtension("spatial")
Дополнительные сведения об использовании функций в Python

Использование классов

Такие классы ArcPy как SpatialReference и Extent часто используются как ярлыки для задания параметров для инструментов геообработки, которые иначе пришлось бы задавать в виде сложных строк. Класс подобен архитектурному чертежу. Чертеж обеспечивает структуру для создания чего-либо. Классы могут быть использованы для создания объектов, которые часто называются экземплярами.

import arcpy

spatial_ref = arcpy.SpatialReference("Hawaii Albers Equal Area Conic")
Дополнительные сведения об использовании классов в Python

Работа с модулями

ArcPy содержит модули, использующиеся в различных областях ArcGIS. ArcPy поддерживается различными модулями, включая модуль доступа к данным (arcpy.da), модуль картографии (arcpy.mapping), дополнительный модуль ArcGIS Spatial Analyst extension (arcpy.sa) и дополнительный модуль ArcGIS Network Analyst extension (arcpy.na).

Например, инструменты модуля arcpy.sa используют инструменты набора Spatial Analyst, но настроены на поддержку алгебры карт. Поэтому использование модуля arcpy.sa.Slope аналогично использованию инструмента Уклон (Slope) из набора инструментов Spatial Analyst.

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

  • Что такое язык Python?
  • Словарь основных терминов Python

ArcGIS Desktop

  • На главную
  • Документация
  • Поддержка

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

Об Esri

  • О нас
  • Карьера
  • Блог Esri
  • Конференция пользователей
  • Саммит разработчиков
Esri
Расскажите нам, что вы думаете.
Copyright © 2021 Esri. | Конфиденциальность | Правовая информация