Ich habe ein ArcPy-basiertes Skript, bei dem ich versuche, zwei Ebenen zu schneiden, wobei eine Ebene ihren Schwerpunkt in der anderen Ebene haben muss.
Da ich wissen muss, dass eine Ebene (Feature_Layer unten) den Schwerpunkt der anderen enthält, verwende ich das Tool arcpy.SelectLayerByLocation_management ().
Ich habe kein Kartendokument (* .mxd) geöffnet, daher muss ich Make Feature Layer verwenden , um es einzugeben .
In der Dokumentation wird darauf hingewiesen, dass der Feature-Layer beim Beenden des Programms nicht mehr angezeigt wird. Er muss jedoch früher ausgeblendet werden, da er sich in einer Schleife befindet, die der folgenden ähnelt
for feature_class in large_list_of_feature_classes:
some_function(feature_class)
def some_function():
feature = "{path to feature class}"
feature_layer = "feature_layer"
HUCs_layer = "all_HUCs" #HUCs being Hydrologic Unit Codes
arcpy.MakeFeatureLayer_management(feature, feature_layer)
arcpy.MakeFeatureLayer_management(feature, HUCs_layer)
arcpy.SelectLayerByLocation_management(HUCs_layer, "HAVE_THEIR_CENTER_IN", feature_layer, selection_type="NEW_SELECTION")
arcpy.CopyFeatures_management(HUCs_layer, selection_name)
Ich suche nach einer Funktion zum Entfernen von Feature-Layern und konnte keine finden.
Mir ist klar, dass ich dort eine Art Zählung anbringen könnte oder etwas, um jede im Rahmen des Programms einzigartig zu machen, aber das ist nicht ideal, es sei denn, es gibt keine Möglichkeit, Feature-Layer zu entfernen.
quelle
Sie können arcpy.mapping.RemoveLayer aufrufen , um eine Ebene aus dem Inhaltsverzeichnis zu entfernen.
quelle
Dies ist, was ich benutze, um Ebenen zu entfernen.
arcpy.mapping.RemoveLayer ("DataFrame", "Layername")
Oder Looping:
quelle
Verwenden
mxd.save()
Sie diese Option, wenn Sie ein Kartendokument verwenden, das nichtCURRENT
sicherstellt, dass der Layer nicht angezeigt wird. Fügen Sie außerdem eine print-Anweisung in Ihr Skript ein:Nur um sicherzugehen, dass eine Ebene gefunden wird, die überhaupt gelöscht werden kann.
quelle
Versuche dies:
quelle