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

GEODATA DAYS 2024

#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 !
wink

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 !!
wink

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

 

Pied de page des forums

Powered by FluxBB