Verwenden von dynamischem Text zum Anzeigen von Ebenen-Credits

9

Ich suche nach einer Möglichkeit, die 'Ebenen-Credits' in einem dynamischen Textfeld zu aktualisieren. Ich habe Möglichkeiten der Verwendung der Karte Gutschriften oder Datenrahmen Credits gefunden hier aber keinen Weg scheinen die Informationen aus einer Schicht abgeleitet zu erhalten.

Ich scheine jedes Mal eine leere Saite zu produzieren. Hat jemand dies getan oder eine Lösung gefunden? Scheint eine äußerst nützliche Möglichkeit zu sein, Kartenguthaben mit wenig bis gar keinen Ressourcen zu aktualisieren.

Abgeleitete Ebeneneigenschaften

Slevy
quelle
Es gibt keine Möglichkeit, dies dynamisch zu tun, da die integrierten dynamischen Texte alle auf dem Dokument oder Datenrahmen basieren. Dies ist jedoch definitiv möglich, wenn Sie bereit sind, jedes Mal, wenn Sie eine Karte erstellen, ein Skript zum Auffüllen eines Textfelds auszuführen. Oder füllen Sie sogar die Kartenguthaben aus allen Ebenenguthaben aus. Wenn Sie danach suchen, kann ich dazu einen Arcpy-Code bereitstellen.
Fezter

Antworten:

17

Wie in meinem obigen Kommentar erwähnt, gibt es keine Möglichkeit, dies mit dynamischem Text zu tun. Sie können jedoch ein Skript schreiben, um dies zu tun und es an eine Python-Add-In-Schaltfläche anzuhängen oder auszuführen, wenn Sie die MXD oder etwas anderes speichern. Sie müssen ein Textelement erstellen, um die Credits zu speichern, und es so wie "CREDITS" nennen:

Geben Sie hier die Bildbeschreibung ein

Der Basiscode würde ungefähr so ​​aussehen:

mxd = arcpy.mapping.MapDocument("current")
credit_text = ""
for layer in arcpy.mapping.ListLayers(mxd):
    credit_text += (layer.credits + "\n") # separate each line with a carriage return
for el in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"):
    if el.name == "CREDITS":
        el.text = credit_text
Fezter
quelle
2
+1 So würde ich es machen - hätte mit dem gleichen Code geantwortet.
Midavalo