Wie erstelle ich ein Kartenbuch mit Seiten, in denen derselbe Bereich angezeigt wird, aber verschiedene Ebenen aktiviert / deaktiviert sind?

9

In ESRI eignet sich ein Kartenbuch am besten für eine Reihe von Funktionen, für die jede eine eigene Seite erhält. Sie können eine Funktion auswählen und für jede Funktion eine Kartenbuchseite erstellen, einschließlich zusätzlicher Informationen, die Sie über dynamischen Text, Diagramme usw. zu jeder Seite hinzufügen möchten.

Gibt es eine Alternative für beispielsweise eine Reihe von Seiten, die den GENAUEN gleichen Bereich zeigen, aber unterschiedliche Ebenen ein- und ausschalten? Wir haben ein Dokument zur Kapitalverbesserung, das ich erstellen muss, um die Stadtgrenzen auf jeder Seite anzuzeigen. Auf einer Seite sind alle Polizei- und Feuerwachen aufgeführt, auf einer anderen Seite werden vorgeschlagene Wassersysteme gezeigt, auf einer anderen Schnellstraßen und Autobahnen sowie Arbeiten in der Nähe oder auf ihnen ... usw. ad nauseum.

Gibt es eine Möglichkeit, dies so einzurichten, dass ich NICHT für jede Kartenseite dieses Dokuments ein separates MXD erstellen muss?

zufälliger Link
quelle
Welche Version des Desktops? Die Tools haben sich in jeder Version etwas geändert.
Brad Nesom
ArcGIS für Desktop Advanced 10.2.2
randomblink

Antworten:

10

Ich konnte dies tun, als ich sie für ArcGIS 9.3 hatte, und es funktioniert sehr gut. Ich weiß nicht, ob dies mit ArcGIS 10.0 oder höher funktioniert, wie auf der Website angegeben, aber ich würde es versuchen.

ArcMapBook

Bearbeiten:
Dies kann erreicht werden, indem einfach eine rechteckige Seite für jeden Satz von Ebenen erstellt wird, die direkt übereinander gestapelt sind. Benennen Sie jede Seite separat und weisen Sie jeder Ebene, die im Rahmen angezeigt werden soll, einen Wert zu.
Sie müssen auch Attributwerte Elementen zuweisen, die nur auf bestimmten Seiten angezeigt werden.
Verwenden Sie dann die Seitendefinition, um Objekte auf Seitennamen zu beschränken.
In den Ebeneneigenschaften auf der Definitionsabfrageseite> Seitendefinition.
pagedef

Es gibt eine Option zum Aktivieren von Übereinstimmung / Nichtübereinstimmung und einen Feldnamen.
aktiviert
Es gibt unendlich viele Möglichkeiten, Ihre Daten so zu codieren, dass sie innerhalb des Frameworks funktionieren.
Auch wenn Sie Elemente haben, die Sie auf allen Seiten anzeigen möchten, ist dies nicht aktiviert.

PROBERT
quelle
1
Dies funktioniert immer noch mit 10.1, 10.2
Brad Nesom
4

Ich denke, Ihre Anforderungen lassen sich am einfachsten und intuitivsten erfüllen, wenn Sie eine einzige Karte mit allen enthaltenen Layern haben und dann ein einfaches Python-Skript schreiben, das den Layer .visible verwendet, um Layer ein- und auszuschalten, bevor Sie jede Seite mit ExportToPDF exportieren .

PDFDocument kann dann verwendet werden, um die Seiten an eine einzelne PDF-Datei anzuhängen.

Die Technik wird in einem Esri-Blog namens Kombinieren datengesteuerter Seiten mit Python und arcpy.mapping beschrieben, das auch den folgenden Code enthält.

Sie können beispielsweise einen thematischen Atlas mit mehreren Seiten erstellen, auf denen auf jeder Seite ein anderes Thema angegeben ist. Im folgenden Beispiel wird ein ausgewähltes Paket vergrößert, die Sichtbarkeit verschiedener Ebenen umgeschaltet und das Layout für mehrere Themen exportiert, um einen Paketbericht mit einer Bodenkarte, einer Hochwasserkarte und einer Zonenkarte zu erstellen:

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
PolyGeo
quelle
Gibt es eine Möglichkeit, dies für eine große Anzahl von Shapefiles zu tun? Ich habe Python nie wirklich verwendet, aber ich gehe davon aus, dass die lyrList die Ebenen enthält, die durchlaufen werden. Ich habe 121 verschiedene Ebenen mit Namen wie DA_1, DA_2, DA_3 usw. Gibt es eine Möglichkeit, sie zu laden, ohne sie einzeln zu benennen?
Der stille Kartograph
@TheSilentCartographer Ihre Liste der Laters kann so lang sein, wie Sie möchten. Es muss die Namen derjenigen enthalten, für die Sie ein PDF erstellen möchten. Es kann verschiedene Möglichkeiten geben, wie diese Namen in die Liste aufgenommen werden.
PolyGeo