Gibt es eine Möglichkeit, die Symbologie für mehrere Ebenen in ArcMap oder ArcCatalog zu ändern? Ich möchte die Symbologie mehrerer Ebenen gleichzeitig ändern.
Gibt es eine Möglichkeit, die Symbologie für mehrere Ebenen in ArcMap oder ArcCatalog zu ändern? Ich möchte die Symbologie mehrerer Ebenen gleichzeitig ändern.
Antworten:
Bearbeiten Sie können dieses von ESRI bereitgestellte Skript verwenden, um die vorliegende Aufgabe abzuschließen (gleiche Idee wie unten):
import arcpy
arcpy.ApplySymbologyFromLayer_management("in_layer", "in_symbology_layer")
in_layer: Die Ebene, auf die die Symbologie angewendet wird.
Feature-Ebene; Rasterebene; TIN-Schicht; Netzwerkanalyse-Schichtin_symbology_layer: Die Symbologie dieser Ebene wird auf die Eingabeebene angewendet.
Feature-Layer; Rasterebene; TIN-Ebene; Netzwerkanalyseschicht
Oder erweitern Sie dies in Form von Standalone-Skripten (denken Sie an IDLE):
import arcpy
from arcpy import env
# Set the current workspace
env.workspace = "path/to/workspace"
# Set layer to apply symbology to
inputLayers = ["in_layer_first.lyr","in_layer_second.lyr","in_layer_third.lyr"]
# Set layer that output symbology will be based on
symbologyLayer = "in_symbology_layer.lyr"
# Apply the symbology from the symbology layer to the input layer
for layer in inputLayers:
arcpy.ApplySymbologyFromLayer_management (layer, symbologyLayer)
Im Wesentlichen erstellen Sie eine Symbologieebene (in_symbology_layer), die Sie in Bezug auf Design / Stil beibehalten. Anschließend kopieren Sie diese Ebenensymbologie auf jede Ihrer anderen Ebenen, wie in Ihrem Inhaltsverzeichnis aufgeführt.
Vorherige Antwort
Sie können einen Stil aus einer aktuellen Ebene in Ihrem Inhaltsverzeichnis / Ihrer Ebenenliste verwenden und auf Ihre anderen Ebenen anwenden.
Für jede nachfolgende Ebene (unterhalb der beabsichtigten Stilebene)> Rechtsklick> Eigenschaften> Symbologie> Stil aus einer anderen Ebene importieren
Ich hatte das gleiche Problem und fand eine andere Lösung. Es ist einfach und sehr praktisch, es muss nicht einmal eine * .lyr-Datei erstellt werden.
Im ArcGIS ModelBuilder-Editor habe ich den folgenden Prozess entworfen:
Hinweise: Es funktioniert wahrscheinlich nicht, wenn Sie gleichzeitig Ebenen mit unterschiedlichen Geometrietypen verwenden. Es funktioniert nicht gut, wenn Sie gleichnamige Ebenen gleichzeitig verwenden. Ich habe es nicht mit Nicht-Vektor-Ebenen versucht.
Das in Python exportierte Skript des Modells lautet:
# Import arcpy module
import arcpy
# Script arguments
Layers_to_symbolize = arcpy.GetParameterAsText(0)
Symbology_Layer = arcpy.GetParameterAsText(1)
# Local variables:
Symbolized_Layers = Layers_to_symbolize
# Process: Apply Symbology From Layer
arcpy.ApplySymbologyFromLayer_management(Layers_to_symbolize, Symbology_Layer)
Kurz vor der Nachricht von @Aaron habe ich die Informationen von @Roy verwendet, um meine eigene Lösung zu erstellen, die ich in ein ArcToolbox-Skript integrieren kann. Siehe unten:
# Import modules
import arcpy
#Get the current Map Document
mxd = arcpy.mapping.MapDocument("CURRENT")
# Script arguments
Template_Layer = arcpy.GetParameterAsText(0)
LayerList = arcpy.GetParameterAsText(1)
Layers_to_Symbolize = LayerList.split(";")
# Process: Apply Symbology From Layer
for UpdateLayer in Layers_to_Symbolize:
arcpy.AddMessage("Updating: " + UpdateLayer)
arcpy.ApplySymbologyFromLayer_management(UpdateLayer,Template_Layer)
# Refresh the Table of Contents to reflect the change
arcpy.RefreshTOC()
#Delete the MXD from memory
del mxd
Ich könnte dieses Konzept als potenzielles Werkzeug für ein 10.1 Python-Add-In in der Symbolleiste sehen.
Ich habe eine ziemlich einfache Möglichkeit gefunden, die Symbologie mehrerer Ebenen gleichzeitig mithilfe der unten verlinkten Toolbox zu aktivieren. Nachdem Sie diese Toolbox hinzugefügt haben, ziehen Sie die einzelne Symbologieebene per Drag & Drop und ziehen Sie dann alle Ebenen, auf die Sie die Symbologie anwenden möchten, per Drag & Drop (Ziele). Hier gelten wahrscheinlich allgemeine Regeln zum Abgleichen des Geotyps (Linien, Punkte, Polys). Sobald das Tool ausgeführt wurde, wird angezeigt, dass nichts passiert ist. Aktualisieren Sie Ihre Anzeige (F5) - Die Anzeige wird mit der passenden Symbologie aktualisiert. Klicken Sie auf eine Ebene, um deren Eigenschaften anzuzeigen, und klicken Sie auf "OK". Das Inhaltsverzeichnissymbol wird aktualisiert.
Laden Sie hier die Zip-Datei für die Toolbox herunter.
Hier ist das Skript, wenn das einfacher ist:
import arcpy
# Script arguments
Target_Layers = arcpy.GetParameterAsText(0)
if Target_Layers == '#' or not Target_Layers:
Target_Layers = "LayersToBeChanged" # provide a default value if unspecified
Symbology_Layer = arcpy.GetParameterAsText(1)
if Symbology_Layer == '#' or not Symbology_Layer:
Symbology_Layer = "SymbologyLayer" # provide a default value if unspecified
# Local variables:
Output_Symbology = Symbology_Layer
# Process: Apply Symbology From Layer (3)
arcpy.ApplySymbologyFromLayer_management(Target_Layers, Symbology_Layer)