Как сделать карту книг из страниц с одинаковой областью, но с разными слоями?


9

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

Есть ли альтернатива, скажем, серии страниц, показывающих ТОЧНУЮ область, но с включенными и выключенными разными слоями? У меня есть документ «Капитальные улучшения», который я должен создать, показывая границы города на каждой странице. На одной странице перечислены все полицейские и пожарные посты, на другой показаны предлагаемые системы водоснабжения, на другой - скоростные и скоростные автомагистрали и работы, выполняемые рядом с ними или над ними ... и т. Д., До тошноты.

Есть ли способ настроить это так, чтобы мне НЕ нужно было создавать отдельный MXD для каждой страницы карты этого документа?


какая версия десктопа? инструменты немного изменились в каждой версии.
Брэд Несом

ArcGIS for Desktop Advanced 10.2.2
randomblink,

Ответы:


10

Я смог сделать это, когда у меня были их для ArcGIS 9.3, и это работает очень хорошо. Я не знаю, будет ли это работать с ArcGIS 10.0 или более поздней версией, как указано на их сайте, но я бы попробовал.

ArcMapBook

Изменить:
это можно сделать, просто создав прямоугольную страницу для каждого набора слоев, уложенных непосредственно друг на друга. Назовите каждую страницу отдельно и присвойте значение каждому слою, который будет отображаться во фрейме.
Вам также необходимо присвоить значения атрибутов элементам, которые появляются только на определенных страницах.
Затем используйте определение страницы, чтобы ограничить объекты именами страниц.
В свойствах слоя на странице определения запроса> определение страницы.
pagedef

Существует возможность включить совпадение / не совпадение и имя поля.
Включено
Существуют довольно бесконечные возможности для кодирования ваших данных для работы в рамках.
Также, если у вас есть элементы, которые вы хотите показать на всех страницах, они просто не имеют этого включенного.


1
Это все еще работает с 10.1, 10.2
Брэд Несом

4

Я думаю, что ваши требования были бы наиболее легко и интуитивно понятны при наличии единой карты со всеми включенными слоями, а затем написать простой скрипт на Python, который использует layer .visible для включения / выключения слоев перед экспортом каждой страницы с помощью ExportToPDF .

Затем PDFDocument можно использовать для добавления страниц в один файл PDF.

Техника описана в блоге Esri под названием « Объединение управляемых данными страниц с Python и arcpy.mapping», который также включает в себя код ниже.

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

import arcpy, os

#Specify output path and final output PDF
outPath = r”C:MyProjectoutput\”
finalPdf = arcpy.mapping.PDFDocumentCreate(outPath + “ParcelReport.pdf”)

#Specify the map document and the data frame
mxd = arcpy.mapping.MapDocument(r”C:MyProjectMyParcelMap.mxd”)
df = arcpy.mapping.ListDataFrames(mxd, “Layers”)[0]

#Select a parcel using the LocAddress attribute and zoom to selected
parcelLayer = arcpy.mapping.ListLayers(mxd, “Parcels”, df)[0]
arcpy.SelectLayerByAttribute_management(parcelLayer, “NEW_SELECTION”, “”LocAddress” = ’519 Main St’”)
df.zoomToSelectedFeatures()

#Turn on visibility for each theme and export the page
lyrList = ["Soils", "Floodplains", "Zones"]
for lyrName in lyrList:
     lyr = arcpy.mapping.ListLayers(mxd, lyrName, df)[0]
     lyr.visible = True

     #Export each theme to a temporary PDF and append to the final PDF
     tmpPdf = outPath + lyrName + “_temp.pdf”
     if os.path.exists(tmpPdf):
          os.remove(tmpPdf)
     arcpy.mapping.ExportToPDF(mxd, tmpPdf)
     finalPdf.appendPages(tmpPdf)

     #Turn off layer visibility and clean up for next pass through the loop
     lyr.visible = False
     del lyr, tmpPdf
del mxd, df, finalPdf

Будет ли способ сделать это для большого количества шейп-файлов? Я никогда не использовал Python, но я предполагаю, что в lyrList есть слои, которые будут циклически проходить. У меня 121 слой, с такими именами, как DA_1, DA_2, DA_3 и т. Д. Есть ли способ загрузить их, не называя их по отдельности?
Тихий картограф

@TheSilentCartographer Ваш список позже может быть сколько угодно. Он должен содержать имена тех, для кого вы хотите создать PDF. Могут быть различные способы, которыми эти имена попадают в список.
PolyGeo
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.