Suite

Comment transmettre uniquement les fonctionnalités sélectionnées dans la boîte à outils python

Comment transmettre uniquement les fonctionnalités sélectionnées dans la boîte à outils python


J'ai une classe d'entités dans une géodatabase fichier. Je souhaite sélectionner des entités dans la classe d'entités et exporter leur attribut vers une feuille Excel. J'ai besoin d'un outil python dans ArcGIS qui fait cela. Mon problème est de savoir comment puis-je transmettre uniquement les fonctionnalités sélectionnées au curseur arcpy.

Dans le post (Obtenir la liste des entités sélectionnées dans ArcGIS for Desktop à l'aide du code Python ? ), j'ai lu que l'objet curseur ne renvoie que les lignes sélectionnées pour une couche. Mais cela ne semble pas fonctionner pour une classe d'entités dans une géodatabase fichier. Lorsque je passe une classe d'entités au curseur de recherche, il renvoie toutes les entités de la classe d'entités, même lorsqu'il existe des entités sélectionnées dans ArcMAP.

Si vous avez besoin de plus d'informations n'hésitez pas à demander.

code pour transmettre la classe d'entités à la boîte à outils python

def getParameterInfo(self): param1 = arcpy.Parameter( displayName = "Input Feature", name = "in_layer", datatype = "DEFeatureClass", parameterType = "Required", direction= "Input") param1.filter.list = [ "Polyline"] params = [param1] return params def execute(self, parameters, messages): fc = parameters[0].valueAsText fields = [f.name for f in arcpy.ListFields(fc)] l = [[row .getValue(field) pour la ligne dans arcpy.SearchCursor(fc)] pour le champ dans les champs ]

Lors de la définition de votre paramètre, vous devez utiliser une couche, et non une classe d'entités, si vous souhaitez tirer parti des sélections déjà effectuées sur celle-ci.

def getParameterInfo(self): """Définir les définitions de paramètres""" fc = arcpy.Parameter(displayName='Features', name="features", datatype="Feature Layer", parameterType="Required", direction="Input ")

J'ai récupéré le code ci-dessus dans Définir les valeurs par défaut pour la table de valeurs dans l'outil Python Toolbox - il semble correct, avec l'essentiel à faire attention à êtretype de données='Couche d'entités', mais je ne l'ai pas testé.


En fait, des solutions existent.

  1. Utilisez "where_clause" dans les paramètres d'entrée du curseur pour sélectionner dans la classe d'entités et passer l'entité sélectionnée au curseur. Pour une explication détaillée ici
  2. Utilisez la sélection par attribut ou emplacement selon vos besoins et exécutez le curseur sur cette classe d'entités. Désormais, le curseur sera actif sur les entités sélectionnées. Détails ici.

Voir la vidéo: 17. Python peruskurssi: Funktiot