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

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

Примечание:

Если номер страницы задан с помощью строки, определенной полем, currentPageNumber может быть задан как строка, например currentPageNumber = 'iv'.

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}, {pdf_accessibility})

Экспортирует выбранный поднабор страниц в файл формата 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}, {pdf_accessibility})
ПараметрОписаниеТип данных
out_pdf

A string that represents the path and file name of the output export file.

String
page_range_type

The string value that designates how the pages will be printed.

  • ALLAll pages are exported.
  • CURRENTThe active or current page is exported.
  • RANGEOnly pages listed in the page_range_string parameter are exported.
  • SELECTEDSelected index layer features/pages are exported.

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

String
page_range_string

A string that identifies the pages to be exported if the RANGE option in the page_range_type parameter is used (for example, 1, 3, 5-12). If any other page_range_type value is used, the page_range_string value will be ignored.

String
multiple_files

A string that controls how the output PDF file is created. By default, all pages are exported into a single, multipage document. The default is PDF_SINGLE_FILE.

  • PDF_MULTIPLE_FILES_PAGE_NAMEExport each map series page to an individual file and append the page name to the file name. For example, Output.PDF will become Output_LakeErie.PDF
  • PDF_MULTIPLE_FILES_PAGE_NUMBERExport each map series page to an individual file and append the page number to the file name. For example, Output.PDF will become Output_1.PDF
  • PDF_SINGLE_FILEExport into a multipage, single file document.

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

String
resolution

An integer that defines the resolution of the export file in dots per inch (dpi).

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

Integer
image_quality

A string that defines output image quality.

  • BESTAn output image quality resample ratio of 1
  • BETTERAn output image quality resample ratio of 2
  • NORMALAn output image quality resample ratio of 3
  • FASTERAn output image quality resample ratio of 4
  • FASTESTAn output image quality resample ratio of 5

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

String
compress_vector_graphics

A Boolean that controls the compression of vector and text portions of the output file. Image compression is defined separately.

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

Boolean
image_compression

A string that defines the compression scheme used to compress image or raster data in the output file.

  • ADAPTIVEAutomatically selects the best compression type for each image on the page. JPEG will be used for large images with many unique colors. DEFLATE will be used for all other images.
  • JPEGA lossy data compression.
  • DEFLATEA lossless data compression.
  • LZWLempel-Ziv-Welch, a lossless data compression.
  • NONECompression is not applied.
  • RLERun-length encoded compression.

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

String
embed_fonts

A Boolean that controls the embedding of fonts in an export file. Font embedding allows text and character markers to be displayed correctly when the document is viewed on a computer that does not have the necessary fonts installed.

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

Boolean
layers_attributes

A string that controls the inclusion of PDF layers and PDF object data (attributes) in the export file.

  • LAYERS_ONLYExport PDF layers only.
  • LAYERS_AND_ATTRIBUTESExport PDF layers and feature attributes.
  • NONENo setting is applied.

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

String
georef_info

A Boolean that enables the export of coordinate system information for each map frame into the output PDF file.

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

Boolean
jpeg_compression_quality

A number that controls the compression quality value when image_compression is set to ADAPTIVE or JPEG. The valid range is 1 through 100. A jpeg_compression_quality of 100 provides the best quality images but creates large export files. The recommended range is 70 through 90.

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

Integer
clip_to_elements

If set to True, the layout is clipped to the smallest bounding box that includes all layout elements.

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

Boolean
show_selection_symbology

A Boolean that controls whether the selection symbology should be displayed in the output.

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

Boolean
output_as_image

If set to True, vector content can be saved as an image. Selecting this option for maps or layouts that contain vector layers with a high density of vertices can reduce the output file size. When exporting to PDF and this option is set to True, you cannot view PDF layers in the output.

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

Boolean
embed_color_profile

If set to True, color profile information is embedded in the image's metadata.

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

Boolean
pdf_accessibility

Output a tagged PDF file where text can be read by screen readers or other assistive technology. A tagged PDF file can include alt text—a text description of a graphic element that a screen reader uses to describe the element—for map frames, pictures, and chart frames. Alt text is added in the Element Pane for each element.

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

Boolean

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

getPageNumberFromName (page_name)
ПараметрОписаниеТип данных
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.management.SelectLayerByAttribute(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'))