MapSeries

Сводка

Предоставляет доступ к пространственным сериям карт в Компоновке, в проекте ArcGIS Pro.

Описание

Серии карт сначала необходимо создать и активировать в компоновке в проекте ArcGIS Pro, до того, как ссылаться на них с помощью arcpy.mp.

Примечание:

Нельзя использовать arcpy.mp для создания серий карт.

Кроме предоставления методов и параметров для серий карт в компоновке, класс MapSeries может использоваться для доступа к отдельным страницам серии карт. Например, у вас есть сценарий, в котором строковые данные текстового элемента нужно отформатировать с помощью пользовательской логики или сформировать на основе нескольких полей. В этом случае компоновку все равно можно создать с включенной опцией серий карт, а arcpy.mp может обработать пользовательский текстовый элемент при обработке каждой страницы.

Страницы в серии карт можно экспортировать в PDF, используя метод exportToPDF. При экспорте серии карт поддерживаются все динамические элементы, связанные с ней. Например, текстовые элементы, легенды, фреймы таблиц, фреймы диаграмм и т.д. Для создания полной книги карт, выходные файлы PDF можно вставить в другие файлы PDF (например, заголовок или отчет), используя класс PDFDocument.

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

ArcGIS Pro поддерживает два типа серий карт: пространственные и закладки. Класс MapSeries работает только с пространственными сериями карт. Если серия карт закладок включена для компоновки, параметр mapSeries возвращает NoneType. Для эмуляции поведения серии карт закладок см. пример кода 4 ниже.

Свойства

ВладениеОбъяснениеТип данных
currentPageNumber
(чтение и запись)

Представляет активную или текущую страницу компоновки с включенной опцией серии карт.

Long
enabled
(чтение и запись)

Представляет статус включенной функции серий карт.

Подсказка:

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

Boolean
indexLayer
(только чтение)

Возвращает ссылку на индексный слой в компоновке с включенной функцией серий карт.

Layer
mapFrame
(только чтение)

Возвращает ссылку на фрейм карты, в котором хранится индексный слой.

MapFrame
pageCount
(только чтение)

Возвращает общее число страниц для компоновки с включенной опцией серий карт. Оно соответствует числу объектов индексного слоя.

Long
pageNameField
(только чтение)

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

Field
pageRow
(только чтение)

Возвращает объект Строка, что обеспечивает доступ к атрибутам для текущего индексного объекта. Для того, чтобы получить значение атрибута, введите точку, а после нее имя поля. Например, value = lyt.mapSeries.pageRow.FIELD_NAME.

Row
selectedIndexFeatures
(только чтение)

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

List

Обзор метода

МетодОбъяснение
exportToPDF (out_pdf, {page_range_type}, {page_range_string}, {multiple_files}, {resolution}, {image_quality}, {compress_vector_graphics}, {image_compression}, {embed_fonts}, {layers_attributes}, {georef_info}, {jpeg_compression_quality}, {clip_to_elements}, {show_selection_symbology}, {output_as_image}, {embed_color_profile})

Экспортирует выбранный поднабор страниц в файл формата Portable Document Format (PDF) для компоновки с включенной функцией серии карт.

getPageNumberFromName (page_name)

Возвращает номер страницы серии карт на основе имени страницы.

refresh ()

Обновляет существующую серию карт.

Методы

exportToPDF (out_pdf, {page_range_type}, {page_range_string}, {multiple_files}, {resolution}, {image_quality}, {compress_vector_graphics}, {image_compression}, {embed_fonts}, {layers_attributes}, {georef_info}, {jpeg_compression_quality}, {clip_to_elements}, {show_selection_symbology}, {output_as_image}, {embed_color_profile})
ParameterОбъяснениеТип данных
out_pdf

Строка, представляющая путь и имя выходного файла для экспорта.

String
page_range_type

Строковое значение, описывающее, каким образом страницы будут напечатаны.

  • ALLЭкспортируются все страницы.
  • CURRENTЭкспортируется активная или текущая страница.
  • RANGEЭкспортируются только страницы, указанные в параметре page_range_string.
  • SELECTEDЭкспортируются выбранные объекты слоя индекса/страницы.

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

String
page_range_string

Строка, определяющая страницы для печати, если используется опция RANGE в параметре page_range_type (например, 1, 3, 5-12). Если используется любое другое значение page_range_type, параметр page_range_string будет игнорироваться.

String
multiple_files

Строка для управления созданием выходного PDF. По умолчанию все страницы экспортируются в один многостраничный документ. По умолчанию – PDF_SINGLE_FILE.

  • PDF_MULTIPLE_FILES_PAGE_NAMEВыполните экспорт каждой страницы серии карт в отдельный файл и прибавьте к имени файла название страницы. Например, Output.PDF станет Output_LakeErie.PDF
  • PDF_MULTIPLE_FILES_PAGE_NUMBERВыполните экспорт каждой страницы серии карт в отдельный файл и прибавьте к имени файла номер страницы. Например, Output.PDF станет Output_1.PDF
  • PDF_SINGLE_FILEВыполните экспорт в один многостраничный файловый документ.

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

String
resolution

Целое число, определяющее разрешение файла для экспорта в точках на дюйм (dpi).

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

Integer
image_quality

Строка, определяющая качество выходного изображения.

  • BESTКачество выходного изображения с коэффициентом сжатия 1
  • BETTERКачество выходного изображения с коэффициентом сжатия 2
  • NORMALКачество выходного изображения с коэффициентом сжатия 3
  • FASTERКачество выходного изображения с коэффициентом сжатия 4
  • FASTESTКачество выходного изображения с коэффициентом сжатия 5

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

String
compress_vector_graphics

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

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

Boolean
image_compression

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

  • ADAPTIVEАвтоматически выбирает лучший тип сжатия для каждого изображения на странице. JPEG используется для крупных изображений со множеством уникальных цветов. DEFLATE используется для всех других изображений.
  • JPEGСжатие данных с потерями.
  • DEFLATEСжатие данных без потерь.
  • LZWLempel-Ziv-Welch, сжатие данных без потерь.
  • NONEНет сжатия данных.
  • RLEСжатие с кодированием по длинам серий.

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

String
embed_fonts

Логический параметр, управляющий внедрением шрифтов в файле для экспорта. Внедрение шрифтов позволяет правильно отображать текстовые и символьные маркеры при просмотре документа на компьютере без установленных шрифтов.

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

Boolean
layers_attributes

Строка, управляющая включением слоев PDF и данных объектов PDF (атрибутов) в файл для экспорта.

  • LAYERS_ONLYЭкспорт только слоев PDF.
  • LAYERS_AND_ATTRIBUTESЭкспорт слоев и атрибутов объектов PDF.
  • NONEПараметры не применяются.

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

String
georef_info

Логический параметр, позволяющий экспортировать информацию о системе координат каждого фрейма карты в выходной файл PDF.

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

Boolean
jpeg_compression_quality

Число, управляющее качеством сжатия, если image_compression задано для параметра ADAPTIVE или JPEG. Допустимым является диапазон от 1 до 100. Если значение jpeg_compression_quality равно 100, это обеспечивает наилучшее качество изображений, но при экспорте создаются крупные файлы. Рекомендованный диапазон находится между 70 и 90.

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

Integer
clip_to_elements

Если задано значение True, то компоновка вырезается по наименьшей ограничивающей рамке, включающей все элементы компоновки.

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

Boolean
show_selection_symbology

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

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

Boolean
output_as_image

Если установлено на True, векторные данные будут сохранены как изображение. Выбор этого параметра для карт или компоновок, содержащих векторные слои с высокой плотностью вершин, может значительно уменьшить размер выходного файла. Если выбран экспорт в PDF и опция установлена на True, вы не сможете просматривать слои PDF в выходных данных.

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

Boolean
embed_color_profile

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

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

Boolean

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

getPageNumberFromName (page_name)
ParameterОбъяснениеТип данных
page_name

Номер страницы в индексном слое, который соответствует полю Name, которое использовалось для настройки серии карт.

String

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

ms = layout.mapSeries
pageNumber = ms.getPageNumberFromName("HarborView")
ms.currentPageNumber = pageNumber
refresh ()

Используйте метод refresh в одном из следующих случаев:

  • В индексный слой добавлены новые объекты, или удалены существующие.
  • Были внесены обновления в значения индексного поля.
  • Экстент фрейма карты был изменен при увеличении, перемещении или изменении масштаба карты.
Серия карт сохраняется с исходными настройками, пока метод refresh выполняется, или если проект был сохранен и открыт заново.

Пример кода

MapSeries, пример 1

Следующий скрипт проверяет наличие серий карт, а затем экспортирует две страницы серий в PDF:

import arcpy
import os
import sys
relpath = os.path.dirname(sys.argv[0])

p = arcpy.mp.ArcGISProject(relpath + "\\MapSeries\\US_States.aprx")
l = p.listLayouts()[0]
if not l.mapSeries is None:
    ms = l.mapSeries
    if ms.enabled:
        ms.currentPageNumber = ms.getPageNumberFromName("Rhode Island") 
        ms.exportToPDF(relpath + "\\Output\\Ex1_RI.pdf", "CURRENT", resolution=300)
        ms.currentPageNumber = ms.getPageNumberFromName("Washington") 
        ms.exportToPDF(relpath + "\\Output\\Ex1_WA.pdf", "CURRENT")
MapSeries, пример 2

Следующий скрипт экспортирует каждую страницу серии карт в отдельный файл PNG и использует имя страницы индексного объекта как часть имени выходного:

import arcpy, os, sys
relpath = os.path.dirname(sys.argv[0])

p = arcpy.mp.ArcGISProject(relpath + "\\MapSeries\\US_States.aprx")
l = p.listLayouts()[0]
if not l.mapSeries is None:
  ms = l.mapSeries
  if ms.enabled:
    for pageNum in range(1, ms.pageCount + 1):
      ms.currentPageNumber = pageNum
      print("Exporting {0}".format(ms.pageRow.STATE_NAME))
      pageName = ms.pageRow.STATE_NAME
      l.exportToPNG(os.path.join(relpath, "Output", f"Ex2_{ms.pageRow.STATE_NAME}.png"))
MapSeries, пример 3

Следующий скрипт экспортирует только выбранные страницы в один многостраничный файл PDF:

import arcpy
import os
import sys
relpath = os.path.dirname(sys.argv[0])

p = arcpy.mp.ArcGISProject(relpath + "\\MapSeries\\US_States.aprx")
l = p.listLayouts()[0]

if not l.mapSeries is None:
    ms = l.mapSeries
    if ms.enabled:
        ms = l.mapSeries
        indexLyr = ms.indexLayer
        arcpy.SelectLayerByAttribute_management(indexLyr, "NEW_SELECTION", "SUB_REGION = 'New England'")
        ms.exportToPDF(relpath + "\\Output\\Ex3_SelectedFeatures.pdf", "SELECTED")
MapSeries, пример 4 (серия карт закладок)

Как указывалось ранее, класс MapSeries поддерживает только пространственные серии карт. Однако серии карт закладок могут быть эмулированы без использования класса MapSeries, с помощью приведенного ниже кода. Сначала необходимо создать ссылки на закладки Карты, используя метод listBookmarks. Затем, можно задать информацию о камере MapFrame, используя метод zoomToBookmark. Наконец, экспортируйте Компоновку, используя одну из множества функций экспорта. Этот процесс следует повторить для каждой страницы, необходимой в выходных данных.

import arcpy, os, sys
relpath = os.path.dirname(sys.argv[0])

p = arcpy.mp.ArcGISProject(os.path.join(relpath, "Bookmarks.aprx"))
m = p.listMaps('Great Lakes')[0]
lyt = p.listLayouts('GreatLakes')[0]
mf = lyt.listElements('MAPFRAME_ELEMENT')[0]
for bk in m.listBookmarks():
    mf.zoomToBookmark(bk)
    lyt.exportToPNG(os.path.join(relpath, f'{bk.name}.png'))