Сводка
Предоставляет доступ к пространственным сериям карт в Компоновке, в проекте 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) | 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_SINGLE_FILE) | String |
resolution | Целое число, определяющее разрешение файла для экспорта в точках на дюйм (dpi). (Значение по умолчанию — 96) | Integer |
image_quality | Строка, определяющая качество выходного изображения.
(Значение по умолчанию — BEST) | String |
compress_vector_graphics | Логический параметр, управляющий сжатием векторных и текстовых частей выходного файла. Сжатие изображения определяется отдельно. (Значение по умолчанию — True) | Boolean |
image_compression | Строка, которая определяет схему сжатия, используемую для сжатия изображения или растровых данных в выходном файле.
(Значение по умолчанию — ADAPTIVE) | String |
embed_fonts | Логический параметр, управляющий внедрением шрифтов в файле для экспорта. Внедрение шрифтов позволяет правильно отображать текстовые и символьные маркеры при просмотре документа на компьютере без установленных шрифтов. (Значение по умолчанию — True) | Boolean |
layers_attributes | Строка, управляющая включением слоев PDF и данных объектов PDF (атрибутов) в файл для экспорта.
(Значение по умолчанию — 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 в одном из следующих случаев:
- В индексный слой добавлены новые объекты, или удалены существующие.
- Были внесены обновления в значения индексного поля.
- Экстент фрейма карты был изменен при увеличении, перемещении или изменении масштаба карты.
Пример кода
Следующий скрипт проверяет наличие серий карт, а затем экспортирует две страницы серий в 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")
Следующий скрипт экспортирует каждую страницу серии карт в отдельный файл 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"))
Следующий скрипт экспортирует только выбранные страницы в один многостраничный файл 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 поддерживает только пространственные серии карт. Однако серии карт закладок могут быть эмулированы без использования класса 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'))