Suite

Impossible d'exécuter deux fois un simple script psycopg2 lors de l'exécution à partir d'ArcGIS Desktop en tant qu'outil de script

Impossible d'exécuter deux fois un simple script psycopg2 lors de l'exécution à partir d'ArcGIS Desktop en tant qu'outil de script


Je construis un service de géotraitement qui interroge une base de données SDE (s'exécutant sur postgres) et renvoie les résultats. Je fais beaucoup de développement en appelant le script à partir d'une boîte à outils dans ArcGIS desktop 10.3.

Pour une raison quelconque, lorsque j'appelle le script ci-dessous dans le bureau ArcGIS, il s'exécute avec succès la première fois, puis échoue à chaque fois après cela avec l'objet 'NoneType' n'est pas appelable à la ligne 12 alors que j'essaie d'itérer dans AllCornerPointsList. Si je ferme ArcMap et l'appelle, cela fonctionne la première fois, puis échoue.

import psycopg2 conn = psycopg2.connect(host='localhost', database ='sde', user="sde", password="somepassword") curs = conn.cursor() sqlStatement = """SELECT * FROM sde.gly_ula_corners """ curs.execute(sqlStatement) inAllCornerPointsList = curs.fetchall() pour cornerPoint dans inAllCornerPointsList : print cornerPoint curs.close() conn.close() print 'Complete'

Pour compliquer davantage les choses, si je sélectionne * dans une table différente (sde.countyboundaries), mon script s'exécute avec succès à chaque fois.

Le type de géométrie pour sde.gly_ula_corners est shape st_point. Le type de géométrie pour sde.countyboundaries est shape st_geometry. C'est la seule différence qui me saute aux yeux tout de suite - l'un est un point fc et l'autre est un polygone.

Une idée de ce qui pourrait causer cela ? Y a-t-il un environnement de mémoire étrange au travail ? L'appel du script plusieurs fois à partir de la ligne de commande ou de pythonwin n'échoue pas.


Il s'avère que le problème était lié à la conversion décimale. J'ai converti mes champs de base de données en texte en fonction de cette réponse :

Géotraitement ArcGIS "Aucun type" Deuxième fois

Et puis re-cast pour flotter dans mon script. Maintenant, cela fonctionne comme prévu.


Voir la vidéo: Qgis Tutorial 114: Convertir un fichier vecteur en raster