BookmarkMapSeries

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

Объект BookmarkMapSeries предоставляет доступ к свойствам и методам для управления серией карт закладок.

Обсуждение

Модуль arcpy.mp поддерживает два типа серий карт: пространственные и закладки. Свойство mapSeries объекта Layout вернет объект mapSeries, если присутствует пространственная серия карт; объект BookmarkMapSeries, если присутствует серия карт закладок, или значение NoneType, если серия карт отсутствует или отключена. Класс BookmarkMapSeries можно использовать для настройки отдельных страниц серии карт во время экспорта. Одним из примеров является разворот, где четные страницы смещены иначе, чем нечетные, чтобы обеспечить место для переплета.

С помощью метода createBookmarkMapSeries можно создать новую серию карт закладок, передав объект MapFrame и, при необходимости, список объектов Bookmark, используемых для создания каждой страницы серии карт закладок. Если вы не передадите список закладок, по умолчанию будут использоваться закладки из объекта Map, связанного с объектом MapFrame. Свойство bookmarks представляет собой список закладок в серии карт. Список закладок можно изменять различными способами и возвращаться к серии карт закладок для управления порядком страниц, отображаемых в приложении или во время экспорта.

Аналогично приложению, с помощью метода export можно экспортировать серию карт в форматы файлов JPEG, PDF, PNG и TIFF. Эти форматы также можно дополнительно настроить с помощью объекта MapSeriesExportOptions, если требуются значения, отличные от значений по умолчанию. При экспорте серии карт поддерживаются все динамические элементы, связанные с ней. Например, динамические текстовые элементы, такие как название страницы, номер страницы, название закладки и многое другое, будут обновляться автоматически. Если зарамочное оформление карты, такое как легенды, фреймы таблиц и диаграмм, настроено на использование ограничений серии карт, эти элементы также будут динамически обновляться.

Примечание:

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

Методы getDefinition и setDefinition предоставляют доступ к свойствам CIM, не доступным объекту BookmarkMapSeries. Дополнительные сведения и примеры кода приведены в разделе справки Доступ к Python CIM.

Свойства

СвойствоОписаниеТип данных
bookmarks
(чтение и запись)

Список закладок, которые будут использоваться в серии карт закладок.

Примечание:

Если вы изменяете список закладок, задав новый, необходимо вызвать метод refresh, чтобы страницы серии карт закладок обновились в приложении.

List
currentBookmark
(только чтение)

Возвращает текущую закладку, отображаемую в серии карт.

Bookmark
currentPageNumber
(чтение и запись)

Текущий номер страницы, соответствующий странице закладки, отображаемой в серии карт. Таким образом задается соответствующая страница закладки. Если вы не уверены в номере страницы, вы можете получить номер страницы на основе названия закладки, используя метод getPageNumberFromName.

Ниже приведен пример задания свойства currentPageNumber, с использованием значения name закладки.

bms.currentPageNumber = bms.getPageNumberFromName('Fenway')
Long
enabled
(чтение и запись)

Определяет, включена ли серия карт.

Подсказка:

Убедитесь, что для свойства задано True, перед тем, как изменить свойства серии карт.

Boolean
mapFrame
(чтение и запись)

Объект MapFrame, связанный с серией карт. Если вы измените фрейм карты на что-то другое, исходные закладки останутся, и вам также потребуется использовать метод refresh.

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

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

Long

Обзор метода

МетодОписание
export (export_format, {mapseries_export_options}, {display_options})

Метод export экспортирует BookmarkMapSeries, используя указанный export_format и, дополнительно, различные mapseries_export_options или display_options.

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}, {output_as_image}, {embed_color_profile}, {pdf_accessibility}, {show_export_count}, {keep_layout_background}, {convert_markers}, {simulate_overprint})

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

Прежние версии:

Этот метод заменен на export в версии 3.4 ArcGIS Pro и остается для использования только в устаревших скриптах. Все усовершенствования и будущие разработки будут осуществляться только методом экспорта.

getDefinition (cim_version)

Получает определение CIM для серий карт закладок.

getPageNumberFromName (page_name)

Возвращает номер страницы, соответствующий названию отображаемой в данный момент страницы серии карт закладок.

refresh ()

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

setDefinition (definition_object)

Задает определение CIM для закладок серий карт.

Методы

export (export_format, {mapseries_export_options}, {display_options})
ПараметрОписаниеТип данных
export_format

The supported export_format objects are JPEGFormat, PDFFormat, PNGFormat, and TIFFFormat.

Object
mapseries_export_options

The MapSeriesExportOptions object is only needed if there are changes to its default property values.

Object
display_options

The DisplayOptions object that includes changes to the default antialiasing property values.

Object

Более подробную информацию и примеры кода можно найти в разделе справки MapSeriesExportOptions и DisplayOptions.

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}, {output_as_image}, {embed_color_profile}, {pdf_accessibility}, {show_export_count}, {keep_layout_background}, {convert_markers}, {simulate_overprint})
ПараметрОписаниеТип данных
out_pdf

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

String
page_range_type

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

  • ALLAll pages are exported.
  • CURRENTThe active or current page is exported.
  • RANGEOnly pages listed in the page_range_string parameter are exported.
  • SELECTEDDoes not apply to bookmark map series.
    Примечание:

    This option can only be used for a spatial map series in which index features can be selected. If it is used with a bookmark map series, all pages will be exported.

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

String
page_range_string

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

String
multiple_files

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

  • 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

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

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

Integer
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

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

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

Boolean
image_compression

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

  • 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.
  • JPEG2000Offers higher quality compression with smaller file size than JPEG. This compression is lossless if jpeg_compression_quality is set to 100.
  • DEFLATEA lossless data compression.
  • LZWLempel-Ziv-Welch, a lossless data compression.
  • NONECompression is not applied.
  • RLERun-length encoded compression.

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

String
embed_fonts

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

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

Boolean
layers_attributes

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

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

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

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

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

Boolean
embed_color_profile

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

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

Boolean
pdf_accessibility

Выведите файл PDF с тегами, в котором текст может быть прочитан программами чтения с экрана или другими вспомогательными технологиями. Файл PDF с тегами может включать альтернативный текст - текстовое описание графического элемента, который программа чтения с экрана использует для описания элемента - для фреймов карты, изображений и фреймов диаграммы. Альтернативный текст добавляется на Панель элементов для каждого элемента.

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

Boolean
show_export_count

Если установлено значение True, вы увидите статус каждой экспортируемой страницы, отображаемый в Python shell.

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

Boolean
keep_layout_background

Если задан как True, белый цвет фона будет включен в экспорт.

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

Boolean
convert_markers

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

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

Boolean
simulate_overprint

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

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

Boolean

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

Прежние версии:

Этот метод заменен на export в версии 3.4 ArcGIS Pro и остается для использования только в устаревших скриптах. Все усовершенствования и будущие разработки будут осуществляться только методом экспорта.

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

A string that represents the major version of the CIM that will be used.

  • V2The 2.x version of the CIM will be used.
  • V3The 3.x version of the CIM will be used.
String
Возвращаемое значение
Тип данныхОписание
Object

Возвращает определение CIM для BookmarkMapSeries.

Более подробно о работе с CIM и примеры использования см. в разделе Доступ к Python CIM.

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

The name of the Bookmark based on the Name field that was used to set up the map series.

String

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

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

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

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

A modified CIM definition object originally retrieved using getDefinition.

Object

Более подробно о работе с CIM и примеры использования см. в разделе Доступ к Python CIM.

Пример кода

BookmarkMapSeries, пример 1

Следующий скрипт проверяет наличие серий карт закладок и экспортирует две страницы в PDF на основе имен закладок. Поскольку он экспортирует по одному PDF-файлу за раз, класс MapSeriesExportOptions настроен на экспорт страницы CURRENT. Объект PDFFormat необходимо создать только один раз, поскольку свойство filePath изменяется между экспортами.

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

p = arcpy.mp.ArcGISProject(os.path.join(relpath, 'GreatLakes', 'GreatLakes.aprx'))
lyt = p.listLayouts('Layout_BMS')[0]
bms = lyt.mapSeries

#Create a new PDF format and change the resolution from its default value of 96
pdf = arcpy.mp.CreateExportFormat('PDF')
pdf.resolution = 300

#Modify map series export options to export only the current page
msOpt = arcpy.mp.CreateExportOptions('MAPSERIES')
msOpt.setExportPages('CURRENT')

if isinstance(bms, arcpy._mp.BookmarkMapSeries):
  if bms.enabled:
    bms.currentPageNumber = bms.getPageNumberFromName("Lake Superior")
    pdf.filePath = os.path.join(relpath, 'Output', 'Ex1_LakeSuperior.pdf')
    bms.export(pdf, msOpt)
    bms.currentPageNumber = bms.getPageNumberFromName("Lake Huron") 
    pdf.filePath = os.path.join(relpath, 'Output', 'Ex1_LakeHuron.pdf')
    bms.export(pdf, msOpt)
BookmarkMapSeries, пример 2

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

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

p = arcpy.mp.ArcGISProject(os.path.join(relpath, 'GreatLakes', 'GreatLakes.aprx'))
lyt = p.listLayouts('Layout_BMS')[0]
bms = lyt.mapSeries

#Create a new PNG format that uses only defaults
bmp = arcpy.mp.CreateExportFormat('BMP')

if ((type(bms).__name__ == 'BookmarkMapSeries')):
  if bms.enabled:
    for pageNum in range(1, bms.pageCount + 1):  #All pages, zero based index
      bms.currentPageNumber = pageNum
      bkmkName = bms.currentBookmark.name
      print(f"Exporting {bkmkName}")  
      bmp.filePath =os.path.join(relpath,'Output', f'Ex2_{bkmkName}.bmp')
      lyt.export(bmp)
BookmarkMapSeries, пример 3

Следующий скрипт создает объект Map, объект Layout и объект MapFrame. Затем он добавляет файл слоя на карту и выполняет итерацию по каждому объекту, чтобы создать список закладок, используя геометрию объекта для установки экстента закладки. Затем он создает серию карт закладок и использует Python CIM access для изменения некоторых свойств CIM, не доступных объекту BookmarkMapSeries. Примерами являются задание номера начальной страницы и округление масштаба. Наконец, скрипт экспортирует серии карт в документ PDF.

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

#Function used to create a rectangle where the anchor point is lower left corner
def MakeRec_LL(llx, lly, w, h):
    xyRecList = [[llx, lly], [llx, lly+h], [llx+w,lly+h], [llx+w,lly], [llx,lly]]
    array = arcpy.Array([arcpy.Point(*coords) for coords in xyRecList])
    rec = arcpy.Polygon(array)
    return rec

p = arcpy.mp.ArcGISProject(os.path.join(relpath, 'GreatLakes', 'GreatLakes.aprx'))

#Create a new map, layout, and map frame
m = p.createMap('New Map', 'MAP')
lyt = p.createLayout(8.5, 11, 'INCH', 'New Layout')
mf = lyt.createMapFrame(MakeRec_LL(0.5,5.5,7.5,5), m, "New Map Frame")

#Add a layer file and zoom to each feature and create a bookmark and add to list
lyrFile = arcpy.mp.LayerFile(os.path.join(relpath, 'GreatLakes', 'GreatLakes.lyrx'))
lyr = m.addLayer(lyrFile)[0]
bkmkList = []
for row in arcpy.da.SearchCursor(lyr, ['SHAPE@', 'NAME']):
  mf.camera.setExtent(row[0].extent)
  mf.camera.scale = mf.camera.scale * 1.1 #add a slight buffer
  bkmkList.append(mf.createBookmark(row[1]))

#Create and export a bookmark map series
bms = lyt.createBookmarkMapSeries(mf, bkmkList)

#Modify CIM properties
bms_cim = bms.getDefinition('V3')
bms_cim.startingPageNumber = 2
bms.scaleRounding = 10000
bms.setDefinition(bms_cim)

#Export to PDF
pdf = arcpy.mp.CreateExportFormat('PDF', os.path.join(relpath, 'Output', 'Ex3_NewBMS.pdf'))
bms.export(pdf)
BookmarkMapSeries, пример 4

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

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

p = arcpy.mp.ArcGISProject(os.path.join(relpath, 'GreatLakes', 'GreatLakes.aprx'))
lyt = p.listLayouts('Layout_BMS')[0]
bms = lyt.mapSeries

if isinstance(bms, arcpy._mp.BookmarkMapSeries):
  if bms.enabled:
    bms_cim = bms.getDefinition('V3')
    sortList = sorted(bms_cim.pages, key=lambda CIMBookmarkMapSeriesPage: CIMBookmarkMapSeriesPage.bookmarkName)
    bms_cim.pages = sortList
    bms.setDefinition(bms_cim)
    pdf = arcpy.mp.CreateExportFormat('PDF', os.path.join(relpath, 'Output', 'Ex4_Sorted.pdf'))
    bms.export(pdf)
BookmarkMapSeries, пример 5

Следующий скрипт экспортирует все страницы из пространственной серии карт в один PDF-файл, экспортирует все страницы из серии карт закладок в другой PDF-файл и объединяет два результирующих PDF-файла в один новый PDF.

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

p = arcpy.mp.ArcGISProject(os.path.join(relpath, 'GreatLakes', 'GreatLakes.aprx'))
#Export spatial map series
sms_lyt = p.listLayouts('Layout_MS')[0]                                  
sms = sms_lyt.mapSeries
if ((type(sms).__name__ == 'MapSeries')):
  if sms.enabled:
      pdf = arcpy.mp.CreateExportFormat('PDF', os.path.join(relpath, 'Output', 'Temp_sms.pdf'))
      sms.export(pdf)

#Export bookmark map series
bms_lyt = p.listLayouts('Layout_BMS')[0]
bms = bms_lyt.mapSeries
if ((type(bms).__name__ == 'BookmarkMapSeries')): 
  if bms.enabled:
      pdf = arcpy.mp.CreateExportFormat('PDF', os.path.join(relpath, 'Output', 'Temp_bms.pdf'))
      bms.export(pdf)

#Combine PDFs and remove temporary files
comboPDF = arcpy.mp.PDFDocumentCreate(os.path.join(relpath, 'Output', 'Ex5_Combo.pdf'))
comboPDF.appendPages(os.path.join(relpath, 'Output', 'Temp_sms.pdf'))
comboPDF.appendPages(os.path.join(relpath, 'Output', 'Temp_bms.pdf'))
comboPDF.saveAndClose()

os.remove(os.path.join(relpath, 'Output', 'Temp_sms.pdf'))
os.remove(os.path.join(relpath, 'Output', 'Temp_bms.pdf'))