ArcGIS предоставляет все инструменты для создания атласов или альбомов карт в печатном виде или в формате Adobe PDF. Альбом (или атлас) — это совокупность страниц, которые вместе выводятся на экспорт или на печать. Многие из этих страниц содержат карты, но некоторые страницы могут содержать какой-либо текст, информацию в табличном виде, таблицу содержания или титульные листы и другие виды данных.
Многие атласы содержат вспомогательные (дополнительные) документы. Это может быть текст отчета, таблицы, индексы и другие дополнительные данные. Создать такие типы атласов можно, пользуясь комбинацией Многостраничной компоновки ArcMap и скрипта Python arcpy.mapping.
В вышеприведенном примере показан топографический атлас округа Аренак, штат Мичиган. Этот атлас включает в себя ряд дополнительных страниц с текстовой информацией, диаграммами и табличными данными. Такой документ можно создать при помощи многостраничной компоновки и скрипта Python arcpy.mapping.
Более подробную информацию см. в разделе Создание многостраничных компоновок.
В этом примере предполагается следующее:
- У вас есть документ карты с Многостраничной компоновкой.
Этот пример кода работает с примером простого справочного атласа, который показан в разделе Построение атласов в ArcGIS.
Вы можете создать этот атлас заново, выполнив следующие шаги, описанные в данных разделах справки: - У вас есть файлы PDF, содержащие отчеты и диаграммы.
- У вас имеется PDF-файл для титульного листа атласа.
- У вас имеется файл PDF, содержащий страницу обзорной карты.
Поскольку атлас отображает нумерацию страниц, вам следует удостовериться, что нумерация страниц, которая используется в Многостраничной компоновке, учитывает дополнительные страницы, которые вы собираетесь вставить в атлас. Например, здесь показан вид таблицы индексного слоя Многостраничной компоновки. Нумерация страниц (PageNumber) была создана и заполнена с помощью инструмента геообработки Класс объектов индексной сетки (Grid_Index_Features) при создании сетки. Эта нумерация страниц окажется неверна, когда вы будете вставлять страницы между страниц карты. Необходимо создать новое поле для нумерации страниц и соответствующим образом присвоить значения. Здесь вы видите новое поле Новая нумерация страниц, которое было создано и заполнено значениями, учитывающими вставленные страницы.
Перед созданием Многостраничной компоновки убедитесь, что вы выбрали правильное поле для поля нумерации страниц.
Также при отображении нумерации страниц убедитесь, что используете правильные текстовые элементы. Не используйте функцию Номер и общее число страниц компоновки (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-файл является последним результатом выполнения этого скрипта.
Более подробно см. класс "Документы PDF" в arcpy.mapping.
Следующие строки кода предназначены для добавления титульного листа и обзора карт к финальному PDF-файлу. Этот пример предполагает, что у вас уже имеются PDF-документы, которые можно использовать для титульного листа и обзора карт.
Следующее действие — добавление страниц карты. Для этого вы должны иметь документ карты с уже включенной Многостраничной компоновкой (Data Driven Pages). В нашем примере документом карты является ArenacDDP Reports.
Более подробно см. класс "Документ карты" (MapDocument class) и класс "Многостраничная компоновка" (DataDrivenPages class) в arcpy.mapping.
Далее вставьте страницы PDF, содержащие отчеты и диаграммы, в окончательный файл PDF.
В заключение код обновляет свойства, а затем сохраняет и закрывает финальный PDF-файл.