#1 Mon 11 June 2012 17:25
- mishmish
- Juste Inscrit !
- Date d'inscription: 11 Jun 2012
- Messages: 8
script python
Bonjour,
Actuellement en stage, je me retrouve face un problème. Je souhaiterai dans mon modelbuilder (arcgis), créer une requête grâce à un script python.
Dans ma table attributaire j'ai mes deux champs, le premiere le champ RGPMT et un autre NOM_ZONE, je souhaiterai pouvoir calculer mon champ NOM_ZONE en lui indiquant que si dans mon champ RGPMT la valeur = à i3 (par exemple), alors dans mon champ NOM_ZONE ça correspondra à la valeur "RI2".
Pour cela, j'ai déja tenté un script qui selon moi me parrait correcte, mais qui ne fonctionne pas >_< ;
Calculatrice de valeurs de champs.
Code:
def montri(RGPMT,NOM_ZONE) : if (RGPMT == 'i3') : NOM_ZONE = 'RI2' elif (RGPMT == 'i2') : NOM_ZONE = 'BI2'
NOM_ZONE = def montri(!RGPMT!, !NOM_ZONE!)
Merci de jeter un oeil à mon sujet !
Hors ligne
#2 Tue 12 June 2012 08:18
- Nicolas Granier
- Participant assidu
- Date d'inscription: 19 Apr 2007
- Messages: 271
Re: script python
Bonjour,
Je pense que que la première partie il manque
Code:
return NOM_ZONE
à mettre à la fin au même niveau que if et elif
et dans la deuxième partie il ne faut pas mettre le "def"
NOM_ZONE =
Code:
montri(!RGPMT!, !NOM_ZONE!)
A+
Hors ligne
#3 Tue 12 June 2012 10:17
- mishmish
- Juste Inscrit !
- Date d'inscription: 11 Jun 2012
- Messages: 8
Re: script python
Merci, ça fonctionne !!
Bonne journée
Hors ligne
#4 Mon 25 June 2012 09:38
- mishmish
- Juste Inscrit !
- Date d'inscription: 11 Jun 2012
- Messages: 8
Re: script python
Heu... cela ne fonctionne plus, j'utilise pourtant la même expression :
Code:
def montri (RGPMT, NOM_ZONE) : if (RGPMT == 'i3') : NOM_ZONE = 'RI2' elif (RGPMT == 'i2') : NOM_ZONE = 'RI2' elif (RGPMT == 'f3') : NOM_ZONE = 'RF' elif (RGPMT == 'f2') : NOM_ZONE = 'RF' elif (RGPMT == 'G1') : NOM_ZONE = 'BG1' elif (RGPMT == 'g1') : NOM_ZONE = 'BG1' elif (RGPMT == 'g3') : NOM_ZONE = 'RG' elif (RGPMT == 'g2') : NOM_ZONE = 'RG' elif (RGPMT == 't1') : NOM_ZONE = 'BT1' elif (RGPMT == 't2') : NOM_ZONE = 'RT' elif (RGPMT == 't3') : NOM_ZONE = 'RT' elif (RGPMT == 'i1') : NOM_ZONE = 'BI1' elif (RGPMT == 'I1') : NOM_ZONE = 'RI1' elif (RGPMT == 'I2') : NOM_ZONE = 'RI2' elif (RGPMT == 'p2') : NOM_ZONE = 'RP' elif (RGPMT == 'g2p2') : NOM_ZONE = 'g2p2' elif (RGPMT == 'g3p2') : NOM_ZONE = 'g3p2' return NOM_ZONE
code : montri (!RGPMT!, !NOM_ZONE!)
(Arcgis ne m'informe pas sur une quelconque erreure de syntaxe)
Mais mon champ NOM_ZONE n'est composé que de valeures "NULL"
Quelqu'un saurait il pourquoi?
Hors ligne
#5 Tue 26 June 2012 11:14
- Nicolas Granier
- Participant assidu
- Date d'inscription: 19 Apr 2007
- Messages: 271
Re: script python
Bonjour,
Es-tu sur d'avoir bien coché Analyseur "Python" ?
A+
Hors ligne
#6 Tue 26 June 2012 11:16
- mishmish
- Juste Inscrit !
- Date d'inscription: 11 Jun 2012
- Messages: 8
Re: script python
Oui, c'est fait, et mon champ est de type text . Mes paramètres semblent correctes et pourtant .....
Hors ligne
#7 Tue 26 June 2012 12:08
- Nicolas Granier
- Participant assidu
- Date d'inscription: 19 Apr 2007
- Messages: 271
Re: script python
si je fais un copier coller du code c'est l'indentation (le décalage) entre lignes qui n'est pas bon mais peut être que firefox modifie celle-ci
Il ne faut qu'une seul espace par indentation.
Le code en lui même m'a l'air bon.
Hors ligne
#8 Wed 27 June 2012 14:22
- mishmish
- Juste Inscrit !
- Date d'inscription: 11 Jun 2012
- Messages: 8
Re: script python
J'ai essayé de l'appliquer à nouveau sur un projet ou j'ai recréer moi même les couches et leurs champs, ça marche . Je pense que ça vient des paramêtres des couches. Merci .
Je n'imaginais pas faire de la programmation en stage, mais heureusement grâce à vos cours .. je n'ai pas été totalement larguée ; )
Bonne continuation .
Hors ligne
#9 Wed 27 June 2012 14:28
- mishmish
- Juste Inscrit !
- Date d'inscription: 11 Jun 2012
- Messages: 8
Re: script python
Au passage, c'est Céline, élève en GGAT
Hors ligne
#10 Wed 27 June 2012 15:28
- Nicolas Granier
- Participant assidu
- Date d'inscription: 19 Apr 2007
- Messages: 271
Re: script python
Et bien merci Céline, ravi de voir que ça t'a aidé.
Au plaisir.
Hors ligne
#11 Thu 28 June 2012 17:23
- mishmish
- Juste Inscrit !
- Date d'inscription: 11 Jun 2012
- Messages: 8
Re: script python
Après avoir farfouillé sur le net, sans grand résultat....je souhaiterai savoir si dans la toolbox (principalement) il existe un outil pour fusionner des entités avec pour paramètre de fusion un script python ?
En vous remerçiant
Hors ligne
#12 Fri 29 June 2012 08:09
- Nicolas Granier
- Participant assidu
- Date d'inscription: 19 Apr 2007
- Messages: 271
Re: script python
??
J'avoue ne pas comprendre.
Tu souhaiterais que le paramètre de fusion soit une valeur stockée dans un script ?
Quel est le but ?
Hors ligne
#13 Fri 29 June 2012 09:18
- mishmish
- Juste Inscrit !
- Date d'inscription: 11 Jun 2012
- Messages: 8
Re: script python
Sur mon Plan de prévision des risques, j'ai une couche composée d'un champ NOM_ZONE (RG, BT1, RF, ...) avec plusieurs valeures, j'aimerai que toute les valeures RG se fusionnent en un seul polygone, toutes celles en RF la même chose, ... Et comme je réalise un modele, il me faudrai réaliser ça avec un outil toolbox que je puisse l'intégrer directement. L'outil Fusionner ne me permet que de fusionner des champs entiers.
Je pense pouvoir faire ça avec Calculer un champ et réaliser des requêtes, cependant je demande quand même ...
Hors ligne
#14 Fri 29 June 2012 14:37
- Nicolas Granier
- Participant assidu
- Date d'inscription: 19 Apr 2007
- Messages: 271
Re: script python
Ben oui la solution me semble être la bonne.
Hors ligne
#15 Fri 07 November 2014 12:53
- Samy-DT
- Participant assidu
- Date d'inscription: 5 Apr 2011
- Messages: 211
Re: script python
Bonjour, je fais remonter ce topic pour une info supplémentaire.
Est-il possible au sein d'un script d'un calculateur de champ d'en calculer un autre par la même occasion ?
Par exemple, ici, le return permet d'inscrire une valeur dans le champ en cours, mais peut-on rajouter une ligne qui inscrira une valeur dans un autre champ ?
A+
Hors ligne
#16 Fri 07 November 2014 15:58
- Nicolas Granier
- Participant assidu
- Date d'inscription: 19 Apr 2007
- Messages: 271
Re: script python
Bonjour,
Je ne pense pas que ce soit possible. Chercher une solution dans ce sens à mon avis reviendrait à contourner le "fonctionnement normal" de cet outil avec des surprises à la clé.
A+
Nicolas GRANIER
Hors ligne