Вставка дополнительных страниц в атлас

ArcGIS предоставляет все инструменты для создания атласов или альбомов карт в печатном виде или в формате Adobe PDF. Альбом (или атлас) — это совокупность страниц, которые вместе выводятся на экспорт или на печать. Многие из этих страниц содержат карты, но некоторые страницы могут содержать какой-либо текст, информацию в табличном виде, таблицу содержания или титульные листы и другие виды данных.

Многие атласы содержат вспомогательные (дополнительные) документы. Это может быть текст отчета, таблицы, индексы и другие дополнительные данные. Создать такие типы атласов можно, пользуясь комбинацией Многостраничной компоновки ArcMap и скрипта Python arcpy.mapping.

Пример страниц отчета атласа

В вышеприведенном примере показан топографический атлас округа Аренак, штат Мичиган. Этот атлас включает в себя ряд дополнительных страниц с текстовой информацией, диаграммами и табличными данными. Такой документ можно создать при помощи многостраничной компоновки и скрипта Python arcpy.mapping.

Более подробную информацию см. в разделе Создание многостраничных компоновок.

В этом примере предполагается следующее:

ПодсказкаПодсказка:

Титульный лист, обзорную карту, отчет и страницы диаграмм можно создать в ArcMap. Только составьте содержание для каждой страницы и экспортируйте каждую страницу в отдельный PDF-файл.

Поскольку атлас отображает нумерацию страниц, вам следует удостовериться, что нумерация страниц, которая используется в Многостраничной компоновке, учитывает дополнительные страницы, которые вы собираетесь вставить в атлас. Например, здесь показан вид таблицы индексного слоя Многостраничной компоновки. Нумерация страниц (PageNumber) была создана и заполнена с помощью инструмента геообработки Класс объектов индексной сетки (Grid_Index_Features) при создании сетки. Эта нумерация страниц окажется неверна, когда вы будете вставлять страницы между страниц карты. Необходимо создать новое поле для нумерации страниц и соответствующим образом присвоить значения. Здесь вы видите новое поле Новая нумерация страниц, которое было создано и заполнено значениями, учитывающими вставленные страницы.

Пример нового поля нумерации страниц в таблице атрибутов индексного слоя Многостраничной компоновки

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

Пример Поля нумерации страниц (Page Number Field) пользовательского интерфейса Настройка многостраничной компоновки (Data Driven Pages Setup)

Также при отображении нумерации страниц убедитесь, что используете правильные текстовые элементы. Не используйте функцию Номер и общее число страниц компоновки (Data Driven Page with Count), поскольку она учитывает только полное число страниц многостраничной компоновки. Она не включает другие страницы окончательной версии атласа, такие как титульный лист или страницы отчета. Вместо этого используйте функцию Номер страницы компоновки (Data Driven Page Number) и сочетайте этот динамический текст со статическим текстом, показывающим общее число страниц, например, Страница <dyn type="page" property="number"/> из 26.

Подготовив документ карты и PDF-файлы, можно выполнить приведенный ниже код, чтобы создать PDF-файл с финальной версией атласа. Код можно выполнить в Окне Python или в автономном приложении Python.

Хотя специальный код в этом разделе применяется к приведенному выше примеру атласа, представленные здесь действия и советы можно использовать для создания собственных атласов.

Вставка дополнительных страниц в атлас PDF.

import arcpy, os

# Create an output location variable
outDir = r"C:\temp\MBExample\final_output"  

# Create a new, empty pdf document in the specified output location folder
finalpdf_filename = outDir + r"\ArenacMB.pdf"
if os.path.exists(finalpdf_filename):
  os.remove(finalpdf_filename)
finalPdf = arcpy.mapping.PDFDocumentCreate(finalpdf_filename) 

# Add the title page to the pdf
finalPdf.appendPages(r"C:\temp\MBExample\ancillary_pages\TitlePage.pdf")

# Add the overview map to the pdf
finalPdf.appendPages(r"C:\temp\MBExample\maps\IndexMap.pdf")

# Export the Data Driven Pages to a temporary pdf and then add it to the
# final pdf. Alternately, if your Data Driven Pages have already been
# exported, simply append that document to the final pdf.
#
mxdPath = r"C:\temp\MBExample\maps\ArenacDDP Reports.mxd"
tempMap = arcpy.mapping.MapDocument(mxdPath)
tempDDP = tempMap.dataDrivenPages
temp_filename = r"C:\temp\MBExample\temp_pdfs\tempDDP.pdf"
if os.path.exists(temp_filename):
  os.remove(temp_filename)
tempDDP.exportToPDF(temp_filename, "ALL")
finalPdf.appendPages(temp_filename)

# Insert the pdf pages containing the reports and graphs into the final pdf
#
finalPdf.insertPages(r"C:\temp\MBExample\ancillary_pages\Report_pg4.pdf", 4)
finalPdf.insertPages(r"C:\temp\MBExample\ancillary_pages\Report_pg5.pdf", 5)
finalPdf.insertPages(r"C:\temp\MBExample\ancillary_pages\Report_pg7.pdf", 7)

# Update the properties of the final pdf
finalPdf.updateDocProperties(pdf_open_view="USE_THUMBS",
                             pdf_layout="SINGLE_PAGE")

# Save your result
finalPdf.saveAndClose()

# Delete variables
del finalPdf

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

ПодсказкаПодсказка:

В языках программирования, таких как Python, обратная косая черта (\) используется как символ-escape. Например, \n обозначает перевод строки, а \t обозначает табуляцию. Указывая путь, можно использовать обычную косую черту (/) вместо обратной косой черты. Две обратные косые черты можно использовать вместо одной во избежание синтаксических ошибок. Также можно использовать строковой литерал, поставив букву r перед строкой, содержащей обратную косую черту, чтобы она была проинтерпретирована правильно.

Более подробно см. класс "Документы PDF" в arcpy.mapping.

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

Следующее действие — добавление страниц карты. Для этого вы должны иметь документ карты с уже включенной Многостраничной компоновкой (Data Driven Pages). В нашем примере документом карты является ArenacDDP Reports.

Более подробно см. класс "Документ карты" (MapDocument class) и класс "Многостраничная компоновка" (DataDrivenPages class) в arcpy.mapping.

Далее вставьте страницы PDF, содержащие отчеты и диаграммы, в окончательный файл PDF.

В заключение код обновляет свойства, а затем сохраняет и закрывает финальный PDF-файл.

Связанные темы

9/11/2013