Come rendere Map Book delle pagine con la stessa area mostrata ma diversi livelli attivati ​​/ disattivati?


9

In ESRI un Map Book è più adatto per una serie di funzionalità che hanno ciascuna la propria pagina. Ti consente di scegliere una funzione e generare una pagina del libro della mappa per ciascuna funzione, comprese tutte le informazioni aggiuntive che desideri aggiungere a ciascuna pagina tramite testo dinamico, grafici, ecc.

Esiste un'alternativa per dire una serie di pagine che mostrano la stessa area ESATTA ma con diversi livelli attivati ​​e disattivati? Abbiamo un documento di miglioramento del capitale che devo creare mostrando i confini della città in ogni pagina. In una pagina sono elencate tutte le stazioni di polizia e dei vigili del fuoco, un'altra mostra i sistemi idrici proposti, un'altra mostra autostrade e autostrade e lavori da svolgere vicino o su di essi ... ecc., Fino alla nausea.

C'è un modo per configurarlo in modo che NON debba creare un MXD separato per ogni Pagina Mappa di questo documento?


quale versione del desktop? gli strumenti sono leggermente cambiati in ogni versione.
Brad Nesom,

ArcGIS per Desktop Advanced 10.2.2
randomblink il

Risposte:


10

Sono stato in grado di farlo quando li avevo per ArcGIS 9.3 e funziona molto bene. Non so se funzionerà con ArcGIS 10.0 o versioni successive come indicato sul loro sito Web, ma ci proverei.

ArcMapBook

Modifica:
questo può essere realizzato semplicemente creando una pagina rettangolare per ogni set di livelli impilati direttamente uno sopra l'altro. Assegna un nome a ciascuna pagina separatamente e assegna un valore a ciascun livello da mostrare nel riquadro.
È inoltre necessario assegnare valori di attributo agli elementi che compaiono solo su pagine specifiche.
Quindi utilizzare la definizione di pagina per limitare gli oggetti ai nomi di pagina.
Nelle proprietà del layer nella definizione Pagina query> definizione pagina.
PAGEDEF

C'è un'opzione per abilitare la corrispondenza / non corrispondenza e un nome campo.
Abilitato
Esistono infinite possibilità per la codifica dei dati affinché funzioni all'interno del framework.
Inoltre, se hai elementi che desideri mostrare su tutte le pagine, non sono abilitati.


1
Funziona ancora con 10.1, 10.2
Brad Nesom il

4

Penso che i tuoi requisiti vengano soddisfatti più facilmente e in modo intuitivo avendo una singola mappa con tutti i livelli inclusi e quindi scrivere un semplice script Python che utilizza layer .visible per attivare / disattivare i layer prima di esportare ogni pagina usando ExportToPDF .

PDFDocument può quindi essere utilizzato per aggiungere le pagine in un singolo file PDF.

La tecnica è descritta in un blog Esri chiamato Combinazione di pagine guidate da dati con Python e arcpy.mapping che include anche il codice seguente.

Ad esempio, è possibile creare un atlante tematico con più pagine specificando un tema diverso su ogni pagina. L'esempio seguente esegue lo zoom su un pacco selezionato, attiva la visibilità di diversi livelli ed esporta il layout per più temi al fine di creare un rapporto pacchi con una mappa del suolo, una mappa di alluvione e una mappa di zonizzazione:

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

Ci sarebbe un modo per farlo per un gran numero di shapefile? Non ho mai veramente usato Python, ma suppongo che la lista dei testi abbia gli strati che verranno ciclicati. Ho 121 livelli diversi, con nomi come DA_1, DA_2, DA_3 ecc. C'è un modo per caricarli senza nominarli singolarmente?
The Silent Cartographer,

@TheSilentCartographer Il tuo elenco di later potrebbe durare quanto vuoi. Dovrà contenere i nomi di coloro per i quali desideri creare un PDF. Ci possono essere vari modi in cui questi nomi entrano nell'elenco.
PolyGeo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.