Mam skrypt oparty na ArcPy, w którym próbuję przeciąć dwie warstwy, przy czym jedna warstwa musi mieć środek ciężkości w drugiej warstwie.
Ponieważ muszę wiedzieć, że jedna warstwa (warstwa_operatora poniżej) zawiera środek ciężkości drugiej, używam narzędzia arcpy.SelectLayerByLocation_management ().
Nie mam otwartego dokumentu mapy (* .mxd), więc aby to zrobić, muszę użyć opcji Utwórz warstwę obiektów, aby go wprowadzić.
Dokumentacja zauważa, że warstwa funkcji zniknie po wyjściu z programu, ale muszę ją wcześniej usunąć, ponieważ mam ją w pętli podobnej do poniższej
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)
Szukam funkcji do usuwania warstw obiektów i nie udało mi się jej znaleźć.
Zdaję sobie sprawę, że mógłbym wprowadzić tam jakąś liczbę lub coś, co sprawi, że każdy będzie wyjątkowy w zakresie programu, ale nie jest to idealne, chyba że nie ma sposobu na usunięcie warstw cech.
źródło
Możesz wywołać arcpy.mapping.RemoveLayer, aby usunąć warstwę ze spisu treści.
źródło
Tego używam do usuwania warstw.
arcpy.mapping.RemoveLayer („DataFrame”, „Nazwa warstwy”)
Lub zapętlanie:
źródło
Użyj,
mxd.save()
jeśli używasz dokumentu mapy, który nie maCURRENT
na celu upewnienia się, że warstwa pozostała. Dodaj również instrukcję skryptową do skryptu:Aby mieć pewność, że w ogóle znajdzie warstwę do usunięcia.
źródło
Spróbuj tego:
źródło