Mehr

Hinzufügen einer Gruppenebene zu einer anderen Gruppenebene in einem Mxd mit Python

Hinzufügen einer Gruppenebene zu einer anderen Gruppenebene in einem Mxd mit Python


Ich möchte eine leere Gruppenebene nehmen und sie einer vorhandenen Gruppenebene innerhalb eines MXD hinzufügen. Die leere Gruppenebene existiert derzeit nicht, ich werde eine leere Gruppenebene verwenden, die ich in einem Ordner gespeichert habe.

Ich verwende eine Liste, um die Ebenen zu erstellen, die ich erstellen und dann hinzufügen möchte.

Der gesamte Prozess besteht darin, Gruppen der Ordnung 1 zu haben, die Untergruppen enthalten.

Ich konnte den ersten Schritt machen, indem ich die ersten Ebenen mit dem folgenden Code erstellt habe

Group_1 = ['Scotland','England','Wales','Spain'] for first_Group in Group_1: mxd = arcpy.mapping.MapDocument(r"C:GISPROJECTPYTHONGROUP_LAYER_TEMPLATE_copy.mxd") df = arcpy.mapping.ListDataFrames(mxd)[0] groupLayer = arcpy.mapping.Layer(r"C:GISPROJECTPYTHONAn_empty_Group_Layer.lyr") arcpy.mapping.AddLayer(df, groupLayer, "BOTTOM") Ebenen = arcpy.mapping.ListLayers(mxd) für Ebene in Ebenen: if layer.isGroupLayer und layer.name == "An_empty_Group_Layer": layer.name = first_Group mxd.save()

Mit dem obigen Code konnte ich die folgenden Gruppenebenen zum MXD hinzufügen

Schottland

England

Wales

Spanien

Ich verwende gerne eine zweite Liste, ich muss die zweite Ebene von Gruppen erstellen

Group_2 = [['Scotland','Aberdeen'],['Scotland','Glasgow'],['Scotland','Inverness'],['England','london']['England','bristol' ]['England','NewCastle'],['Wales',Cardiff],['Wales','Newport']

,['Wales','Swansea'],['Spanien','Mardid],['Spanien','Valencia'],['Spanien','Barcelonia'],

Ich kann eine Schleife verwenden, um meine zweite Gruppe zu durchlaufen

Das würde es mir ermöglichen, Gruppen hinzuzufügen, ich müsste einen Weg finden, den Gruppennamen zu verwenden, um mich in eine Erwachsenengruppe einzubinden

# Ein Beispielelement in der Liste ['Scotland','Aberdeen'] # Das erste Element kann verwendet werden, um die Gruppe oben zu verfolgen. In diesem Beispiel würde es 'Scotland' zurückgeben. Ich möchte diesen Wert nehmen und ihn dann verwenden, um auf die obige Gruppe zu verweisen. für item in group_2: # x entspricht dem ersten Element der Gruppe x = item[0] #Kann den zweiten Wert aus dem Item verwenden, um den Gruppennamen für item in group_2 zu erstellen: # x Entspricht Aberdeen x = item[ 1]

Eine weitere Frage zu Gruppenebenen


Die Layer, die Sie Ihrem Gruppenlayer hinzufügen, müssen sich physisch auf der Festplatte oder in einem MXD befinden.

Um eine Ebene zu einer Gruppenebene hinzuzufügen, müssen Sie eine Liste der Ebenen in Ihrem MXD abrufen. Sobald Sie diese Liste haben, können Sie sie durchlaufen und sehen, ob es sich bei der Ebene um eine Gruppenebene handelt. Wenn dies der Fall ist, erhalten Sie einen Verweis auf Ihren Layer in Ihrem Verzeichnis und fügen Sie ihn dem Gruppenlayer hinzu.

Der folgende Beispielcode geht davon aus, dass Sie bereits ein MXD mit Ihren Gruppen-Layern erstellt haben und sich Ihre Layer physisch in einem Ordner befinden. Ich verwende ein Wörterbuch anstelle einer Liste von Listen.

import arcpy import os.path # dict des Layers, der unter die Gruppe Layer Layers_dict = {'Scotland': ['Aberdeen', 'Glasgow', 'Inverness'], 'England': ['London', 'Bristol', ' New Castle']} # Verzeichnis, in dem sich die Lyr-Dateien befinden lyr_file_dir = r'c:gisprojectpython' mxd = arcpy.mapping.MapDocument(r'c:gisprojectpythonmap.mxd') df = arcpy.mapping.ListDataFrames(mxd)[0] layer_list = arcpy.mapping.ListLayers(mxd) für Layer inlayers_list: wenn layer.isGroupLayer undlayer_dict.get(layer.name) nicht None ist: für lyr inlayers_dict[ layer.name]: lyr_file = arcpy.mapping.Layer(os.path.join(lyr_file_dir, lyr) + '.lyr') lyr_file.name = lyr arcpy.mapping.AddLayerToGroup(df, layer, lyr_file, 'BOTTOM') mxd.save()

Schau das Video: Convert ArcGIS file types .lyr.mxd to QGIS with SLYR. burdGIS