banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Pour sécuriser votre compte sur les forums du GeoRezo, nous demandons de changer votre mot de passe.

Vous allez recevoir un message pour effectuer ce changement de mot de passe.

Merci de bien respecter les règles préconisées.

#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

 

Pied de page des forums

Powered by FluxBB