如何制作显示相同区域但打开/关闭不同图层的页面地图簿?


9

在ESRI中,地图册最适合一系列功能,每个功能都有自己的页面。它允许您选择一个要素并为每个要素生成一个Map Book页面,包括希望通过动态文本,图表等添加到每个页面的任何其他信息。

是否有其他方法可以说一系列显示完全相同区域但打开和关闭不同层的页面?我们必须创建一个资本改进文档,在每页上显示城市边界。一页上列出了所有的警察局和消防局,另一页显示了拟议的供水系统,另一页显示了高速公路和公路以及在其附近或上方进行的工作……等等,都是恶作剧。

是否可以通过某种方式进行设置,而不必为该文档的每个“地图页面”创建单独的MXD?


什么版本的桌面?这些工具在每个版本中都有一些变化。
布拉德·尼索姆

ArcGIS for Desktop Advanced 10.2.2
randomblink 2014年

Answers:


10

当我将它们用于ArcGIS 9.3时,我能够做到这一点,并且效果很好。我不知道这是否适用于ArcGIS 10.0或更高版本(如其网站上所述),但我会尝试一下。

ArcMapBook

编辑:
这可以通过简单地为彼此直接堆叠的每组图层创建一个矩形页面来完成。分别命名每个页面,并为要在框架中显示的每个图层分配一个值。
您还需要将属性值分配给仅出现在特定页面上的项目。
然后使用页面定义将对象限制为页面名称。
在图层属性上的“查询页面”>“页面定义”。
页面定义

有一个启用匹配/不匹配的选项和一个字段名。
已启用
编码数据以在框架内工作的可能性非常大。
另外,如果您有想要显示在所有页面上的项目,则只是不启用该功能。


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

是否可以对大量的shapefile执行此操作?我从未真正使用过Python,但是我假设lyrList具有将循环遍历的层。我有121个不同的图层,名称分别为DA_1,DA_2,DA_3等。是否可以加载它们而不用单独命名?
沉默的制图师

@TheSilentCartographer您的后继列表可以任意长。它将需要包含您要为其创建PDF的名称。这些名称进入列表的方式可能有多种。
PolyGeo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.