Suite

Copie uniquement sélectionnée avec arcpy.CopyFeature_management ?

Copie uniquement sélectionnée avec arcpy.CopyFeature_management ?


J'essaie de tester si chaque entité d'une liste de classes d'entités croise chaque entité d'un fichier de formes (couche de découpage). Je travaille avec arcpy dans ArcGIS 10.0

L'aide du bureau d'arcgis indique que si l'entité provient d'une géodatabase, toutes les entités seront copiées, mais s'il s'agit d'une couche, seule la sélection sera copiée (http://help.arcgis.com/en/arcgisdesktop/10.0/help/ index.html#//001700000035000000).

Dans mon code, je travaille avec une liste de classes d'entités à partir d'une géodatabase. Afin de ne copier que les éléments sélectionnés, je convertis d'abord chaque classe d'entités en couche d'entités :

pour fc dans fcList : pour rangée dans rangées : where_clause = "secteur = '{0}'".format(secteur) arcpy.MakeFeatureLayer_management(pochoir, "ptmp", where_clause)#pochoir est #la fonction de clip. Pour chaque ligne je fais un tmp correspondant à la géométrie que j'utiliserai #after. arcpy.MakeFeatureLayer_management(fc, "toselect") arcpy.SelectLayerByLocation_management("toselect", "INTERSECT", "ptmp") arcpy.CopyFeatures_management("toselect", "selected") ## Voici le problème : #"selected" devrait être vide lorsqu'il ne se coupe pas avec "ptmp" mais tout le "toselect" (donc #le fc entier) est copié même s'il ne se coupe pas. nbrow = arcpy.GetCount_management("selected") outName = "{0}_{1}_{2}".format(fc, secteur, count) if nbrow > 0 : ## Donc toutes les couches vont dans le if even s'ils ne se croisent pas. faire autre chose : faire autre chose

Ce que vous voulez d'abord faire est de vérifier une sélection. Cela peut être fait en vérifiant si arcpy.Describe (layer).FIDSet renvoie quelque chose. FIDSet est une propriété d'un objet de description de calque. Il renvoie les OID des entités sélectionnées, et rien s'il n'y a pas d'entités sélectionnées.

Essayez ceci après avoir fait votre sélection :

if arcpy.Describe ("toselect").FIDSet : arcpy.CopyFeatures_management("toselect", "selected")

Si vous voulez qu'une classe d'entités vide soit renvoyée lorsqu'il n'y a pas de sélection, vous devrez en coder une autre : make feature class, ou quelque chose du genre.


Voir la vidéo: How to create Point, Line u0026 Polygon from Excel .CSV Table in ArcGIS Pro Khmer GIS Academy