Добавление к атласу титульного листа и страницу обзора карт
ArcGIS предоставляет все инструменты для создания атласов или альбомов карт в печатном виде или в формате Adobe PDF. Альбом (или атлас) — это совокупность страниц, которые вместе выводятся на экспорт или на печать. Многие из этих страниц содержат карты, но некоторые страницы могут содержать какой-либо текст, информацию в табличном виде, таблицу содержания или титульные листы и другие виды данных.
Более полный атлас включает в себя титульный лист и страницу указателя карты (обзорной карты). Для такого атласа требуется сочетание функции многостраничной компоновки ArcMap и программного скрипта Python arcpy.mapping. При помощи функции многостраничной компоновки в одном документе карты (с одной компоновкой) создаются страницы атласа, а страница с указателем карты создается в другом документе. Титульный лист может быть создан в еще одном документе карты, либо в другом программном обеспечении в виде PDF-документа. Скрипт arcpy.mapping соединяет эти элементы в единый альбом карт.
В вышеприведенном примере показан топографический атлас округа Аренак, штат Мичиган. Этот атлас включает в себя титульный лист и страницу с обзорной картой. Такой документ можно создать при помощи многостраничной компоновки и скрипта Python arcpy.mapping.
Более подробную информацию см. в разделе Создание многостраничных компоновок.
В этом примере предполагается следующее:
- У вас есть документ карты с включенной многостраничной компоновкой.
Этот пример кода работает с примером простого справочного атласа, который показан в разделе Построение атласов в ArcGIS.
Вы можете создать этот атлас заново, выполнив следующие шаги, описанные в данных разделах справки: - У вас имеется PDF-файл для титульного листа атласа.
- У вас имеется файл PDF, содержащий страницу обзорной карты.
Титульный лист и обзорную карту можно создать в ArcMap. Только составьте содержание для каждой страницы и экспортируйте каждую страницу в отдельный PDF-файл.
Поскольку в атласе отображается нумерация страниц, следует удостовериться, что номер первой страницы в многостраничной компоновке указан с учетом всех предшествующих страниц финальной версии атласа. В этом примере перед непосредственными страницами карт идут две страницы. Итак, карты начинаются со страницы 3. Убедитесь, что в пункте Номер начальной страницы (Starting Page Number) в диалоговом окне Настройка многостраничной компоновки (Setup Data Driven Pages) указано значение 3.
Также при отображении нумерации страниц убедитесь, что используете правильные текстовые элементы. Не используйте функцию Номер и общее число страниц компоновки (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 directory variable
#
outDir = r"C:\temp\MBExample\final_output"
# Create a new, empty pdf document in the specified output directory
#
finalpdf_filename = outDir + r"\FinalMB.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 index 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.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)
# 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, tempMap, tempDDP
Первые строки кода импортируют необходимые модули, создают переменную местоположения, куда будет сохранена окончательная PDF-версия атласа, и создают новый, пустой PDF-документ в указанной папке выходного местоположения. Этот PDF-файл является последним результатом выполнения этого скрипта.
В языках программирования, таких как Python, обратная косая черта (\) используется как символ-escape. Например, \n обозначает перевод строки, а \t обозначает табуляцию. Указывая путь, можно использовать обычную косую черту (/) вместо обратной косой черты. Две обратные косые черты можно использовать вместо одной во избежание синтаксических ошибок. Также можно использовать строковой литерал, поставив букву r перед строкой, содержащей обратную косую черту, чтобы она была проинтерпретирована правильно.
Более подробно см. класс "Документы PDF" в arcpy.mapping.
Следующие строки кода предназначены для добавления титульного листа и обзора карт к финальному PDF-файлу. Этот пример предполагает, что у вас уже имеются PDF-документы, которые можно использовать для титульного листа и обзора карт.
Следующее действие — добавление страниц карты. Для этого вы должны иметь документ карты с уже включенной Многостраничной компоновкой (Data Driven Pages). В нашем примере этим документом является ArenacDDP.mxd.
Более подробно см. класс "Документ карты" (MapDocument class) и класс "Многостраничная компоновка" (DataDrivenPages class) в arcpy.mapping.
В заключение код обновляет свойства, а затем сохраняет и закрывает финальный PDF-файл.