Eu tenho um script baseado em ArcPy onde estou tentando cruzar duas camadas, onde uma camada deve ter seu centróide na outra camada.
Como eu preciso saber que uma camada (feature_layer abaixo) inclui o centróide da outra, estou usando a ferramenta arcpy.SelectLayerByLocation_management ().
Como não tenho um documento de mapa (* .mxd) aberto, para fazer isso, tenho que usar a opção Criar camada de recurso para alimentá-lo.
A documentação observa que a camada de recursos desaparecerá quando o programa sair, mas preciso que desapareça mais cedo, pois o tenho em um loop semelhante ao abaixo
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)
Estou procurando uma função para remover camadas de recurso e não consegui encontrar uma.
Sei que poderia colocar algum tipo de contagem lá ou algo para tornar cada um exclusivo no escopo do programa, mas isso não é o ideal, a menos que não haja maneira de remover as camadas de recursos.
fonte
Você pode invocar arcpy.mapping.RemoveLayer para remover uma camada do sumário.
fonte
É isso que eu uso para remover camadas.
arcpy.mapping.RemoveLayer ("DataFrame", "Nome da camada")
Ou loop:
fonte
Use
mxd.save()
se você estiver usando um documento de mapa que não éCURRENT
para garantir que a camada permaneça oculta. Além disso, adicione uma declaração de impressão no seu script:Apenas para garantir que ele encontre uma camada para excluir.
fonte
tente isto:
fonte