Suite

RuntimeError : impossible d'ouvrir la « classe de fonctionnalités » avec SearchCursor ?


J'ai un script très simple qui ne fonctionne pas.

import arcpy workspace = "C:UsersWorkAppDataRoamingESRIDesktop10.3ArcCatalogmaster.sde" arcpy.env.workspace = workspace wire = "gis.DBO. wire" avec arcpy.da.SearchCursor(wire, "id") comme curseur : pour la ligne dans le curseur : imprimer la ligne[0]

ça revientRuntimeError : impossible d'ouvrir 'gis.DBO.wire'


ACTUALISÉ

Je n'ai toujours pas compris cela. Je viens de faire une réparation sur ArcGIS Desktop 10.3, et cela ne l'a pas résolu. J'ai donc supprimé Python et l'ai réinstallé et cela ne fonctionne toujours pas.

J'ai ce script que j'ai essayé d'exécuter dans PyScripter et IDLE :

importer arcpy sde = "C:TempData.sde" domaines = arcpy.da.ListDomains(sde)

Je reçois:

Et, oui, c'est une connexion sde valide.

Si je fais exactement le même code ci-dessus dans la fenêtre Python d'ArcCatalog, cela fonctionne bien.

Voici l'erreur IDLE :

Traceback (appel le plus récent en dernier) : Fichier "", ligne 1, dans  domaines = arcpy.da.ListDomains(sde) RuntimeError

Je pense que le problème ici est que vous traitez le SearchCursor() comme un outil de géotraitement. Les outils de géotraitement peuvent respecter 1 ou plusieurs paramètres d'environnement (que vous découvrirez en consultant l'aide de l'outil) et l'un de ces paramètres est l'espace de travail.

Nulle part sur la page d'aide de SearchCursor() il n'est indiqué que Espace de travail est un cadre environnemental qu'il honore. En fait, je ne pense pas que cela honore personne ! Vous devez donc fournir le chemin complet car actuellement vous fournissez une chaîne"gis.DBO.wire".


Vous pouvez le faire. Je pense que ça marche. Je n'ai pas de connexion sde. je ne peux pas tester

import arcpy from arcpy import env env.overwriteOutput = True env.workspace ="Database Connections/master.sde" # vérifier le nom fc_list = arcpy.ListFeatureClasses() pour fcname dans fc_list : print fc #if wire est nommé gis.DBO.wire # utiliser dans le curseur le nom complet fcname = "gis.DBO.wire" fc = os.path.join(env.workspace,fcname) # vérifier s'il existe si arcpy.Exists(fc): imprimer "Featureclass Exist" avec arcpy.da .SearchCursor(fc, "id") en tant que curseur : pour la ligne dans le curseur : imprimer la ligne[0]


Voir la vidéo: Ошибка монеты Chia,runtimeerror unknown!!! (Octobre 2021).