Переход с arcpy.mapping на ArcGIS Pro

Скрипты Arcpy.mapping, созданные с помощью ArcGIS Desktop, необходимо изменить, прежде чем вы сможете запускать их в ArcGIS Pro. Изменения просты и обычно могут быть выполнены с помощью операций поиска и замены. В разделах ниже описаны многие существенные изменения в API arcpy.mp, а также новые функции.

Python 3

ArcGIS Pro использует Python 3. Возможно, вам придется изменить некоторые элементы стандартного синтаксиса Python. Дополнительную информацию см. в разделе Переход Python с версии 10.x на ArcGIS Pro.

Arcpy.mapping теперь называется arcpy.mp

Изменения, вводимые с ArcGIS Pro, достаточно значимы и достойны изменения размера имени модуля. Новое имя обеспечивает большую гибкость возможностей arcpy.mp. Например, помимо автоматизации карт, arcpy.mp также обеспечивается управление на уровне проекта и возможность создавать объекты, что было невозможно в arcpy.mapping.

Файл проекта ArcGIS Pro (.aprx)

Первым и самым очевидным изменением является то, что arcpy.mp в ArcGIS Pro должен ссылаться на файл проекта (.aprx), а не на документ карты (.mxd). Следовательно, вам необходимо заменить arcpy.mapping.MapDocument(mxd_path) на arcpy.mp.ArcGISProject(aprx_path). Функция ArcGISProject теперь возвращает объект ArcGISProject, который является основной точкой входа для большинства задач автоматизации arcpy.mp. Класс ArcGISProject также содержит метод importDocument, который позволяет вам автоматизировать импорт карты (.mxd), глобуса (.3dd), сцены (.sxd) и других файлов документов в проект.

Множество функций работы со списком были удалены

Множество автономных функций arcpy.mapping List теперь являются методами соответствующих объектов. Это изменение дизайна сделало не нужным постоянную ссылку на документ карты в качестве первого параметра, и новая организация имеет лучший объектно-ориентированный процесс. Следующие примеры демонстрируют, как функции List используются для ссылки на классы надписей слоя. Они очень похожи по функциональности, но требуют внесения изменений в ваши существующие скрипты ArcGIS Desktop.

Этот пример демонстрирует, как использовать ArcGIS Desktop для ссылки на классы надписей слоя.


mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.ListDataFrames(mxd, "Yosemite National Park")[0]
for lyr in arcpy.mapping.ListLayers(mxd, data_frame=df):
    if lyr.supports("SHOWLABELS"):
        lblClasses = lyr.labelClasses

Этот пример демонстрирует, как использовать ArcGIS Pro для ссылки на классы надписей слоя.


p = arcpy.mp.ArcGISProject("CURRENT")
m = p.listMaps("Yosemite National Park")[0]
for lyr in m.listLayers():
    if lyr.supports("SHOWLABELS"):
       lblClasses = lyr.listLabelClasses()

На следующей диаграмме показаны некоторые из наиболее распространенных классов, которые являются частью arcpy.mp, а также расположение и имена функций или свойств, необходимых для ссылки на определенный класс. Диаграмма является лишь примером и не отображает полный набор объектов. Две основные точки входа в объекты - либо через класс ArcGISProject, либо через класс LayerFile .

arcpy.mp OMD overview

Функции экспорта были перенесены

Автономные функции экспорта теперь являются методами объектов Layout, MapFrame, MapSeries и MapView. Изменение дизайна разделяет различные наборы параметров, которые теперь доступны в зависимости от того, какой объект экспортируется. Например, при экспорте вида карты вам необходимо указать ширину и высоту, но при использовании компоновки размер учитывается автоматически.

Функции управления слоями были удалены

Отдельные функции управления слоями теперь являются методами объектов Map и LayerFile. Некоторые из этих методов включают addLayer, addLayerToGroup, insertLayer, moveLayer и removeLayer.

Файлы слоев были изменены

Файлы слоя, созданные в ArcGIS Desktop, имеют расширение .lyr, а файлы слоя, созданные в ArcGIS Pro, имеют расширение .lyrx. Между ними существует заметная разница. Более старые файлы .lyr сохраняют только один слой или один составной слой на корневом уровне, хотя составной слой может содержать множество слоев или составные слои внутри себя. Более новые файлы .lyrx могут содержать множество слоев и составных слоев на корневом уровне. Таким образом, ссылка на файл .lyrx теперь может являться ссылкой на отдельный слой или на список слоев. Более новые файлы .lyrx также могут включать автономные таблицы. Отдельные автономные таблицы также можно экспортировать в файлы .lyrx.

Объекты New Camera, Map, MapFrame и MapView являются заменой на роль фрейма данных

Среда ArcGIS Pro содержит возможности, которые влияют на вашу работу с отображениями карты, поэтому создаются новые объекты. Каждый из этих новых объектов Camera, Map, MapFrame и MapView выполняет определенную роль и интегрирован друг с другом, что дает вам больше контроля над различными сценариями.

Объект Map в ArcGIS Pro представляет коллекцию табличных и географических слоев с условными обозначениями, а также хранит такую информацию, как система координат, вид данных по умолчанию и различные другие метаданные. Единственным способом отобразить содержание карты является визуализация либо в виде карты, подобном вкладке в приложении с собственной таблицей содержания, либо во фрейме карты в компоновке страницы. Одна и та же карта может быть отображена во множестве видов карты или фреймов карты. Если слой добавлен на карту, то все виды карты и фреймы карты, которые ссылаются на карту, будут отображать добавленный слой. Если вы хотите, чтобы другой набор слоев или таблиц был отображен в разных видах, вам нужно создать и использовать различные карты.

Объект MapFrame является элементом Layout, который отображает географическую информацию, добавленную в Map. Он также контролирует размер и положение фрейма карты в компоновке. Один или несколько фреймов карты могут ссылаться на одну и ту же карту. Аналогично, объект MapView - это способ просмотра содержимого карты.

ArcGIS Pro интегрирует 2D и 3D отображение, а объект Camera используется для контроля масштаба и экстента 2D карт и позиции камеры в 3D картах во фрейме карты.

Новый объект компоновки Layout

Проект ArcGIS Pro поддерживает множество компоновок. В результате добавляется новый объект Layout, и на компоновки можно ссылаться, используя метод listLayouts для объекта ArcGISProject. Каждая компоновка может иметь различные размер и ориентацию страницы. Как и в ArcGIS Desktop, вы можете получить доступ к отдельным элементам компоновки, используя метод listElements. Каждый из этих элементов имеет свойство visible, которое позволяет вам отключить элемент, вместо того, чтобы удалять его со страницы.

Приложение всегда обновляется при использовании CURRENT

При использовании ключевого слова CURRENT в окне Python в ArcGIS Desktop, вам иногда приходится вызывать refreshActiveView, чтобы обновить экран принудительно. Это больше не нужно делать в ArcGIS Pro. Все изменения arcpy.mp API напрямую обновляют ArcGIS Pro.

Обновление источников данных изменено

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

Объекты можно создавать

Раньше в ArcGIS Desktop скрипты ограничивались автоматизацией существующих элементов. Начиная с ArcGIS Pro 3.2, можно создавать множество общих объектов. Сюда входят методы createMap и createLayout объекта ArcGISProject, а также многие конструкторы элементов компоновки, такие как createMapFrame, createMapSurroundElement, createGraphicElement, createTextElement и другие. Также возможно создавать объекты Bookmark из класса Map. Для получения дополнительной информации обратитесь к темам классов ArcGISProject, Layout и Map.