Ich versuche, ein Python-Makro für ArcGIS 10.2 zu schreiben, das das Beschriften von Punkten in einer Ebene basierend auf verschiedenen Arten von Apartments automatisiert. Zum Beispiel würde eine Art von Wohnungen ein blaues Quadrat mit weißem fettem Text als eine Beschriftung haben; ein anderer hätte ein rosa Quadrat mit schwarzem fettem Text; Ein anderer hätte ein rotes Quadrat mit einem weißen Fettdruck usw.
Welchen Ausdruck oder welche Funktion würden Sie in arcpy verwenden, um den Stil dieser Beschriftungen zu ändern?
Derzeit kennzeichnet das Skript die Apartments mit einem Kartencode und ändert seinen Namen im Inhaltsverzeichnis in Apartments, wie es sollte.
Jetzt möchte ich die Schriftart, die Grafik und die Größe der Beschriftungen ändern, um eine eindeutige Beschriftung für jede Beschriftung zu erstellen, und dann eine Schaltfläche zum Drücken und einfachen Automatisieren des Vorgangs erstellen, wenn wir eine dieser Ebenen ausführen müssen.
Gibt es eine Möglichkeit, die Schriftarten, Beschriftungen und Grafiken mithilfe von Python-Skripten (ArcPy, IDLE usw.) zu ändern?
Ich habe beschlossen, diesen Beitrag zu bearbeiten, um eine endgültige Beschreibung dessen zu geben, was ich hier vorhabe, damit keine Verwirrung entsteht. Im Wesentlichen sehen die Punkte auf der Karte so aus wie auf dem obigen Bild:
Ich habe versucht, die lblClass.expression
Funktion zu verwenden, aber der Code, den ich verwenden möchte, funktioniert nicht. Ich denke, das ist wahrscheinlich der Schritt in die richtige Richtung. Im Folgenden finden Sie einen Code, den ich nur verwendet habe, um den Ausdruck labelClass.expression zum Ändern der Schriftarten der Beschriftungen zu erhalten.
for lblClass in aptLayer.labelClasses:
lblClass.showClassLabels = True
def getLabel (Code, Type):
if Type == "MRR":
return "<FNT name = 'Arial' size = '12'>" & Code & "</FNT>"
elif Type == "TAX":
return "<FNT name = 'Arial' size = '12'>" & Code & "</FNT>"
elif Type == "MRT":
return "<FNT name = 'Arial' size = '12'>" & Code & "</FNT>"
elif Type == "GSS":
return "<FNT name = 'Arial' size = '12'>" & Code & "</FNT>"
elif Type == "TGS":
return "<FNT name = 'Arial' size = '12'>" & Code & "</FNT>"
else:
return "<FNT name = 'Arial' size = '12'>" & Code & "</FNT>"
lblClass.expression = getLabel( [Map_Code],[Type])