Map

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

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
(чтение и запись)

Предоставляет возможность получать или устанавливать свойства Камеры по умолчанию.

Примечание:

Изменение defaultCamera не повлияет на существующий вид. Это свойство применяется, только когда открывается новый MapView, либо когда новый MapFrame вставляется в компоновку.

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Автоматически размещает слой или слои с учетом правил определения веса слоя и геометрии.
  • BOTTOMРазмещает слой или слои в нижней части стека слоев таблицы содержания (TOC).
  • TOPРазмещает слой или слои в верхней части стека слоев таблицы содержания (TOC).

(Значение по умолчанию — 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Автоматически размещает слой с учетом правил определения веса слоя и геометрии.
  • BOTTOMРазмещает слой в нижней части стека слоев таблицы содержания (TOC).
  • TOPРазмещает слой в верхней части стека слоев таблицы содержания (TOC).

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

String

Метод addLayerToGroup является единственным способом добавить слой или набор слоев в существующий, пустой составной слой в карте. По умолчанию add_position добавляет слои с использованием той же логики автоматического упорядочения, которая размещает слои в карте аналогично работе кнопки Добавить данные (Add Data) в приложении; она размещает каждый слой с учетом правил определения веса слоя и типа геометрии. Другими вариантами размещения являются либо TOP, либо BOTTOM стека слоев. Для более точного контроля размещения слоя, обратитесь к методу insertLayer.

Добавляемый слой может ссылаться на уже существующий слой в том же или в отдельном проекте, или ссылаться на файл слоя (.lyr or .lyrx) на диске. Ссылка на слой может быть отдельным слоем, составным слоем со множеством подслоев или набором слоев корневого уровня и составных слоев при ссылке на файл .lyrx. Дополнительные сведения по файлам слоя см. в разделе LayerFile.

Способ отображения слоя в таблице содержания (TOC) после добавления зависит от способа отображения слоя источника. Например, некоторые слои полностью свернуты и не отображают свои символы в таблице содержания (TOC). Эта настройка сохраняется в слое. Если слой свернут, сохранен в файле слоя, а потом добавлен в карту, то слой будет свернут в новой карте при добавлении через addLayerToGroup.

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

Ссылка на объект Table, представляющий добавляемую таблицу.

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

Ссылка на объект Table.

Метод addTable предоставляет способ добавить таблицы на карту. Таблица, которую вы хотите добавить, может быть либо таблицей на существующей карте, и тогда используется метод listTables для объекта Map, или это может быть таблица на диске или в базе данных, на которую ссылается функция Table.

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

Строка, представляющая тип сервера. Поддерживаются следующие типы серверов:

  • HOSTING_SERVERПоддерживает публикацию либо векторного веб-слоя, либо веб-слоя листов в ArcGIS Enterprise или ArcGIS Online. Используйте эту опцию, когда вы указываете FEATURE или TILE в качестве параметра service_type.
  • FEDERATED_SERVERПоддерживает публикацию слоя изображений карты на интегрированном сервере портала ArcGIS Enterprise. Используйте эту опцию, когда вы указываете MAP_IMAGE в качестве параметра service_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.

  • AFTERВставляет новый слой после базового слоя или под ним.
  • BEFOREВставляет новый слой перед базовым слоем или над ним.

(Значение по умолчанию — 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

Константа, которая определяет размещение перемещаемого слоя по отношению к базовому слою.

  • AFTERПеремещает слой в положение за или под базовым слоем.
  • BEFOREПеремещает слой в положение перед или над базовым слоем.

(Значение по умолчанию — 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

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

Пример кода

Пример 1 Map

Следующий скрипт ссылается на файл слоя и вставляет слой в карту над уже существующим в карте слоем.

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")
Пример 2 Map

Следующий скрипт устанавливает свойство 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