Ich habe ein Skript mit MoveLayer und einer temporären Gruppenebene geschrieben, damit dies funktioniert. Erstellen Sie zuerst eine neue Gruppenebene an einer beliebigen Stelle in Ihrem Inhaltsverzeichnis (egal wie sie heißt, sie wird am Ende gelöscht). Dies funktioniert nur unter der Annahme, dass diese temporäre Gruppenschicht die einzige im mxd ist. Dies kann natürlich umgangen werden, indem Sie Ihrer temporären Ebene einen konstanten Namen geben (z. B. "TempGroup") und das Skript so ändern, dass diese Gruppenebene speziell für die Sortierung verwendet wird.
mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.ListDataFrames(mxd)[0] # Assuming one data frame
group_lyr = [lyr for lyr in arcpy.mapping.ListLayers(mxd) if lyr.isGroupLayer][0] # The temp group layer should be the only one
lyr_names = sorted(lyr.name for lyr in arcpy.mapping.ListLayers(mxd) if lyr.isFeatureLayer)
for name in lyr_names:
arcpy.mapping.MoveLayer(df, group_lyr, arcpy.mapping.ListLayers(mxd, name)[0], "BEFORE")
arcpy.mapping.RemoveLayer(df, group_lyr)
Gist ist hier . Ich verwende ArcGIS 10.3.1 für Desktop.
mxd.save()
del mxd
Es gibt keine Möglichkeit, die Liste nach Zeichnungsreihenfolge zu sortieren (ohne Programmierung).
Es ist jedoch möglich, die Liste nach Sichtbarkeits- Inhaltsverzeichnis und die Auflistung nach Auswahl- Inhaltsverzeichnis zu sortieren : Gehen Sie zum Optionsfeld im Inhaltsverzeichnis. Wählen Sie auf der Registerkarte "Einstellungen" aus, ob Ebenen nach der Reihenfolge sortiert werden sollen, in der sie gezeichnet werden, oder alphabetisch nach Ebenennamen ( Ebenen sortieren nach ).
quelle
Ja, du kannst es schaffen
Einzelheiten zum Sortieren des Inhaltsverzeichnisses in alphabetischer Reihenfolge finden Sie unter: http://resources.arcgis.com/de/help/main/10.1/index.html#//0106000001qt000000
quelle