Краткая информация
Объект ArcGISProject обеспечивает доступ к методам и свойствам проекта ArcGIS Pro. Ссылка на этот объект существенна для большинства автоматизированных рабочих процессов для карты.
Обсуждение
Объект ArcGISProject обычно является одним из первых объектов, на которые дается ссылка в скрипте автоматизации карты, потому что он является основной точкой входа для доступа к большинству других объектов в ArcGIS Pro. Ссылки на проект даются с помощью функции ArcGISProject. Ее свойства позволяют получать или задавать параметры проекта, такие как defaultGeodatabase, defaultToolbox, documentVersion, filePath и др. Ее методы позволяют управлять такими элементами проекта, как updateFolderConnections, updateDatabases, createMap и createLayout, а также копировать или удалять некоторые элементы проекта, используя методы copyItem или deleteItem, соответственно.
Метод updateConnectionProperties удобен для замены источников данных в проекте. Источники данных могут быть заменены в объектах ArcGISProject, Map, Layer или Table. Более подробную информацию и примеры кода см. в разделе справки Обновление и исправление источников данных.
Метод importDocument позволяет вам импортировать документы карты (.mxd), глобуса (.3dd) и сцены (.sxd) в проект. Это обеспечивает механизм для автоматизации преобразования этих типов документов в проект ArcGIS Pro. Метод importDocument также позволяет импортировать файлы карт (.mapx), файлы компоновок (.pagx) и файлы отчетов (.rptx) в имеющийся проект.
Получив ссылку на объект ArcGISProject, вы можете перейти к другим объектам, используя различные функции списка. Например, вы можете получить доступ к объекту Map с помощью метода listMaps или к объекту Layout и к объекту Report с помощью методов listLayouts и listReports, соответственно.
На следующей диаграмме, в левой части, показано использование функций списков для навигации и ссылок на объекты в проекте. Диаграмма является лишь примером и не отображает полный набор объектов и методов списков.
На диаграмме выше, в правой части, показано использование многих функций создания объектов. Например, вы можете использовать createMap для создания объекта Map, createLayout для создания Layout или createReport для создания объекта Report.
Примечание:
Методы createGraphicElement, createGroupElement, createPictureElement и createTextElement также доступны в объекте ArcGISProject, поскольку они позволяют создавать элементы либо в объекте Layout, либо графический слой в объекте Map.
Подсказка:
При создании элементов в графическом слое на карте, графические слои ограничены заданным количеством объектов и общим размером. Дополнительные сведения см. в разделе Работа с графическими слоями.
Есть несколько методов и свойств, работающих только со скриптами, которые запускаются внутри приложения, например со скриптами, выполняемыми в окне 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 есть свойство isReadOnly, которое можно использовать для определения состояния чтения проекта перед вызовом метода, такого как saveACopy вместо save.
Свойства
Свойство | Описание | Тип данных |
activeMap (только чтение) | Возвращает объект карты, связанный с видом, на котором сфокусировано приложение. Если вид компоновки активен, будет возвращена карта, связанная с активным фреймом карты. Примечание:Это свойство предназначено для выполнения из приложения с помощью инструмента-скрипта, окна Python или блокнота. Если скрипт выполняется вне приложения, всегда будет возвращен None. | Map |
activeView (только чтение) | Возвращает Вид карты или Компоновку в зависимости от текущего вида. Если проект ArcGIS Pro не имеет открытых видов или если активный вид является чем-то иным, чем вид карты или вид компоновки (например, диаграмма, таблица, вид Model Builder и т. д.), будет возвращен None. Примечание:Это свойство предназначено для выполнения из приложения с помощью инструмента-скрипта, окна Python или блокнота. Если скрипт выполняется вне приложения, всегда будет возвращен None. | Object |
databases (только чтение) | Возвращает список словарей Python, каждый из которых представляет свойства для отдельных баз данных в проекте. Для изменения баз данных изучите метод updateDatabases. | List |
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 |
styles (только чтение) | Возвращает список стилей, присутствующих в проекте. Значения в списке представляют собой строки, которые являются либо ключевым словом системного стиля, таким как ArcGIS 2D, либо полным путем к пользовательскому файлу .stylx. Чтобы изменить список стилей, см. метод updateStyles. Примечание:Стиль Избранное не возвращается из свойства styles. Стиль Избранное всегда доступен в проекте, поскольку он привязан к учетной записи пользователя. Он не связан с проектом и не может управляться с помощью arcpy.mp API. | List |
toolboxes (только чтение) | Возвращает список словарей Python, каждый из которых представляет свойства для отдельных наборов инструментов в проекте. Для изменения наборов инструментов см. метод updateToolboxes. | List |
Обзор метода
Метод | Описание |
closeViews ({view_type}) | Закройте панели видов, открытых в данный момент в ArcGIS Pro. |
copyItem (project_item, {new_name}) |
Создает копию существующего элемента проекта layout, map или report. |
createGraphicElement (container, geometry, {style_item}, {name}, {lock_aspect_ratio}) | Метод createGraphicElement, который создает GraphicElement в определенном container. |
createGroupElement (container, element_list, {name}) | Метод createGroupElement создает GroupElement в указанном container. |
createLayout (page_width, page_height, page_units, {name}) | Метод createLayout создает Layout, которая автоматически добавляется на панель Каталог. |
createMap ({name}, {map_type}) | Этот метод создает карту, которая автоматически добавляется на панель Каталог. |
createPictureElement (container, geometry, path, {name}, {lock_aspect_ratio}) | Метод createPictureElement, который создает PictureElement в определенном container. |
createPredefinedGraphicElement (container, geometry, shape_type, {style_item}, {name}, {lock_aspect_ratio}) | Метод createPredefinedGraphicElement, который создает GraphicElement в определенном container. |
createReport (page_info, data_source, {fields}, {statistics}, {name}, {template}, {styling}) | Метод createReport создает отчет, который автоматически добавляется на панель Каталог. |
createTextElement (container, geometry, text_type, text, {text_size}, {font_family_name}, {font_style_name}, {style_item}, {name}, {lock_aspect_ratio}) | Метод createTextElement, который создает объект TextElement в определенном container. |
deleteItem (project_item) |
Удаляет элементы проекта: компоновка, карта или отчет. |
importDocument (document_path, {include_layout}, {reuse_existing_maps}, {log_files}) | Импортирует документы карты (.mxd), глобуса (.3dd) и сцены (.sxd) в проект ArcGIS Pro. Также может импортировать содержание файлов карт (.mapx), файлов компоновки (.pagx) и файлов отчетов (.rptx). |
listBasemaps ({wildcard}) | Метод listBasemaps ссылается на базовые карты, доступные в проекте. |
listBrokenDataSources () | Возвращает список объектов Python Слой (Layer) и/или Таблица (Table), которые имеют поврежденные подключения к оригинальным исходным данным для всех карт проекта. |
listColorRamps ({wildcard}) | Метод listColorRamps ссылается на цветовые схемы, доступные в проекте. |
listLayouts ({wildcard}) | Возвращает список Python объектов Layout (Компоновка) в проекте ArcGIS (.aprx). |
listMaps ({wildcard}) | Возвращает список Python объектов Map (Карта) в проекте ArcGIS (.aprx). |
listReports ({wildcard}) | Возвращает список Python объектов Отчет в проекте ArcGIS (.aprx). |
listStyleItems (style, style_class, {wildcard}) | Метод listStyleItems ссылается на системные, персональные и пользовательские стили, доступные в проекте. |
save () |
Сохраняет изменения в ArcGISProject (.aprx). |
saveACopy (file_name) |
Сохраняет ArcGISProject (.aprx) в новом месте или с другим именем. |
updateConnectionProperties (current_connection_info, new_connection_info, {auto_update_joins_and_relates}, {validate}, {ignore_case}) | Метод updateConnectionProperties заменяет свойства подключения, используя словарь либо путь к рабочей области. |
updateDatabases (databases, {validate}) | Метод updateDatabases заменяет базы данных проекта, используя список словарей, описывающих каждую базу данных. |
updateFolderConnections (folder_connections, {validate}) | Метод updateFolderConnections заменяет подключения к папкам проекта, используя список словарей, описывающих каждое подключение. |
updateStyles (styles) | Метод updateStyles обновляет стили проектов, используя список строк. |
updateToolboxes (toolboxes, {validate}) | Метод updateToolboxes заменяет наборы инструментов проекта, используя список словарей. |
Методы
closeViews ({view_type})
Параметр | Описание | Тип данных |
view_type | A constant that determines the type of views to be closed in the application.
(Значение по умолчанию — MAPS_AND_LAYOUTS) | String |
Иногда бывает полезно очистить множество открытых видов в приложении, прежде чем открывать определенный вид, чтобы сфокусировать внимание на результирующем виде. Этот метод закрывает только панели видов, связанные с компоновкой, картой или отчетом. Этот метод также закроет виды таблиц, связанные с "MAP".
Примечание:
Этот метод предназначен для выполнения из приложения с помощью инструмента-скрипта, блокнота или окна Python. Он не будет действовать, если выполнить его вне приложения.
copyItem (project_item, {new_name})
Параметр | Описание | Тип данных |
project_item | An object reference that represents a supported project item to be copied. | Object |
new_name | An optional 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. |
createGraphicElement (container, geometry, {style_item}, {name}, {lock_aspect_ratio})
Параметр | Описание | Тип данных |
container | A reference to a Layout object, a graphics layer in a Map object, or a GroupElement object in a layout or a graphics layer. | Object |
geometry | The appropriate Point, Polyline, or Polygon object that will be used to construct the graphic element. Page units should be used for layouts and map units should be used for elements in a graphics layer. | Object |
style_item | An optional reference to a StyleItem. The style's intended geometry must match the geometry input parameter. If a style_item value is not specified, a default style item will be applied. | String |
name | An optional string that represents the name of the new GraphicElement. If a name is not provided, the default name value will follow the automatic sequencing nomenclature, for example, Point, Point 1, Point 2, and so on. | String |
lock_aspect_ratio | An optional Boolean that controls how the element can be resized. For example, if the value is True, setting the elementHeight value will also set the elementWidth value proportionally. (Значение по умолчанию — True) | Boolean |
Тип данных | Описание |
GraphicElement | Если указана переменная, она будет ссылаться на вновь возращенный объект GraphicElement. |
Этот метод находится в объекте ArcGISProject, поскольку свойство container позволяет создавать графические элементы либо в объекте Layout, графический слой в объекте Map или объект GroupElement в компоновке или графическом слое.
Если элемент создается с помощью точечной геометрии, местоположение точки будет содержать позицию anchor, а размер будет задан по умолчанию. Позже вы можете изменить размер элемента, используя свойства elementWidth и elementHeight. Метод createPredefinedGraphicElement схож, но позволяет вам создавать стандартные, предопределенные формы.
Обратитесь к разделу справки по классу GraphicElement для получения дополнительной информации и примеров кода.
createGroupElement (container, element_list, {name})
Параметр | Описание | Тип данных |
container | A reference to a Layout object, a graphics layer in a Map object, or a GroupElement object in a layout or a graphics layer. | Object |
element_list [element_list,...] | A list of elements that will be placed in the newly created group. Примечание:You can not create an empty group element, there must be existing elements to place in the group. | List |
name | An optional string that represents the name of the new GroupElement. If a name is not provided, the default name value will follow the automatic sequencing nomenclature, for example, Group Element, Group Element 1, Group Element 2, and so on. | String |
Тип данных | Описание |
GroupElement | Если указана переменная, она будет ссылаться на вновь возращенный объект GroupElement. |
Этот метод находится в объекте ArcGISProject, поскольку свойство container позволяет создавать графические элементы либо в объекте Layout, графический слой в объекте Map или объект GroupElement в компоновке или графическом слое.
Вы не можете создать пустой элемент группы. Вместо этого вам нужны существующие элементы для встраивания в элемент группы. Если контейнер представляет собой компоновку или графический слой, группа будет создана на корневом уровне. Если контейнер ссылается на существующий элемент группы, будет создан элемент подгруппы. Первый элемент в списке будет первым элементом в группе, следующий элемент в списке появится под первым элементом на панели содержания и так далее.
Обратитесь к разделу справки по классу GroupElement для получения дополнительной информации и примеров кода.
createLayout (page_width, page_height, page_units, {name})
Параметр | Описание | Тип данных |
page_width | A double that specifies the width of a layout and is based on the page_units. | Double |
page_height | A double that specifies the height of a layout and is based on the page_units. | Double |
page_units | One of the following page units must be provided to describe the page_width and page_height values.
| String |
name | A string that represents the name of the new layout. If a name is not provided, the default name will follow the sequencing nomenclature, for example, Layout, Layout1, Layout2. | String |
Тип данных | Описание |
Layout | Если дополнительно указана ссылка на переменную, она будет представлять собой ссылку на новый объект Layout. |
Этот метод возвращает ссылку на новый объект Layout. Если вы хотите просмотреть компоновку и активировать ее в виде, вызовите метод openView в Layout. Следующими шагами будет заполнение его новыми элементами компоновки с использованием различных методов построения классов Layout или ArcGISProject.
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.
(Значение по умолчанию — Map) | String |
Тип данных | Описание |
Map | Если указана ссылка на переменную, она будет представлять один из поддерживаемых объектов map_type. |
Этот метод возвращает ссылку на новый класс map. Если скрипт запущен в приложении, будет применена базовая карта, указанная в настройках проекта. Если скрипт запускается автономно, топографическая базовая карта будет добавлена автоматически.
createPictureElement (container, geometry, path, {name}, {lock_aspect_ratio})
Параметр | Описание | Тип данных |
container | A reference to a Layout object, a graphics layer object in a Map, or a GroupElement object in a layout or a graphics layer. | Object |
geometry | The appropriate Point, or Polygon object that will be used to construct the picture element. Page units should be used for layouts and map units should be used for elements in a graphics layer. | Object |
path | A string that represents the full path and file name of the location of the picture. | String |
name | An optional string that represents the name of the new PictureElement. If a name is not provided, the default name value will follow the automatic sequencing nomenclature, for example, Picture, Picture 1, Picture 2, and so on. | String |
lock_aspect_ratio | A Boolean that controls how the picture is inserted into the envelope. If set to False, the image will be stretched to fill the entire area of the envelope. (Значение по умолчанию — True) | Boolean |
Тип данных | Описание |
PictureElement | Если указана переменная, она будет ссылаться на вновь возращенный объект PictureElement. |
Этот метод находится в объекте ArcGISProject, поскольку свойство container позволяет создавать графические элементы либо в объекте Layout, графический слой в объекте Map или объект GroupElement в компоновке или графическом слое.
Если элемент создается с помощью точечной геометрии, местоположение точки будет содержать положение anchor и элемент будет добавлен в полном размере на основе его числа пикселов. Позже вы можете изменить размер элемента, используя свойства elementWidth и elementHeight. Если создается рисунок с помощью не прямоугольного полигона, вместо него будет использоваться минимальный конверт, охватывающий все координаты.
Обратитесь к разделу справки по классу PictureElement для получения дополнительной информации и примеров кода.
createPredefinedGraphicElement (container, geometry, shape_type, {style_item}, {name}, {lock_aspect_ratio})
Параметр | Описание | Тип данных |
container | A reference to a Layout object, a graphics layer in a Map object, or a GroupElement object in a layout or a graphics layer. | Object |
geometry | The appropriate Point or Polygon object that will be used to construct the predefined GraphicElement object. Page units should be used for layouts and map units should be used for elements in a graphics layer. | Object |
shape_type | A string constant that represents the predefined shape that will be created. The following is a list of valid values:
| String |
style_item | An optional reference to a StyleItem. The style's intended geometry must match the geometry input parameter. If a style_item value is not specified, a default style item will be applied. | String |
name | An optional string that represents the name of the new GraphicElement. If a name is not provided, the default name value will follow the automatic sequencing nomenclature, for example, Circle, Circle 1, Circle 2, and so on. | String |
lock_aspect_ratio | An optional Boolean that controls how the element can be resized. For example, if the value is True, setting the elementHeight value will also set the elementWidth value proportionally. (Значение по умолчанию — True) | Boolean |
Тип данных | Описание |
GraphicElement | Если указана переменная, она будет ссылаться на вновь возращенный объект GraphicElement. |
Этот метод находится в объекте ArcGISProject, поскольку свойство container позволяет создавать графические элементы либо в объекте Layout, графический слой в объекте Map или объект GroupElement в компоновке или графическом слое.
Если элемент создается с помощью точечной геометрии, местоположение точки будет содержать позицию anchor, а размер будет задан по умолчанию. Позже вы можете изменить размер элемента, используя свойства elementWidth и elementHeight. Метод createGraphicElement схож, но позволяет вам создавать пользовательские формы.
Обратитесь к разделу справки по классу GraphicElement для получения дополнительной информации и примеров кода.
createReport (page_info, data_source, {fields}, {statistics}, {name}, {template}, {styling})
Параметр | Описание | Тип данных |
page_info | A dictionary that specifies the page width, height, units, and margins for the new report. The page width and height are based on the units key value.
The page margins restrict editable space for the report. An 8.5 inch by 11 inch report, for example, with NORMAL margins will display as 6.5 inches by 9 inches in a new Report view. The margin key values are defined as follows:
| Dictionary |
data_source | A Layer object, a Table object, or a string that represents the path to an external data source. | Object |
fields [fields,...] | A list of field dictionaries that include the following keys:
The sortInfo values are defined as follows:
| Dictionary |
statistics [statistics,...] | A list of statistic dictionaries that include field name and statistic type. If a value is specified, the fields parameter is required. The keys for the dictionary are defined as follows:
The acceptable statistic values are defined as follows:
| Dictionary |
name | A string that represents the name of the new report. If no name is provided, the default name value will follow the sequencing nomenclature, for example, Report, Report1, Report2. | String |
template | A string that represents a default template for the new report. The acceptable values are defined as follows:
(Значение по умолчанию — ATTR_LIST) | String |
styling | A string that represents a default styling for the new report. The acceptable values are defined as follows:
(Значение по умолчанию — BLACK_AND_WHITE) | String |
Тип данных | Описание |
Report | Если указана ссылка на переменную, она будет представлять собой ссылку на новый объект Report. |
Этот метод возвращает ссылку на новый объект Report. Для доступа к отчету и его активации в виде вызовите метод openView для объекта Report.
createTextElement (container, geometry, text_type, text, {text_size}, {font_family_name}, {font_style_name}, {style_item}, {name}, {lock_aspect_ratio})
Параметр | Описание | Тип данных |
container | A Layout object, a graphics layer in a Map object, or a GroupElement object in a layout or a graphics layer. | Object |
geometry | The appropriate Point, Polyline, or Polygon object that will be used to construct the text element. Use page units for layouts and map units for elements in a graphics layer. | Object |
text_type | Specifies the type of text that will be created. The following is a list of valid values:
| String |
text | The text string associated with the element. | String |
text_size | The size of the text in points. | Double |
font_family_name | The text symbol font associated with the element. Примечание:The value that appears in the Font name drop-down list on the ribbon does not always match the font_style_name property. Variable fonts contain named instances of font styles and also allow customization. Before setting a value, you can set it on the ribbon and verify the property value returned. | String |
font_style_name | The font style name. Depending on the font, the style may include regular, bold, italic, any combination of these, or an extended list. Примечание:The value that appears in the Font style drop-down list on the ribbon does not always match the font_style_name property. Variable fonts contain named instances of font styles and also allow customization. Before setting a value, you can set it on the ribbon and verify the property value returned. | String |
style_item | A StyleItem object. The style's intended geometry must match the geometry input parameter. If a style_item value is not provided, a default style item will be applied. | String |
name | The new TextElement name. If no name is provided, the default name value will follow the automatic sequencing nomenclature, for example, Point, Point 1, Point 2, and so on. | String |
lock_aspect_ratio | Specifies whether the element can be resized. For example, if the value is True, setting the elementHeight value will also set the elementWidth value proportionally. This setting does not apply to point text. (Значение по умолчанию — True) | Boolean |
Тип данных | Описание |
TextElement | Если указана переменная, она будет ссылаться на вновь возращенный объект TextElement. |
Этот метод находится в объекте ArcGISProject, поскольку свойство container позволяет создавать групповые элементы в объекте Layout, графический слой в объекте Map или объект GroupElement в компоновке или в графическом слое.
Если текстовой элемент использует точечную геометрию, местоположение точки будет содержать позицию anchor, а размер будет задан по умолчанию. Вы можете изменить размер элемента, используя свойства elementWidth и elementHeight.
См. раздел справки TextElement с дополнительной информацией и примерами кода.
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}, {log_files})
Параметр | Описание | Тип данных |
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 |
log_files | A Boolean parameter that controls if log files are written to the ImportLog folder in the project's homeFolder. Log files can be useful for identifying possible warnings and errors during import but they can also accumulate if not properly managed. (Значение по умолчанию — True) | Boolean |
Тип данных | Описание |
Object | Тип возвращаемого объекта зависит от импортируемого файла. При импорте документа карты (.mxd), если include_layout равно True, возвращается ссылка на компоновку. Если include_layout равно False, возвращается первая карта документа. Импортируется только одна карта документа глобуса (.3dd) или сцены (.sxd). Соответствующая компоновка возвращается с файлом .pagx и отчетом с файлом .rptx. |
Данный метод импортирует один документ за один раз. Для импорта нескольких документов, выполните данный метод для каждого документа. Документ карты (.mxd) всегда содержит компоновку. Если при перемещении документов карты вам не нужно импортировать компоновку, задайте include_layout=False.
listBasemaps ({wildcard})
Параметр | Описание | Тип данных |
wildcard | A wildcard is based on the label as it appears in the basemap gallery in the application and is not case sensitive. A combination of asterisks (*) and characters can be used to help limit the resulting list. (Значение по умолчанию — None) | String |
Тип данных | Описание |
List | Возвращает список Python объектов String. |
Метод listBasemaps возвращает список объектов, даже если возвращается только одна базовая карта, поэтому вместо этого используйте номер индекса для возвращения String. Выходные данные из listBasemaps затем могут быть использованы в методе addBasemap класса Map.
Следующий скрипт добавляет на карту базовую карту.
p = arcpy.mp.ArcGISProject('current')
bm = p.listBasemaps('National Geographic*')[0]
m = p.listMaps('Yosemite National Park')[0]
m.addBasemap(bm)
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).
listStyleItems (style, style_class, {wildcard})
Параметр | Описание | Тип данных |
style | A string that represents either a system style name such as ArcGIS 2D, a personal style such as Favorites, or a custom .stylx file. Примечание:Styles must exist in the project before they can be referenced using listStyleItems. Custom .stylx files must be loaded and saved in a project. They are referenced by passing in their full path and filename. (Значение по умолчанию — None) | String |
style_class | A string that represents the class of the style items as they appear in the Catalog View window.
(Значение по умолчанию — None) | String |
wildcard | A wildcard based on the style item name as it appears in the application. A combination of asterisks (*) and characters can be used to limit the length of the resulting list. (Значение по умолчанию — None) | String |
Тип данных | Описание |
List | Возвращает список объектов StyleItem. |
В проекте могут находиться несколько элементов стилей с одинаковым именем. Если это так, то в дополнение к параметру wildcard вы также можете использовать такие свойства, как category и tags, чтобы быть уверенным в том, что у вас есть нужный элемент стиля. См. пример кода в разделе справки, посвященном классу StyleItem.
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 |
Более подробное описание, сведения о параметрах, сценарии и примеры кода см. Обновление и исправление источников данных.
updateDatabases (databases, {validate})
Параметр | Описание | Тип данных |
databases [databases,...] | A list of Python dictionaries that each contain properties to an individual database. The dictionary keys are defined below.
| List |
validate | If set to True, the database will only be added if the databasePath is a valid database. If it is not valid, the database will not be added and the function will return the dictionary as an invalid database. If set to False, the method will add all the databases to the project, regardless of whether the database can be connected to. (Значение по умолчанию — True) | Boolean |
Тип данных | Описание |
List | Список некорректных баз. |
Чтобы обновить базу данных проекта, необходимо сразу задать весь список баз данных. Вы не можете добавлять, удалять или обновлять по одной базе данных за раз. Вы можете либо создать новый список с нуля, либо изменить список, возвращаемый свойством databases, а затем отправить весь список обратно в проект с помощью метода updateDatabases.
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.
| 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 add all the folders to the project, regardless of whether the folder is valid. (Значение по умолчанию — True) | Boolean |
Тип данных | Описание |
List | Список папок, которые не имеют допустимых подключений. |
Чтобы обновить подключения к папкам проекта, необходимо сразу задать весь список баз данных. Вы не можете добавлять, удалять или обновлять подключение к одной папке за раз. Вы можете либо создать новый список с нуля, либо изменить список, возвращаемый свойством folderConnections, а затем отправить весь список обратно в проект с помощью метода updateFolderConnections.
updateStyles (styles)
Параметр | Описание | Тип данных |
styles [styles,...] | A list of strings that are either a system style keyword such as ArcGIS 2D or the full path to a custom .stylx file. | List |
Тип данных | Описание |
List | Список стилей, которые не удалось добавить. Проверьте, нет ли орфографических ошибок или ошибок в пути к файлам. |
Чтобы обновить стили проекта, необходимо задать весь список стилей сразу. Вы не можете добавлять, удалять или обновлять стили по одному за один раз. Вы можете либо создать новый список с нуля, либо изменить список, возвращенный свойством styles, а затем задать уже измененный список целиком обратно в проект с помощью метода updateStyles. Стиль Избранное не следует указывать в параметре styles при использовании метода updateStyles. Стиль Избранное всегда доступен в проекте, поскольку он привязан к учетной записи пользователя. Он не связан с проектом и не может управляться с помощью метода updateStyles. Дополнительную информацию и пример кода см. в разделе справки по классу StyleItem.
Следующий скрипт добавляет системный и пользовательский стили к текущему списку стилей, который отображается на панели Каталога.
p = arcpy.mp.ArcGISProject('current')
s = p.styles
s.append('Pushpins')
s.append(r'C:\Projects\YosemiteNP\Yosemite.stylx')
p.updateStyles(s)
updateToolboxes (toolboxes, {validate})
Параметр | Описание | Тип данных |
toolboxes [toolboxes,...] | A list of Python dictionaries that each contain toolbox information. The dictionary keys are defined below.
| List |
validate | Specifies whether all toolboxes will be added to the project. If set to True, the toolbox will only be added if the toolboxPath value is a valid path. If it is not valid, the toolbox will not be added and the function will return the dictionary as an invalid toolbox. If set to False, all the toolboxes will be added to the project, regardless of whether the folder is valid. (Значение по умолчанию — True) | Boolean |
Тип данных | Описание |
List | Список наборов инструментов, у которых нет допустимых подключений. |
Чтобы обновить наборы инструментов проекта, вам необходимо сразу задать весь список наборов инструментов. Вы не можете добавлять, удалять или обновлять по одному набору инструментов за раз. Вы можете либо создать новый список с нуля, либо изменить список, возвращаемый свойством toolboxes, а затем отправить весь список обратно в проект с помощью метода updateToolboxes.
Пример кода
В следующем скрипте показано, как импортировать документы в существующий проект шаблона ArcGIS Pro. Он также задает некоторые параметры проекта по умолчанию и сохраняет результат в новый файл проекта.
import arcpy
#Reference a blank, template project on disk
p = arcpy.mp.ArcGISProject(r"C:\Projects\blank.aprx")
#Import documents set up default GDB and toolbox
p.importDocument(r"C:\Projects\YosemiteNP\Documents\Yosemite.mxd")
p.importDocument(r"C:\Projects\YosemiteNP\Documents\Yosemite_3DViews.3dd")
#Set up default GDB and toolbox
p.defaultGeodatabase = r"C:\Projects\YosemiteNP\Data_Vector\YosemiteData.gdb"
p.defaultToolbox = r"C:\Projects\YosemiteNP\Analysis\AnalysisTools.tbx"
#Save out to a new, different project
p.saveACopy(r"C:\Projects\YosemiteNP\Yosemite.aprx")
Следующий скрипт печатает имя объектов в проекте. Он использует ключевое слово CURRENT, поэтому он должен быть запущен из окна Python. Скрипт печатает имя каждой карты со списком ее слоев. Затем он печатает название каждой компоновки вместе с информацией о размере страницы.
p = arcpy.mp.ArcGISProject('CURRENT')
#Project information
print(f'Project: {p.filePath}')
print(f' Version: {p.filePath}')
print(f' Last saved: {p.dateSaved}')
#Loop through each map
print('Maps and Layers:')
for m in p.listMaps():
print(' Map: ' + m.name)
for lyr in m.listLayers():
print(' Layer: ' + lyr.name)
#Loop through each layout
print('Layouts:')
for lyt in p.listLayouts():
print(f' Name: {lyt.name}')
print(f' W/H: {lyt.pageWidth} x {lyt.pageHeight}')
print(f' Units: {lyt.pageUnits}')
Следующий скрипт использует ключевое слово CURRENT, поэтому он должен быть запущен из окна Python. Скрипт копирует существующую карту, добавляет к ней новый слой, задает свойство камеры карты по умолчанию, которое управляет экстентом вновь открываемых видов, экспортирует вид карты в PDF и удаляет вновь созданную карту из проекта.
p = arcpy.mp.ArcGISProject('CURRENT')
#Create a copy of an existing map
existingMap = p.listMaps('Yosemite National Park')[0]
rangerMap = p.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
p.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 = p.activeView
mv.exportToPDF(r'C:\Temp\RangerStations.pdf', width=700, height=500, resolution=96)
#Optionally delete the temporary map when the export is complete
p.deleteItem(rangerMap)
Следующий скрипт выполняет итерацию по всем слоям файловой базы геоданных в проекте и добавляет каждый уникальный путь к рабочей области в папку Folders с элементами проекта.
import arcpy, os
p = arcpy.mp.ArcGISProject(r'C:\Projects\YosemiteNP\Yosemite.aprx')
#Check project read-state before continuing
if p.isReadOnly:
print('WARNING: project is already opened. Exiting.')
exit
folderList = [p.homeFolder]
for m in p.listMaps():
for l in m.listLayers():
if not l.isWebLayer:
if not l.isBasemapLayer:
if l.supports('DATASOURCE'):
dirPath = os.path.dirname(l.dataSource)
#Parce out GDB folders
pathParts = dirPath.split(os.sep)
for part in pathParts:
if part.endswith(".gdb"):
gdbName = part
dirPath = dirPath.split("\\"+gdbName, 1)[0]
#Add unique path to list
if dirPath not in folderList:
folderList.append(dirPath)
folderList.sort()
for f in folderList:
print(f)
print(f'Total Unique Folders: {len(folderList)}')
#Add each folder connection from FolderList, there MUST be one default folder.
fcList = []
for folder in folderList:
if folder == r'C:\Projects\YosemiteNP':
defName2 = r'Default Folder'
fcDict = {'connectionString':folder, 'alias':defName2, 'isHomeFolder':True}
else:
fcDict = {'connectionString':folder, 'alias':'', 'isHomeFolder':False}
fcList.append(fcDict)
bfc = p.updateFolderConnections(fcList, validate=False)
print(f'Broken folder connections: {len(bfc)}')
p.saveACopy(r'C:\Projects\YosemiteNP\Yosemite_Output.aprx')
Следующий скрипт добавляет новые файловые базы геоданных в папку элементов проекта Databases, обеспечивая быстрый доступ к данным из проекта.
import arcpy, os
path = r'C:\Projects\YosemiteNP'
p = arcpy.mp.ArcGISProject(os.path.join(path, 'Yosemite.aprx'))
#Check project read-state before continuing
if p.isReadOnly:
print('WARNING: project is already opened. Exiting.')
exit
db = p.databases
#Append new fGDBs in addition to the already existing default database
db.append({'databasePath' : os.path.join(path, r'Data_Geology\Geology.gdb'),
'isDefaultDatabase': False})
db.append({'databasePath' : os.path.join(path, r'Data_Elev\Elevation.gdb'),
'isDefaultDatabase': False})
db.append({'databasePath': os.path.join(path, r'\Data_LandCover\LandCover.gdb'),
'isDefaultDatabase': False})
p.updateDatabases(db, True)
p.saveACopy(os.path.join(path, 'Yosemite_newGDBs.aprx'))
Следующий скрипт создает компоновку в проекте и предопределенные графические элементы, используя базовый системный стиль. Функция используется для создания конверта для каждого графического прямоугольника, добавляемого в компоновку.
def MakeRec_LL(llx, lly, w, h):
xyRecList = [[llx, lly], [llx, lly+h], [llx+w,lly+h], [llx+w,lly], [llx,lly]]
xyRecList = [[1,1],[1, 2], [2.75, 2], [2.75, 1], [1, 1]]
array = arcpy.Array([arcpy.Point(*coords) for coords in xyRecList])
rec = arcpy.Polygon(array)
return rec
p = arcpy.mp.ArcGISProject('CURRENT')
lyt = p.createLayout(6, 3, 'INCH', 'New Layout with Rectangles')
#Construct a pre-defined rectangle graphic element using a system style item
# and a rectangle function that takes x/y min/max and a width/height
# using the lower left corner as a start location
polyStyle = p.listStyleItems('ArcGIS 2D', 'Polygon', 'Orchard')[0]
p.createPredefinedGraphicElement(lyt, MakeRec_LL(1, 1, 1.75, 1), 'RECTANGLE',
polyStyle, 'ArcPy_Rectangle_Env',
lock_aspect_ratio=False)
#Construct the same element above using a point location
rec = p.createPredefinedGraphicElement(lyt, arcpy.Point(3, 1), 'RECTANGLE',
polyStyle, 'ArcPy_Rectangle_Pt',
lock_aspect_ratio=False)
rec.elementWidth = 1.75
rec.elementHeight = 1
lyt.openView()
Следующий скрипт создает карту с графическим слоем. Затем он добавляет два изображения к новому составному слою внутри графического слоя. Функция используется для создания конверта для каждого изображения, они смещаются на 3000000 единиц карты.
def MakeRec_UL(ulx, uly, w, h):
xyRecList = [[ulx, uly], [ulx+w, uly], [ulx+w,uly-h], [ulx,uly-h], [ulx,uly]]
array = arcpy.Array([arcpy.Point(*coords) for coords in xyRecList])
rec = arcpy.Polygon(array)
return rec
p = arcpy.mp.ArcGISProject('current')
m = p.createMap('New Map', 'Map') #WGS 1984 Web Mercator (auxiliary sphere)
gl = m.createGraphicsLayer('New Graphics Layer')
###Replace with pictures of YOUR favorite pets!
picPath1 = r'C:\Projects\Fenway.jpg'
picPath2 = r'C:\Projects\Chowdah.png'
x = -13000000; y = 5000000; w = 1000000; h = 1500000
pic1 = p.createPictureElement(gl, MakeRec_UL(x, y, w, h), picPath1, 'Fenway')
pic2 = p.createPictureElement(gl, MakeRec_UL(x+3000000, y, w, h), picPath2, 'Chowdah')
m.openView()
newGroup = p.createGroupElement(gl, [pic1, pic2], 'Favorite Pets')
Следующий скрипт создает отчет с группировкой из слоя карты.
p = arcpy.mp.ArcGISProject('current')
#Find the report data source
m = p.listMaps('New York')[0]
ds = m.listLayers('Bus Stops')[0]
#Set page info
pi = {'width': 8.5, 'height': 11, 'units': 'INCH', 'margins': 'NORMAL'}
#Define the fields
f = [{'fieldName' : 'Borough', 'sortOrder' : 'ASC', 'groupField' : True},
{'fieldName' : 'StopID', 'sortOrder' : 'ASC', 'groupField' : False},
{'fieldName' : 'NumofLines', 'sortOder' : 'None', 'groupField' : False},
{'fieldName' : 'Capacity', 'sortOrder' : 'None', 'groupField' : False}]
#Define the statistics
s = [{'fieldName' : 'NumofLines', 'statistic' : 'MEAN'},
{'fieldName' : 'Capacity', 'statistic' : 'MAX'}]
#Create report
r = p.createReport(
page_info = pi,
data_source = ds,
fields = f,
statistics = s,
name = 'createReport Example')
#Open new report view
r.openView()