Краткая информация
Map является главным объектом для ссылки и управления слоями и таблицами в проекте ArcGIS Pro.
Обсуждение
Map в ArcGIS Pro представляет набор табличных и географических слоев с условными обозначениями, а также хранит такую информацию, как системы координат, виды данных по умолчанию и различные другие метаданные. Единственным способом визуализировать содержание Карты (Map) является визуализация либо в виде карты, подобном закладке в приложении со своей собственной таблицей содержания, либо во фрейме карты в компоновке страницы. Одна и та же карта может быть отображена во множестве видов карты или фреймах карты. Если слой добавлен на карту, то все виды карты и фреймы карты, которые ссылаются на карту, будут отображать добавленный слой. Если вы хотите, чтобы другой набор слоев или таблиц был отображен в разных видах, вам нужно создать и использовать различные карты.
Карты доступны с использованием функции listMaps из объекта ArcGISProject и она возвращает список Python объектов Map. Важно, чтобы у каждой карты было свое уникальное имя, благодаря чему на конкретную карту было бы легко ссылаться с использованием свойства name. Карта может также быть доступна из объекта MapFrame с использованием свойства map. Примечание: arcpy.mp не обеспечивает доступ к видам карт в приложении; он обеспечивает доступ только к MapFrames.
Существует ряд методов, доступных для объекта Map, которые позволяют вам управлять своим набором табличных и символизированных географических слоев. Слои и таблицы могут быть добавлены (addLayer, addLayerToGroup, addTable или insertLayer), удалены (removeLayer или removeTable) и переупорядочены (moveLayer) в пределах списка существующих слоев и таблиц. Методы listLayers и listTables описывают, как вы ссылаетесь на Layers (Слои) и Tables (Таблицы) в карте.
Каждая карта имеет свойство mapType. Оно имеет либо значение MAP, которое представляет 2D-карту, либо значение SCENE, которое соответствует 3D-карте. Одним из примеров необходимости знать свойство mapType, если вы хотите установить свойство defaultCamera. Вы не можете применить 3D-объект Camera к 2D-карте и наоборот. Поэтому вам следует проверить значение mapType заблаговременно.
Свойства
Свойство | Описание | Тип данных |
defaultCamera (чтение и запись) | Предоставляет возможность получать или устанавливать свойства Камеры по умолчанию. | Camera |
defaultView (только чтение) | Используется в сочетании с ConvertWebMapToArcGISProject в веб-картах, печатающихся с помощью веб-инструмента, для возвращения вида карты для печати или экспорта. | MapView |
mapType (только чтение) | Возвращает строковое значение, которое сообщает информацию о типе объекта Map. Если Map - 2D, то возвращается MAP. Если Map - 3D, то возвращается SCENE. | String |
mapUnits (только чтение) | Возвращает строковое значение, представляющее единицы карты для Map. | String |
metadata (чтение и запись) | Получите или настройте информацию о классе Metadata для карты. Примечание:Установка метаданных зависит от значения свойства isReadOnly. | Metadata |
name (чтение и запись) | Предоставляет возможность получать или устанавливать имя объекта Map, которое отображается в таблице содержания документа карты, а также действительное имя элемента в слое. | String |
referenceScale (чтение и запись) | Дает возможность получать или задавать значение прозрачности для Map. Для очистки базового масштаба установите значение на 0.0. | Double |
spatialReference (чтение и запись) | Дает возможность получать или задавать значение SpatialReference, связанное с картой. | SpatialReference |
URI (только чтение) | Universal Resource Indicator карты. Это уникальный идентификатор карты в проекте, который иногда требуется при использовании доступа Python CIM. После добавления карты и установления URI значение со временем не меняется. Например, если вы измените имя карты, URI не изменится. | String |
Обзор метода
Метод | Описание |
addBasemap (basemap_name) | addBasemap обеспечивает возможность добавления или замещения слоя базовой карты внутри самой этой карты. |
addDataFromPath (data_path) | addDataFromPath обеспечивает возможность добавить Layer в карту проекта (.aprx) посредством указания локального пути или URL-адреса. |
addLayer (add_layer_or_layerfile, {add_position}) | Обеспечивает возможность добавления Layer или LayerFile в карту внутри проекта (.aprx) с использованием базовых опций размещения. |
addLayerToGroup (target_group_layer, add_layer_or_layerfile, {add_position}) | Обеспечивает возможность добавления Layer (Слоя) или содержания LayerFile к существующему составному слою в карте внутри проекта (.aprx) с использованием базовых опций размещения. |
addTable (add_table) | Обеспечивает возможность добавления Table на карту внутри проекта (.aprx). |
clearSelection () | Очищает выборку для всех слоев и таблиц карты. |
exportToMAPX (out_mapx) | Экспортирует Map в файл карты. |
getDefinition (cim_version) | Получает определение CIM для карты. |
getWebLayerSharingDraft (server_type, service_type, service_name, {layers_and_tables}) | Создает из карты план совместного использования, который можно настроить и опубликовать в ArcGIS Enterprise или ArcGIS Online. |
insertLayer (reference_layer, insert_layer_or_layerfile, {insert_position}) | Обеспечивает возможность добавления Layer или LayerFile в карту внутри проекта (.aprx) посредством задания определенного положения. |
listBookmarks ({wildcard}) |
Возвращает список Python объектов bookmark (закладка) в Map. |
listBrokenDataSources () | Возвращает список объектов Python Слой (Layer) или Таблица (Table), которые имеют поврежденные подключения к оригинальным исходным данным внутри карты. |
listLayers ({wildcard}) |
Возвращает список Python объектов Layer (Слой), которые существуют в карте. |
listTables ({wildcard}) | Возвращает список Python объектов Table, которые существуют в карте. |
moveLayer (reference_layer, move_layer, {insert_position}) | Позволяет переместить слой или групповой слой карты в заданное местоположение в стеке слоев. |
removeLayer (remove_layer) | Обеспечивает возможность удаления слоя из карты в проекте. |
removeTable (remove_table) | Обеспечивает возможность удаления таблицы с карты в проекте. |
setDefinition (definition_object) | Настраивает определение CIM для карты. |
updateConnectionProperties (current_connection_info, new_connection_info, {auto_update_joins_and_relates}, {validate}, {ignore_case}) | Заменяет свойства подключения, используя словарь либо путь к рабочей области. |
Методы
addBasemap (basemap_name)
Параметр | Описание | Тип данных |
basemap_name | Имя базовой карты, как оно отображается в галерее базовых карт. | String |
Метод addBasemap работает аналогично системе управления Базовая карта на ленте Карта. Если базовой карты не существует, будет добавлена новая. Если существует одна или несколько базовых карт, их место займет вновь добавленная.
Чтобы добавить в карту более одной базовой карты, сохраните базовую карту в файл слоя и добавьте его, используя методы LayerFile и addLayer.
addDataFromPath (data_path)
Параметр | Описание | Тип данных |
data_path | Строка, представляющая локальный путь или URL-адрес. (Значение по умолчанию — None) | String |
Тип данных | Описание |
Layer | Объект Layer. |
Метод addDataFromPath позволяет добавить слой в карту путем, аналогичным тому, как в данном приложении работает кнопка Добавить данные из пути; а именно, она размещает слои с учетом правил определения веса слоя и типа геометрии. Для более точного контроля размещения слоев обратитесь к методу moveLayer.
addLayer (add_layer_or_layerfile, {add_position})
Параметр | Описание | Тип данных |
add_layer_or_layerfile | Ссылка на объект Layer или LayerFile представляющий слой или слои, которые должны быть добавлены. | Layer |
add_position | Константа, определяющая размещение добавленного слоя или слоев в карту.
(Значение по умолчанию — AUTO_ARRANGE) | String |
Тип данных | Описание |
List | Список Python объектов Layer. |
Метод addLayer предоставляет способ добавить слой или набор слоев в карту. По умолчанию add_position добавляет слои с использованием той же логики автоматического упорядочения, которая размещает слои в карте аналогично работе кнопки Добавить данные (Add Data) в приложении; она размещает каждый слой с учетом правил определения веса слоя и типа геометрии. Другими вариантами размещения являются либо TOP, либо BOTTOM стека слоев. Для более точного контроля размещения слоя, обратитесь к методу insertLayer.
Добавляемый слой может ссылаться на уже существующий слой в том же или в отдельном проекте, или ссылаться на файл слоя (.lyr or .lyrx) на диске. Ссылка на слой может быть отдельным слоем, составным слоем со множеством подслоев или набором слоев корневого уровня и составных слоев при ссылке на файл .lyrx. Дополнительные сведения по файлам слоя см. в разделе LayerFile.
Способ отображения слоя в таблице содержания (TOC) после добавления зависит от способа отображения слоя источника. Например, некоторые слои полностью свернуты и не отображают свои символы в таблице содержания (TOC). Эта настройка сохраняется в слое. Если слой свернут, сохранен в файле слоя, а потом добавлен в карту, то слой будет свернут в новой карте при добавлении через addLayer.
addLayerToGroup (target_group_layer, add_layer_or_layerfile, {add_position})
Параметр | Описание | Тип данных |
target_group_layer | Ссылка на существующий составной объект Layer (Слой). | Layer |
add_layer_or_layerfile | Ссылка на объект Layer или LayerFile представляющий слой или слои, которые должны быть добавлены. | Layer |
add_position | Константа, определяющая размещение добавленного слоя или слоев в target_group_layer.
(Значение по умолчанию — AUTO_ARRANGE) | String |
Метод addLayerToGroup является единственным способом добавить слой или набор слоев в существующий, пустой составной слой в карте. По умолчанию add_position добавляет слои с использованием той же логики автоматического упорядочения, которая размещает слои в карте аналогично работе кнопки Добавить данные (Add Data) в приложении; она размещает каждый слой с учетом правил определения веса слоя и типа геометрии. Другими вариантами размещения являются либо TOP, либо BOTTOM стека слоев. Для более точного контроля размещения слоя, обратитесь к методу insertLayer.
Добавляемый слой может ссылаться на уже существующий слой в том же или в отдельном проекте, или ссылаться на файл слоя (.lyr or .lyrx) на диске. Ссылка на слой может быть отдельным слоем, составным слоем со множеством подслоев или набором слоев корневого уровня и составных слоев при ссылке на файл .lyrx. Дополнительные сведения по файлам слоя см. в разделе LayerFile.
Способ отображения слоя в таблице содержания (TOC) после добавления зависит от способа отображения слоя источника. Например, некоторые слои полностью свернуты и не отображают свои символы в таблице содержания (TOC). Эта настройка сохраняется в слое. Если слой свернут, сохранен в файле слоя, а потом добавлен в карту, то слой будет свернут в новой карте при добавлении через addLayerToGroup.
clearSelection ()
Очищает выборку для всех слоев и таблиц карты.
exportToMAPX (out_mapx)
Параметр | Описание | Тип данных |
out_mapx | Строка используется для сохранения Map в в файл карты (.mapx). | String |
Этот метод используется, когда необходимо сохранить карту в файл карты, который затем можно импортировать в проект с помощью метода ArcGISProject importDocument.
getDefinition (cim_version)
Параметр | Описание | Тип данных |
cim_version | Строка, представляющая основную версию CIM. | String |
Доступ уровня CIM к дополнительным свойствам объектов, которые появились в версии 2.4. Esri соблюдает спецификацию семантики версий. Это означает, что до следующего выпуска основной версии, например, версии 3.0, при появлении существенных изменений в API, для cim_version будет использовано значение V2. После выпуска версии 3.0 станет доступной новая опция V3. Это дает авторам скриптов Python контроль над версией CIM, которая будет использоваться во время выполнения, если есть вероятность, что будут внесены существенные изменения в новую версию.
Более подробно о работе с CIM и примеры см. Доступ к CIM в Python.
getWebLayerSharingDraft (server_type, service_type, service_name, {layers_and_tables})
Параметр | Описание | Тип данных |
server_type | Строка, представляющая тип сервера. Поддерживаются следующие типы серверов:
Подсказка:Функция getWebLayerSharingDraft не поддерживает публикацию картографических сервисов на ArcGIS Server. Вместо этого используйте функцию arcpy.sharing.CreateSharingDraft. | String |
service_type | Строка, представляющая тип сервиса. Поддерживаются следующие типы сервисов:
| String |
service_name | Строка, представляющая имя сервиса. Это – то имя, которое будут видеть другие пользователи и использовать для обозначения этого сервиса. Имя может содержать только буквы, цифры и знак подчеркивания. В имени нельзя использовать пробелы и специальные символы. Длина имени не должна превышать 120 символов. | String |
layers_and_tables | Список слоев и таблиц из карты. Если левая панель будет пустой, будет опубликована вся карта. Этот параметр позволяет выбрать из карты поднабор слоев и таблиц для публикации. Эти слои и таблицы должны быть из одной и той же публикуемой карты. | List |
Тип данных | Описание |
Object | Возвращает объект класса FeatureSharingDraft, TileSharingDraft или MapImageSharingDraft. |
Функция getWebLayerSharingDraft создает из карты план совместного использования из карты в проекте ArcGIS Pro. План совместного использования представляет собой настраиваемый набор свойств для веб-слоя. После настройки плана совместного использования его можно сохранить в файле черновика определений сервиса (.sddraft), используя функцию exportToSDDraft, из любого из классов FeatureSharingDraft, TileSharingDraft или MapImageSharingDraft. Затем он может быть применен и опубликован либо в ArcGIS Enterprise, либо в ArcGIS Online, используя инструменты Промежуточный сервис и Выгрузить определение сервиса. Для получения дополнительной информации см. Введение в модуль Общего доступа.
insertLayer (reference_layer, insert_layer_or_layerfile, {insert_position})
Параметр | Описание | Тип данных |
reference_layer | Объект Layer, соответствующий существующему слою, который определяет положение, где будет вставлен новый слой. | Layer |
insert_layer_or_layerfile | Ссылка на объект Layer или LayerFile представляющий слой или слои, которые должны быть добавлены. | Layer |
insert_position | Константа, определяющая размещение добавляемого слоя или слоев по отношению к reference_layer.
(Значение по умолчанию — BEFORE) | String |
Метод insertLayer является более точным способом позиционирования слоя в карте или составном слое, поскольку для указания точного положения используется reference_layer. Слой будет добавлен либо before, либо after reference_layer.
Если reference_layer ссылается на слой корневого уровня карты, то вставляемый слой будет добавлен на корневом уровне. Если reference_layer ссылается на слой внутри составного слоя, то вставляемый слой будет добавлен в группу. Поскольку reference_layer является обязательным параметром, то невозможно использовать insert_layer для добавления слоя в пустую карту или в пустой составной слой. Используйте методы addLayer или addLayerToGroup для добавления слоя или набор слоев в пустую карту или составной слой.
Вставляемый слой может ссылаться на уже существующий слой в том же или в отдельном проекте, или ссылаться на файл слоя (.lyr или .lyrx) на диске. Ссылка на слой может быть отдельным слоем, составным слоем со множеством подслоев или набором слоев корневого уровня и составных слоев при ссылке на файл .lyrx. Дополнительные сведения по файлам слоя см. в разделе LayerFile.
Способ отображения слоя в таблице содержания (TOC) после добавления зависит от способа отображения слоя источника. Например, некоторые слои полностью свернуты и не отображают свои символы в таблице содержания (TOC). Эта настройка сохраняется в слое. Если слой свернут, сохранен в файле слоя, а потом добавлен в карту, то слой будет свернут в новой карте при добавлении через insertLayer.
listBookmarks ({wildcard})
Параметр | Описание | Тип данных |
wildcard | Групповой символ базируется на имени закладки и не является чувствительным к регистру. Для наложения ограничений на результирующий список можно использовать сочетание звездочек (*) и символов. (Значение по умолчанию — None) | String |
Тип данных | Описание |
List | Метод listBookmarks всегда возвращает объект списка Python, даже если возвращается только один поврежденный слой или таблица. |
Возвращает список Python объектов bookmark (закладка) в Map.
listBrokenDataSources ()
Тип данных | Описание |
List | Список объектов Python Слой (Layer) или Таблица (Table). |
Метод listBrokenDataSources всегда возвращает объект списка Python, даже если возвращается только один поврежденный слой или таблица.
listLayers ({wildcard})
Параметр | Описание | Тип данных |
wildcard | Групповой символ базируется на имени слоя и не является чувствительным к регистру. Для наложения ограничений на результирующий список можно использовать сочетание звездочек (*) и символов. (Значение по умолчанию — None) | String |
Тип данных | Описание |
List | Возвращает список Python объектов Layer (Слой) в карте. |
Возвращает список Python объектов Layer (Слой), которые существуют в карте. ListLayers всегда возвращает объект списка Python, даже если возвращается только одна таблица.
Существует возможность, что в карте могут быть слои с одинаковым именем. В этом случае можно использовать другие свойства для изоляции определенного слоя. Такие свойства слоя, как datasource или definitionQuery, могут использоваться для выполнения этой операции. Идеальным является вариант, при котором все слои карты имеют уникальные имена.
listTables ({wildcard})
Параметр | Описание | Тип данных |
wildcard | Групповой символ базируется на имени слоя и не является чувствительным к регистру. Для наложения ограничений на результирующий список можно использовать сочетание звездочек (*) и символов. (Значение по умолчанию — None) | String |
Тип данных | Описание |
List | Список Python объектов Table (Таблица) в карте. |
Возвращает список Python объектов Table (Таблица), которые существуют в карте. ListTables всегда возвращает объект списка Python, даже если возвращается только одна таблица.
Существует возможность, что в карте могут быть таблицы с одинаковым именем. В этом случае можно использовать другие свойства для изоляции определенного слоя. Такие свойства таблицы, как datasource или definitionQuery, могут использоваться для выполнения этой операции. Идеальным является вариант, при котором все таблицы в карте имеют уникальные имена.
moveLayer (reference_layer, move_layer, {insert_position})
Параметр | Описание | Тип данных |
reference_layer | Объект Layer, представляющий существующей слой, который определяет местоположение, в которое будет перемещен новый слой. | Layer |
move_layer | Ссылка на объект Слой (Layer), представляющий слой, выбираемый для перемещения. | Layer |
insert_position | Константа, которая определяет размещение перемещаемого слоя по отношению к базовому слою.
(Значение по умолчанию — BEFORE) | String |
Метод moveLayer будет перемещать слой в пределах карты, а также внутрь и за пределы групповых слоев той же карты. move_layer и reference_layer должны находиться в одной и той же карте. Нельзя переместить слой из одной карты в другую, даже в пределах одного и того же проекта. Вместо это используйте addLayer, addLayerToGroup или insertLayer.
removeLayer (remove_layer)
Параметр | Описание | Тип данных |
remove_layer | Ссылка на объект Layer, который представляет удаляемый слой. | Layer |
RemoveLayer удаляет один слой или группу слоев из определенной карты. Если указанным критериям соответствует несколько слоев, будет удален только первый слой, если только скрипт не будет повторно обрабатывать каждый слой в списке возвращенных.
removeTable (remove_table)
Параметр | Описание | Тип данных |
remove_table | Ссылка на объект Table, который представляет удаляемый слой. | Table |
RemoveTable удаляет одну таблицу с определенной карты. Если указанным критериям соответствует несколько таблиц, будет удалена только первая таблица, если только скрипт не будет повторно обрабатывать каждую таблицу в возвращенном списке.
setDefinition (definition_object)
Параметр | Описание | Тип данных |
definition_object | Объект измененного определения CIM, изначально полученный с помощью getDefinition. | Object |
Более подробно о работе с CIM и примеры см. Доступ к CIM в Python.
updateConnectionProperties (current_connection_info, new_connection_info, {auto_update_joins_and_relates}, {validate}, {ignore_case})
Параметр | Описание | Тип данных |
current_connection_info | Строка, представляющая собой путь к рабочей области либо словарь Python, содержащий свойства подключения к источнику, который вы собираетесь удалять. | String |
new_connection_info | Строка, представляющая собой путь к рабочей области либо словарь Python, содержащий свойства подключения с информацией о новом источнике. | String |
auto_update_joins_and_relates | Если задано значение True, способ updateConnectionProperties также обновляет подключения для соответствующих связей и соединений. (Значение по умолчанию — True) | Boolean |
validate | Если задано значение True, свойства подключения обновляются, только если значением new_connection_info является допустимое подключение. Если оно недопустимо, подключение не заменяется. При значении False все подключения будут соответствовать new_connection_info, независимо от корректности соответствия. В этом случае, если соответствий нет, источники данных повреждены. (Значение по умолчанию — True) | Boolean |
ignore_case | Определяет, будет ли поиск чувствителен к регистру. По умолчанию, запросы чувствительны к регистру. Чтобы выполнять не чувствительные к регистру запросы, задайте для ignore_case значение True. (Значение по умолчанию — False) | Boolean |
Более подробное описание, сведения о параметрах, сценарии и примеры кода см. в разделе справки Обновление и исправление источников данных.
Пример кода
Следующий скрипт ссылается на файл слоя и вставляет слой в карту над уже существующим в карте слоем.
import arcpy
aprx = arcpy.mp.ArcGISProject(r"C:\Projects\YosemiteNP\Yosemite.aprx")
insertLyr = arcpy.mp.LayerFile(r"C:\Projects\YosemiteNP\LayerFiles\Ranger Stations.lyrx")
m = aprx.listMaps("Yosemite National Park")[0]
refLyr = m.listLayers("Points of Interest")[0]
m.insertLayer(refLyr, insertLyr, "BEFORE")
aprx.saveACopy(r"C:\Projects\YosemiteNP\Yosemite_updated.aprx")
Следующий скрипт устанавливает свойство defaultCamera для всех карт и сцен, которые в текущий момент содержаться в проекте. Свойства камеры будут скопированы из существующих фреймов карты, которые имеют требуемые настройки просмотра. Все карты будут скопированы из фрейма 2D-карты, и все настройки просмотра сцены будут скопированы из фрейма 3D-карты.
import arcpy
aprx = arcpy.mp.ArcGISProject(r"C:\Projects\YosemiteNP\Yosemite.aprx")
lyt = aprx.listLayouts("Main Attractions*")[0]
mpFrm2D = lyt.listElements("mapframe_element", "Yose*")[0]
mpFrm3D = lyt.listElements("mapframe_element", "Inset1")[0]
for m in aprx.listMaps():
if m.mapType == "MAP":
m.defaultMapViewer = mpFrm2D.mapViewer
elif m.mapType == "SCENE":
m.defaultMapViewer = mpFrm3D.mapViewer
aprx.save()
del aprx