Skip to main content

export

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

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

Обсуждение

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

С помощью этого метода createSpatialMapSeries можно создать новую пространственную серию карт, передав объект MapFrame, значения index_layer и name_field, и другие необязательные параметры.

Объекты, отображаемые в пространственной серии карт, можно дополнительно фильтровать с помощью запросов к странице, где значения в заданном поле слоя сопоставляются с именем текущей страницы серии карт. Фильтр применяется, только если включены серии карт. Класс Layer обеспечивает доступ к свойству pageQuery и методу setPageQuery.

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

Примечание:

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

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

Синтаксис

export()

Свойства

Имя Объяснение Тип данных

clipToIndexFeature

(Чтение / Запись)

Если задано True, настройки Map clipLayers будут применены текущему индексному объекту. Чтобы изменить или очистить clipLayers на карте, для clipToIndexFeature должно быть задано значение False.

Boolean

currentPageNumber

(Чтение / Запись)

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

Примечание:

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

Long

enabled

(Чтение / Запись)

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

Подсказка:

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

Boolean

indexLayer

(Только для чтения)

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

Layer

mapFrame

(Чтение / Запись)

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

MapFrame

pageCount

(Только для чтения)

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

Long

pageNameField

(Только для чтения)

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

Field

pageRow

(Только для чтения)

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

Row

selectedIndexFeatures

(Только для чтения)

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

List

Методы

export(export_format, {mapseries_export_options}, {display_options})

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

Имя Объяснение Тип данных

export_format

Поддерживаемыми объектами формата экспорта являются: JPEGFormat ,, PDFFormat, PNGFormat и TIFFFormat.

Object

mapseries_export_options

(Дополнительный)

Объект MapSeriesExportOptions, который включает в себя изменения значений свойств по умолчанию.

Object

display_options

(Дополнительный)

Объект DisplayOptions, который включает в себя изменения значений свойств antialiasing по умолчанию.

Object

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

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

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

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

Имя Объяснение Тип данных

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.

  • ALL—All pages are exported.

  • CURRENT—The active or current page is exported.

  • RANGE—Only pages listed in the page_range_string parameter are exported.

  • SELECTED—Selected 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_NAME—Export 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_NUMBER—Export 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_FILE—Export 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.

  • BEST—An output image quality resample ratio of 1

  • BETTER—An output image quality resample ratio of 2

  • NORMAL—An output image quality resample ratio of 3

  • FASTER—An output image quality resample ratio of 4

  • FASTEST—An 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.

  • ADAPTIVE—Automatically 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.

  • JPEG—A lossy data compression.

  • JPEG2000—Offers higher quality compression with smaller file size than JPEG. This compression is lossless if jpeg_compression_quality is set to 100.

  • DEFLATE—A lossless data compression.

  • LZW—Lempel-Ziv-Welch, a lossless data compression.

  • NONE—Compression is not applied.

  • RLE—Run-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_ONLY—Export PDF layers only.

  • LAYERS_AND_ATTRIBUTES—Export PDF layers and feature attributes.

  • NONE—No 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

show_export_count

(Дополнительный)

If set to True, you will see the status of each page being exported displayed in the Python shell.

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

Boolean

keep_layout_background

(Дополнительный)

If set to True, the white background will be included in the export.

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

Boolean

convert_markers

(Дополнительный)

A Boolean that controls the conversion of character-based marker symbols to polygons. This allows the symbols to appear correctly if the symbol font is not available or cannot be embedded. However, setting this parameter to True disables font embedding for all character-based marker symbols, which can result in a change in their appearance.

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

Boolean

simulate_overprint

(Дополнительный)

Sometimes called soft proofing, simulating overprinting shows a representation of how overlapping areas of ink will appear when printed on a page. You set up overprinting on symbol layers.

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

Boolean

getDefinition(cim_version)

Возвращает определение CIM для пространственных серий карт.

Имя Объяснение Тип данных

cim_version

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

  • V2—The 2.x version of the CIM will be used.

  • V3—The 3.x version of the CIM will be used.

String

Возвращаемое значение

Тип данных Объяснение

Object

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

getPageNumberFromName(page_name)

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

Имя Объяснение Тип данных

page_name

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

String

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

refresh()

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

setDefinition(definition_object)

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

Имя Объяснение Тип данных

definition_object

A modified CIM definition object originally retrieved using getDefinition.

Object

Пример кода

MapSeries, пример 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_MS')[0]
sms = 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 the map series export options to export only the current page
msOpt = arcpy.mp.CreateExportOptions('MAPSERIES')
msOpt.setExportPages('CURRENT')

if isinstance(sms, arcpy._mp.MapSeries):
  if sms.enabled:
    sms.currentPageNumber = sms.getPageNumberFromName("Lake Superior")
    pdf.filePath = os.path.join(relpath, 'Output', 'Ex1_LakeSuperior.pdf')
    sms.export(pdf, msOpt)
    sms.currentPageNumber = sms.getPageNumberFromName("Lake Huron")
    pdf.filePath = os.path.join(relpath, 'Output', 'Ex1_LakeHuron.pdf')
    sms.export(pdf, msOpt)
MapSeries, пример 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_MS')[0]
sms = lyt.mapSeries

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

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

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

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_MS')[0]
sms = lyt.mapSeries

#Create a new PDF format using defaults
pdf = arcpy.mp.CreateExportFormat('PDF', os.path.join(relpath, 'Output', 'Ex3_QueriedLakes.pdf'))

#Set up optional mapseries settings to export only the current page
msOpt = arcpy.mp.CreateExportOptions('MAPSERIES')
msOpt.setExportPages('SELECTED')

if isinstance(sms, arcpy._mp.MapSeries):
  if sms.enabled:
    indexLyr = sms.indexLayer
    arcpy.SelectLayerByAttribute_management(indexLyr, 'NEW_SELECTION','AREA > 10000')
    sms.export(pdf, msOpt)
    arcpy.SelectLayerByAttribute_management(indexLyr, 'CLEAR_SELECTION')
MapSeries, пример 4

Следующий скрипт создает объект Map, объект Layout и объект MapFrame. Затем он создает пространственную серию карт и включает вырезание карты, установив для clipMapToIndexFeature значение True. Он использует доступ Python CIM для изменения некоторых свойств CIM, которые не доступны объекту MapSeries. Примерами являются настройка номера начальной страницы, округление масштаба и вырезание данных в объект индекса карт. Наконец, скрипт экспортирует серии карт в документ 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 and add index layer
m = p.createMap('New Map', 'MAP')
lyrFile = arcpy.mp.LayerFile(os.path.join(relpath, 'GreatLakes', 'GreatLakes.lyrx'))
lyr = m.addLayer(lyrFile)[0]

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

#Create and export a spatial map series
sms = lyt.createSpatialMapSeries(mf, lyr, 'NAME')
sms.clipToIndexFeature = true

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

#Export to PDF
pdf = arcpy.mp.CreateExportFormat('PDF', os.path.join(relpath, 'Output', 'Ex4_NewSMS.pdf'))
sms.export(pdf)
MapSeries, пример 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'))