J'ai un script basé sur ArcPy où j'essaie d'intersecter deux couches où une couche doit avoir son centre de gravité dans l'autre couche.
Comme j'ai besoin de savoir qu'une couche (feature_layer ci-dessous) comprend le centroïde de l'autre, j'utilise l'outil arcpy.SelectLayerByLocation_management ().
Je n'ai pas de document ArcMap (* .mxd) ouvert, donc pour ce faire, je dois utiliser Make Feature Layer pour l'alimenter.
La documentation note que la couche d'entités disparaîtra à la fin du programme, mais j'ai besoin qu'elle disparaisse plus tôt car je l'ai dans une boucle similaire à ci-dessous
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)
Je recherche une fonction pour supprimer les couches d'entités et je n'ai pas pu en trouver une.
Je me rends compte que je pourrais y mettre une sorte de décompte ou quelque chose pour rendre chacun unique dans le cadre du programme, mais ce n'est pas idéal à moins qu'il n'y ait aucun moyen de supprimer les couches d'entités.
la source
Vous pouvez appeler arcpy.mapping.RemoveLayer pour supprimer un calque de la table des matières.
la source
C'est ce que j'utilise pour supprimer des calques.
arcpy.mapping.RemoveLayer ("DataFrame", "Layer Name")
Ou en boucle:
la source
À utiliser
mxd.save()
si vous utilisez un document ArcMapCURRENT
pour ne pas vous assurer que la couche a disparu. Ajoutez également une instruction d'impression dans votre script:Juste pour être sûr de trouver un calque à supprimer.
la source
essaye ça:
la source