ArcGIS предоставляет все инструменты для создания атласов или альбомов карт в печатном виде или в формате Adobe PDF. Альбом (или атлас) — это совокупность страниц, которые вместе выводятся на экспорт или на печать. Многие из этих страниц содержат карты, но некоторые страницы могут содержать какой-либо текст, информацию в табличном виде, таблицу содержания или титульные листы и другие виды данных.
При двусторонней печати атласа необходимо принимать во внимание отступ от края страницы. Этот отступ требуется для переплета страниц атласа. Часто такой атлас представляет собой серию карт с последовательными экстентами, так же как и справочный альбом карт. Однако, в отличие от простого справочного альбома карт, для такого атласа необходимо две компоновки страницы в двух документах карты — для левых и правых страниц. Экстенты альбома карт определяются при помощи многостраничной компоновки. В обоих документах карты будет одинаковый набор страниц. Скрипт Python arcpy.mapping использует оба документа карты для создания конечного PDF-документа, собирая левые и правые страницы в верном порядке.
В вышеприведенном примере показан топографический атлас округа Аренак, штат Мичиган, предназначенный для двусторонней печати. Обратите внимание, что нечетные страницы карт (например, страница 3) имеют такую компоновку, что все элементы страницы сдвинуты влево. Четные страницы (например, страница 4) выровнены вправо. Это требуется для обеспечения отступа на переплет. Кроме того, номера страниц и карты-указатели расположены по-разному на каждой компоновке, они смещены на внешнюю сторону страницы. Левые и правые страницы получены из разных документов ArcMap. Такой документ можно создать при помощи многостраничной компоновки и скрипта Python arcpy.mapping.
Более подробную информацию см. в разделе Создание многостраничных компоновок.
В этом примере предполагается следующее.
- Имеется два документа карт с включенной многостраничной компоновкой. Один документ предназначен для левосторонних страниц, другой документ — для правосторонних.
Этот пример кода работает с примером простого справочного атласа, который показан в разделе Построение атласов в ArcGIS.
Вы можете создать этот атлас заново, выполнив следующие шаги, описанные в данных разделах справки.- Начало работы с атласом
- Создание объектов индексной сетки
- Изменение слоя объектов индексной сетки
- Включение функции многостраничной компоновки
- Создание карты-указателя для атласа
- Добавление динамического текста для атласа
- Экспорт атласа
Поскольку в атласе отображается нумерация страниц, следует удостовериться, что номер первой страницы в многостраничной компоновке указан с учетом всех предшествующих страниц финальной версии атласа. В этом примере перед непосредственными страницами карт идут две страницы. Таким образом, собственно карта начинается со страницы 3. Убедитесь, что в пункте Номер начальной страницы в диалоговом окне Настройка многостраничной компоновки указано значение 3.
- У вас имеется PDF-файл для титульного листа атласа.
- У вас имеется файл PDF, содержащий страницу обзорной карты.
Подготовив документ карты и 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")
# Create Facing Pages for the map book
# Create pages for left-hand side of the book
#
mxdPathLeft = r"C:\temp\MBExample\maps\Arenac County MB Left.mxd"
tempMapLeft = arcpy.mapping.MapDocument(mxdPathLeft)
tempDDPLeft = tempMapLeft.dataDrivenPages
# Loop creates individual pdf's for odd numbered pages
#
for pgNumLeft in range(1, tempDDPLeft.pageCount + 1, 2):
temp_filename = r"C:\temp\MBExample\temp_pdfs\MB_" + \
str(pgNumLeft) + ".pdf"
if os.path.exists(temp_filename):
os.remove(temp_filename)
tempDDPLeft.exportToPDF(temp_filename, "RANGE", pgNumLeft)
# Create pages for right-hand side of the book
#
mxdPathRight = r"C:\temp\MBExample\maps\Arenac County MB Right.mxd"
tempMapRight = arcpy.mapping.MapDocument(mxdPathRight)
tempDDPRight = tempMapRight.dataDrivenPages
# Loop creates individual pdf's for even numbered pages
#
for pgNumRight in range(2, tempDDPRight.pageCount + 1, 2):
temp_filename = r"C:\temp\MBExample\temp_pdfs\MB_" + \
str(pgNumRight) + ".pdf"
if os.path.exists(temp_filename):
os.remove(temp_filename)
tempDDPRight.exportToPDF(temp_filename, "RANGE", pgNumRight)
# Append right and left-hand pages together in proper order
#
for pgNum in range(1, tempDDPLeft.pageCount + 1):
print "Page", pgNum, "of", tempDDPLeft.pageCount
tempPDF = r"C:\temp\MBExample\temp_pdfs\MB_" + str(pgNum) + ".pdf"
finalPdf.appendPages(tempPDF)
# 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, mxdPathLeft, mxdPathRight, tempDDPLeft, tempDDPRight,
tempMapLeft, tempMapRight, tempPDF
Первые строки кода импортируют необходимые модули, создают переменную местоположения, куда будет сохранена окончательная PDF-версия атласа, и создают новый, пустой PDF-документ в указанной папке выходного местоположения. Этот PDF-файл является последним результатом выполнения этого скрипта.
Более подробно см. класс PDFDocument в arcpy.mapping.
Следующие строки кода предназначены для добавления титульного листа и обзора карт к финальному PDF-файлу. Этот пример предполагает, что у вас уже имеются PDF-документы, которые можно использовать для титульного листа и обзора карт.
Далее код создает многостраничную компоновку для документа карты с левосторонней ориентацией. Для каждой нечетной страницы атласа многостраничная компоновка создает PDF файл. Это действие повторяется для страниц с правосторонней ориентацией. PDF-файлы создаются для четных страниц.
Более подробно см. класс MapDocument и класс DataDrivenPages в arcpy.mapping.
Если для запуска кода используется окно Python, нужно знать, как вводить в цикл несколько команд.
Чтобы ввести строки, следующие за первой строкой без выполнения блока кода, после ввода первой строки удерживайте нажатой клавишу CTRL и нажмите клавишу ENTER. Появится дополнительное приглашение командной строки (...) в окне Python, которое можно использовать для ввода второй строки кода. Завершив ввод всех команд, нажмите клавишу ENTER дважды, чтобы выполнить весь блок кодов.
Затем левосторонние и правосторонние страницы добавляются в окончательный PDF-файл в должном порядке.
В заключение код обновляет свойства, а затем сохраняет и закрывает финальный PDF-файл.