У меня есть скрипт на основе ArcPy, где я пытаюсь пересечь два слоя, где один слой должен иметь свой центроид в другом слое.
Поскольку мне нужно знать, что один слой (Feature_layer ниже) включает в себя центроид другого, я использую инструмент arcpy.SelectLayerByLocation_management ().
У меня нет открытого документа карты (* .mxd), поэтому для этого мне нужно использовать Make Feature Layer для подачи в него.
В документации отмечается, что векторный слой исчезнет при выходе из программы, но мне нужно, чтобы он исчез раньше, так как он находится в цикле, подобном приведенному ниже.
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)
Я ищу функцию для удаления векторных слоев, но я не смог ее найти.
Я понимаю, что мог бы добавить сюда какой-то счет или что-то, чтобы сделать каждый из них уникальным в рамках программы, но это не идеально, если нет способа удалить слои объектов.