#1 Thu 22 August 2013 21:41
- Mr_cham
- Juste Inscrit !
- Date d'inscription: 9 Feb 2013
- Messages: 3
Probleme avec les selections dans un script python
Bonjour à tous !
Je suis actuellement et ce depuis trois jours en train de m’arracher les cheveux sur un script python. Je serai le plus heureux des étudiants sigistes si quelqu'un parvenait à m'éclairer, et ça laisserai mes cheveux tranquille.
J'utilise ArcGIS 10.0 et j'ai écrit un script pour automatiser la création de polygones de voronoï. Ce traitement découpe autour de points appelées « germes » une mosaïque de polygones ayant ses frontières à la médiane des distances qu’il a avec les autres points frontière (http://help.arcgis.com/fr/arcgisdesktop … 001m000000).
Je travaille sur la modélisation de landmark, je dois donc appliquer ce traitement à une couche de landmark officiel, type parmi d’autres. J'ai mis au point un petit algorithme permettant de vérifier dans les autres couches de landmarks s’il y en aurait d'autres qui pourraient être inséré dans le fichier des landmark officiels.
J’ai modélisé le problème et ai programmé différentes fonction, celle qui compte les landmarks me pose un problème. Cette fonction a pour but de compter le nombre de landmarks identiques aux germes des polygones de voronoi. Elle devra donc ajouter +1 au compteur du landmark_germe autant de fois que le même landmark est repéré dans le polygone. Si elle détecte de nouveaux landmarks, la fonction appellera une autre fonction pour entrer ce point dans une table de tri.
Le code :
Code:
def nb_lm(lm_dataset): #Nb d’utilisation des landmarks des tables LM sugg et LM user, sous contraintes spatiales rows_voro=arcpy.UpdateCursor(lm_voro) for row_voro in rows_voro: dat = str(row_voro.Input_FID) arcpy.SelectLayerByAttribute_management(lm_voro,"NEW_SELECTION",'"Input_FID" ='+dat) arcpy.SelectLayerByLocation_management(lm_dataset, "WITHIN", lm_voro, autour, "NEW_SELECTION") print "fait" arcpy.CopyFeatures_management(lm_dataset,"temp") if int(arcpy.GetCount_management("temp").getOutput(0)) == int(arcpy.GetCount_management(lm_dataset).getOutput(0)) : #si la selection est nulle, landmark pas a supprmier print("rien dans les parages pour"+row_voro.LMNOM) row_voro.suppr = "non" rows_voro.updateRow(row_voro) else: print "trouvé" #suite du traitement
J’ai cette erreurs: Runtime error <class 'arcgisscripting.ExecuteError'>: ERROR 000358: Expression non valide Échec de l’exécution de (SelectLayerByAttribute)
SQL donc.. Pourtant quand je lance cette ligne toute seul dans l’interpréteur en mettant a dat une valeur, ça marche. Et quand je print dat avant ce traitement, c’est bien un chiffre de type str. Je comprends pas pourquoi ça marche pas dans le code. J’ai essayé de tourner le truc dans tous les sens, et suis sûr que c’est un truc tout con. Ou c'est ArcGIS. Ou mes compétences restreintes en programmation.
Quelqu’un voit?
Merci pour votre aide!
Hors ligne
#2 Fri 23 August 2013 09:40
- guil31
- Participant actif
- Date d'inscription: 22 Jan 2013
- Messages: 79
Re: Probleme avec les selections dans un script python
Bonjour,
Tu peux essayer comme ca:
requete = """ "Input_FID" = """ + str(row_voro.Input_FID)
arcpy.SelectLayerByAttribute_management(lm_voro,"NEW_SELECTION",requete)
Hors ligne
#3 Fri 23 August 2013 11:21
- Mr_cham
- Juste Inscrit !
- Date d'inscription: 9 Feb 2013
- Messages: 3
Re: Probleme avec les selections dans un script python
J'ai essayé de remplacer ça dans mon code, mais apparemment chaque jour amène son lot de conneries différentes.
Aujourd’hui la fonction ne se lance plus du tout et me lâche cette erreur, alors que rien n'a changé depuis hier.
Runtime error <class 'arcgisscripting.ExecuteError'>: The value cannot be a feature class ERROR 000840: La valeur ne correspond pas à un Couche raster. ERROR 000840: La valeur ne correspond pas à un Couche de mosaïque.
Je comprends pas pourquoi ! Rien du tout n'a changé depuis hier, et ça marchait. Bref, j'ai transformé mes couches grâce à arcpy.MakeFeatureLayer_management mais la même erreur de selectlayerbyattribute est toujours là.
Tant pis, je vais faire ma carte à la main et installer QGIS pour mon avenir dans les sig.
Merci guil31
Dernière modification par Mr_cham (Fri 23 August 2013 11:22)
Hors ligne
#4 Fri 23 August 2013 11:41
- guil31
- Participant actif
- Date d'inscription: 22 Jan 2013
- Messages: 79
Re: Probleme avec les selections dans un script python
J'ai déjà eu ce type d'erreur parceque j'utilisais des dbf
Je m'en suis sortie en faisant des vues tabulaires
Mais là, je ne comprend pas trop....
c'est quoi ton lm_voro ?
Hors ligne
#5 Fri 23 August 2013 14:15
- Mr_cham
- Juste Inscrit !
- Date d'inscription: 9 Feb 2013
- Messages: 3
Re: Probleme avec les selections dans un script python
lm voro c'est les polygones de voronoï qui viennent d’être créé. Mais là, la console python bug complètement. Je lance des lignes pour faire et défaire des jointures, la fonction s’exécute mais rien ne se passe dans mes couches. J'abandonne et je fait tout à la main, décidé
Hors ligne
#6 Fri 23 August 2013 14:20
- guil31
- Participant actif
- Date d'inscription: 22 Jan 2013
- Messages: 79
Re: Probleme avec les selections dans un script python
Bon courage
Hors ligne