ArcGISProject

Краткая информация

Объект ArcGISProject обеспечивает доступ к методам и свойствам проекта ArcGIS Pro. Ссылка на этот объект существенна для большинства автоматизированных рабочих процессов для карты.

Обсуждение

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

Получив ссылку на объект ArcGISProject, вы можете перейти к нескольким объектам, используя функции списка. Например, вы можете получить доступ к картам с помощью метода listMaps. Когда у вас есть ссылка на Map, вы можете ссылаться на объекты Layer или Table, используя функции списка. Из этих объектов вы можете получить дополнительный доступ к другим объектам, таким как LabelClass. Вы также можете детализировать компоновки, используя метод listLayouts. После ссылки на Layout вы можете получить доступ к таким элементам компоновки, как GraphicElement, LegendElement, MapFrame, MapSurroundElement, pictureElement и TextElement. Объект ArcGISProject также полезен для управления такими настройками проекта как defaultGeodatabase и defaultToolbox.

Следующая диаграмма иллюстрирует полезность функций списка для навигации и ссылки на объекты в проекте или файле слоя. Диаграмма является лишь примером и не отображает полный набор объектов. Например, он не отображает listReports для доступа к компонентам объекта Report

arcpy.mp Обзор OMD

Метод importDocument позволяет вам импортировать документы карты (.mxd), глобуса (.3dd) и сцены (.sxd) в проект. Это обеспечивает механизм для автоматизации преобразования этих типов документов в проект ArcGIS Pro. Метод importDocument также позволяет вам импортировать файлы карт (.mapx), файлы компоновок (.pagx) и файлы отчетов (.rptx) в имеющийся проект.

Есть несколько методов и свойств, которые работают только со скриптами, которые запускаются внутри приложения, например со скриптами, выполняемыми на панели Python, или со скриптами, связанными с инструментами-скриптами. Это свойства activeMap, activeView и метод closeViews(). Свойство activeMap возвращает объект map, связанный либо с активным видом карты или с активным фреймом карты в активном виде компоновки. Если эти условия не соблюдены, будет возвращен NoneType. Свойство activeView возвращает объект MapView, если активен виде карты, или объект Layout, если активен вид компоновки. Если не активен ни один из видов, оба свойства вернут значение None. Эти свойства всегда возвращает значение None, если скрипт запущен за пределами приложения, так как виды релевантны только в случае, когда приложение открыто. Объект MapView, возвращаемый свойством activeView, является единственным методом изменения экстента, связанного с видом карты. В классе MapView доступно множество функций, позволяющих вам изменить экстент, таких как свойство camera, panToExtent, ZoomToAllLayers и ZoomToBookmarks. Функция closeViews полезна для закрытия определенных типов видов в приложении. Чтобы сосредоточить внимание на конкретном виде, имеет смысл закрыть все виды и использовать метод openView в классе Layout, Map или Report.

Класс ArcGISProject также поддерживает несколько методов управления содержимым. Это createMap, copyItem и deleteItem. Метод createMap позволяет вам создать карту по умолчанию. Методы copyItem и deleteItem ограничены классами Layout, Map и Report.

Свойства

СвойствоОписаниеТип данных
activeMap
(только чтение)

Возвращает объект карты, связанный с видом, на котором сфокусировано приложение. Если вид компоновки активен, будет возвращена карта, связанная с активным фреймом карты.

Примечание:

Это свойство предназначено для выполнения из приложения с помощью инструмента-скрипта или окна Python. Если скрипт выполняется вне приложения, всегда будет возвращен None.

Map
activeView
(только чтение)

Возвращает Вид карты или Компоновку в зависимости от текущего вида. Если проект ArcGIS Pro не имеет открытых видов или если активный вид является чем-то иным, чем вид карты или вид компоновки (например, диаграмма, таблица, вид Model Builder и т. д.), будет возвращен None.

Примечание:

Это свойство предназначено для выполнения из приложения с помощью инструмента-скрипта или окна Python. Если скрипт выполняется вне приложения, всегда будет возвращен None.

Object
dateSaved
(только чтение)

Возвращает объект Python datetime, который сообщает дату последнего сохранения проекта.

DateTime
defaultGeodatabase
(чтение и запись)

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

String
defaultToolbox
(чтение и запись)

Местоположение набора инструментов проекта по умолчанию. Строка должна включать полный путь и имя файла набора инструментов. Примечание: администратор может сделать это свойство доступным только для чтения, поэтому его нельзя изменить.

String
documentVersion
(только чтение)

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

String
filePath
(только чтение)

Возвращает строковое значение, содержащее полное имя и путь к проекту.

String
folderConnections
(только чтение)

Возвращает список словарей Python, каждый из которых представляет свойства для отдельных подключений к папкам в проекте. Эти свойства только для чтения. Ознакомьтесь с методом updateFolderConnections, чтобы получить дополнительные сведения о словарях и о том, как изменить список свойств подключения.

List
homeFolder
(чтение и запись)

Местоположение домашней папки проекта. Строка должна включать полный путь к требуемому местоположению. Примечание: администратор может сделать это свойство доступным только для чтения, поэтому его нельзя изменить.

String
isReadOnly
(только чтение)

Возвращает True, если проект уже был открыт в другом экземпляре приложения или на него ссылался другой скрипт. Знание текущего состояния позволяет вам определить, можете ли вы save проект или вместо этого вам нужно вызвать saveACopy.

Boolean
metadata
(чтение и запись)

Получение или установка класса информации Метаданные проекта. Примечание: настройка метаданных зависит от значения свойства isReadOnly.

Metadata

Обзор метода

МетодОписание
closeViews ({view_type})

Закройте панели видов, открытых в данный момент в ArcGIS Pro.

copyItem (project_item, {new_name})

Создает копию существующего элемента проекта: layout, map или report.

createMap ({name}, {map_type})

Этот метод создает карту, которая автоматически добавляется на панель Каталог.

deleteItem (project_item)

Удаляет элементы проекта: компоновка, карта или отчет.

importDocument (document_path, {include_layout}, {reuse_existing_maps})

Импортирует документы карты (.mxd), глобуса (.3dd) и сцены (.sxd) в проект ArcGIS Pro. Также может импортировать содержание файлов карт (.mapx), файлов компоновки (.pagx) и файлов отчетов (.rptx).

listBrokenDataSources ()

Возвращает список объектов Python Слой (Layer) и/или Таблица (Table), которые имеют поврежденные подключения к оригинальным исходным данным для всех карт проекта.

listColorRamps ({wildcard})

Метод listColorRamps ссылается на цветовые схемы, доступные в проекте.

listLayouts ({wildcard})

Возвращает список Python объектов Layout (Компоновка) в проекте ArcGIS (.aprx).

listMaps ({wildcard})

Возвращает список Python объектов Map (Карта) в проекте ArcGIS (.aprx).

listReports ({wildcard})

Возвращает список Python объектов Отчет в проекте ArcGIS (.aprx).

save ()

Сохраняет изменения в ArcGISProject (.aprx).

saveACopy (file_name)

Сохраняет ArcGISProject (.aprx) в новом месте или с другим именем.

updateConnectionProperties (current_connection_info, new_connection_info, {auto_update_joins_and_relates}, {validate}, {ignore_case})

Метод updateConnectionProperties заменяет свойства подключения, используя словарь либо путь к рабочей области.

updateFolderConnections (folder_connections, {validate})

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

Методы

closeViews ({view_type})
ПараметрОписаниеТип данных
view_type

A constant that determines the type of views to be closed in the application.

  • LAYOUTSClose all open layout view panes.
  • MAPSClose all open map view panes.
  • MAPS_AND_LAYOUTSClose all open layout and map view panes.
  • REPORTSClose all open report view panes.

(Значение по умолчанию — MAPS_AND_LAYOUTS)

String

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

Примечание:

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

copyItem (project_item, {new_name})
ПараметрОписаниеТип данных
project_item

An object that represents a supported project item to be copied.

Object
new_name

A string that represents the name of the new project item. If a name is not provided, the default name will follow the sequencing nomenclature, for example, Map, Map1, Map2.

String
Возвращаемое значение
Тип данныхОписание
Object

Если указана ссылка на переменную, она будет представлять элемент проекта layout, map или report.

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

createMap ({name}, {map_type})
ПараметрОписаниеТип данных
name

A string that represents the name of the new map. If a name is not provided, the default name will follow the sequencing nomenclature, for example, Map, Map1, Map2.

String
map_type

The type of map to be created and are defined by the keywords below.

  • GLOBEA new global scene
  • MAPA new map
  • SCENEA new local scene

(Значение по умолчанию — Map)

String
Возвращаемое значение
Тип данныхОписание
Map

Если указана ссылка на переменную, она будет представлять один из поддерживаемых объектов map_type.

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

deleteItem (project_item)
ПараметрОписаниеТип данных
project_item

An object that represents a supported project item to be deleted.

Object

Элемент удаляется из проекта не полностью. Удаление элемента может повлиять на другие элементы. Например, если вы удалите карту, которая используется в компоновке, MapFrame, ссылающийся на карту, также потеряет ссылку на карту, и для свойства map будет установлено значение None.

importDocument (document_path, {include_layout}, {reuse_existing_maps})
ПараметрОписаниеТип данных
document_path

A string that includes the system path and name of a document (.mxd, .3dd, or .sxd) or a map file (.mapx), layout file ( .pagx), or report file (.rptx).

String
include_layout

A Boolean parameter indicating whether the layout from a map document (.mxd) is imported. If set to True, the layout and all data frames are imported. If set to False, only the data frames are imported. This parameter is ignored for other file types.

(Значение по умолчанию — True)

Boolean
reuse_existing_maps

A Boolean parameter to prevent the creation of duplicate maps in the project. If reuse_existing_maps is set to True, it checks the project for the maps referenced in the imported file and only copies maps that don't already exist in the project. There may be cases in which maps have the same name in different imported sources, so you may want to set this value to False.

(Значение по умолчанию — False)

Boolean
Возвращаемое значение
Тип данныхОписание
Map

При импорте документа карты (.mxd), если include_layout равно True, возвращается ссылка на компоновку. Если include_layout равно False, возвращается первая карта документа. Импортируется только одна карта документа глобуса (.3dd) или сцены (.sxd). Соответствующая компоновка возвращается с файлом .pagx и отчетом с файлом .rptx.

Данный метод импортирует один документ за один раз. Для импорта нескольких документов, выполните данный метод для каждого документа. Документ карты (.mxd) всегда содержит компоновку. Если при перемещении документов карты вам не нужно импортировать компоновку, задайте include_layout=False.

listBrokenDataSources ()
Возвращаемое значение
Тип данныхОписание
List

Список объектов Python Слой (Layer) и/или Таблица (Table).

Метод listBrokenDataSources всегда возвращает объект списка Python, даже если возвращается только один поврежденный слой или таблица.

listColorRamps ({wildcard})
ПараметрОписаниеТип данных
wildcard

Подстановочный символ основан на имени цветовой схемы, как оно выглядит в приложении. Для наложения ограничений на результирующий список можно использовать сочетание звездочек (*) и символов.

(Значение по умолчанию — None)

String
Возвращаемое значение
Тип данныхОписание
List

Возвращает список объектов ColorRamp.

В проекте могут находиться несколько цветовых схем с одинаковым именем. Важно разрабатывать проект, используя такие имена цветовых схем, которые легко найти по уникальному имени. Для возвращения определенной цветовой схемы можно использовать значение индекса. Например, следующая строка позволит вернуть первый объект цветовой схемы в списке: cr = aprx.listColorRamps("Black*")[0].

listLayouts ({wildcard})
ПараметрОписаниеТип данных
wildcard

Групповой символ базируется на имени компоновки и не является чувствительным к регистру. Для наложения ограничений на результирующий список можно использовать сочетание звездочек (*) и символов.

(Значение по умолчанию — None)

String
Возвращаемое значение
Тип данныхОписание
List

Список Python объектов Layout (Компоновка) в проекте ArcGIS.

Возвращает список Python объектов Layout (Компоновка) в проекте ArcGIS (.aprx).

listMaps ({wildcard})
ПараметрОписаниеТип данных
wildcard

Групповой символ базируется на имени карты и не является чувствительным к регистру. Для наложения ограничений на результирующий список можно использовать сочетание звездочек (*) и символов.

(Значение по умолчанию — None)

String
Возвращаемое значение
Тип данныхОписание
List

Список Python объектов Map (Карта) в проекте ArcGIS.

Возвращает список Python объектов Map (Карта) в проекте ArcGIS (.aprx).

listReports ({wildcard})
ПараметрОписаниеТип данных
wildcard

Групповой символ базируется на имени отчета и не является чувствительным к регистру. Для наложения ограничений на результирующий список можно использовать сочетание звездочек (*) и символов.

(Значение по умолчанию — None)

String
Возвращаемое значение
Тип данныхОписание
List

Список Python объектов Отчет в проекте ArcGIS.

Возвращает список Python объектов Отчет в проекте ArcGIS (.aprx).

save ()

Сохраняет изменения в ArcGISProject (.aprx). Проект сохраняется и переменная проекта продолжает ссылаться на исходный объект ArcGISProject.

saveACopy (file_name)
ПараметрОписаниеТип данных
file_name

Строка используется для сохранения ArcGISProject (.aprx) в новом месте или с новым именем.

String

Данный метод создает новый выходной файл проекта, но переменная проекта продолжает ссылаться на исходный объект ArcGISProject. При этом все содержание в папке проекта не дублируется.

updateConnectionProperties (current_connection_info, new_connection_info, {auto_update_joins_and_relates}, {validate}, {ignore_case})
ПараметрОписаниеТип данных
current_connection_info

A string that represents the workspace path or a Python dictionary that contains connection properties to the source you want to update. If an empty string or None is used in current_connection_info, all connection properties will be replaced with the new_workspace_info, depending on the value of the validate parameter.

String
new_connection_info

A string that represents the workspace path or a Python dictionary that contains connection properties with the new source information.

String
auto_update_joins_and_relates

If set to True, the updateConnectionProperties method will also update the connections for associated joins or relates.

(Значение по умолчанию — True)

Boolean
validate

If set to True, the connection properties will only be updated if the new_connection_info value is a valid connection. If it is not valid, the connection will not be replaced. If set to False, the method will set all connections to match the new_connection_info value, regardless of a valid match. In this case, if a match does not exist, the data sources would be broken.

(Значение по умолчанию — True)

Boolean
ignore_case

Determines whether searches will be case sensitive. By default, queries are case sensitive. To perform queries that are not case sensitive, set ignore_case to True.

(Значение по умолчанию — False)

Boolean

Более подробное описание, сведения о параметрах, сценарии и примеры кода см. Обновление и исправление источников данных.

updateFolderConnections (folder_connections, {validate})
ПараметрОписаниеТип данных
folder_connections
[folder_connections,...]

A list of Python dictionaries that each contain connection properties to an individual folder. The dictionary keys are defined below.

  • connectionStringA local or UNC path to a system folder.
  • aliasAn alternative label for a folder connection. If left as an empty string, the alias will match the connectionString value.
  • isHomeFolderThe default home folder. One and only one folder must be set to True. Note: It is possible for administrators to set the home folder to be read-only. If that is that case, this setting will be ignored.
List
validate

If set to True, the folder will only be added if the connectionString is a valid path. If it is not valid, the folder will not be added and the function will return the dictionary as an invalid folder. If set to False, the method will set all connections to match the connectionString, regardless of a valid match. In this case, if a match does not exist, the folder will be added but will appear as broken.

(Значение по умолчанию — True)

Boolean
Возвращаемое значение
Тип данныхОписание
List

Список папок, которые не имеют допустимых подключений.

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

Пример кода

ArcGISProject, пример 1

Следующий скрипт показывает как импортировать документы в существующий проект ArcGIS Pro. Он также устанавливает некоторые параметры проекта по умолчанию и сохраняет результат в новый файл.

import arcpy
aprx = arcpy.mp.ArcGISProject(r"C:\Projects\blank.aprx")
aprx.importDocument(r"C:\Projects\YosemiteNP\Documents\Yosemite.mxd")
aprx.importDocument(r"C:\Projects\YosemiteNP\Documents\Yosemite_ScenicViews.3dd")
aprx.defaultGeodatabase = r"C:\Projects\YosemiteNP\Data_Vector\YosemiteData.gdb"
aprx.defaultToolbox = r"C:\Projects\YosemiteNP\Analysis\AnalysisTools.tbx"
aprx.saveACopy(r"C:\Projects\YosemiteNP\Yosemite.aprx")
ArcGISProject, пример 2

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

aprx = arcpy.mp.ArcGISProject("CURRENT")
for m in aprx.listMaps():
    print("Map: " + m.name)
    for lyr in m.listLayers():
        print("  " + lyr.name)
print("Layouts:")
for lyt in aprx.listLayouts():
    print(f"  {lyt.name} ({lyt.pageHeight} x {lyt.pageWidth} {lyt.pageUnits})")
ArcGISProject, пример 3

Следующий скрипт использует ключевое слово current, поэтому он должен быть запущен из окна Python. Скрипт копирует существующую карту, добавляет к ней новый слой, задает свойство камеры карты по умолчанию, которое управляет экстентом вновь открываемых видов, экспортирует вид карты в PDF и удаляет вновь созданную карту из проекта.

aprx = arcpy.mp.ArcGISProject("CURRENT")

#Create a copy of an existing map
existingMap = aprx.listMaps("Yosemite National Park")[0]
rangerMap = aprx.copyItem(existingMap, new_name="Ranger Stations")

#Add ranger stations layer file
lyrx = arcpy.mp.LayerFile(r"C:\Projects\YosemiteNP\LayerFiles\Ranger Stations.lyrx")
rangerMap.addLayer(lyrx)

#Close any current layout or map views
aprx.closeViews("MAPS_AND_LAYOUTS")

#Set the default map camera to the extent of the park boundary before opening the new view
#default camera only affects newly opened views
lyr = rangerMap.listLayers("*Park Boundary")[1]
rangerMap.defaultCamera.setExtent(arcpy.Describe(lyr).extent)
rangerMap.openView()

#export the newly opened active view to PDF, then delete the new map
mv = aprx.activeView
mv.exportToPDF(r"C:\Temp\RangerStations.pdf", width=700, height=500, resolution=96)
aprx.deleteItem(rangerMap)