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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Wed 28 September 2011 10:55

M.Gresset
Participant occasionnel
Date d'inscription: 28 Sep 2011
Messages: 15

Incrémentation d'un champ dans un Model Builder

Bonjour,

J'ai créé un modèle pour me permettre d'automatiser certaines tâches. Je réalise des relevés terrain avec un GPS et je souhaite pouvoir intégrer mes données dans le SIG de manière automatique après chaque sortie terrain. Mais je rencontre un problème avec mon modèle!

J'ai un champ Id_Arc dans mon shape RESEAU.SHP, identifiant unique pour chaque tronçon. Or, pour les nouveaux relevés, la valeur de cet Id est O, j'ai donc un champ avec les valeurs suivantes :

                  Id_Arc
                    451
                    452
                    453
                      0
                      0

J'aimerais calculer automatiquement les nouvelles valeurs (les 0). J'ai essayé l'outil calculer un champ de l'ArcToolBox, dans le but d'utiliser la calculatrice, mais je ne trouve pas le code me permettant de calculer les valeurs manquantes..

J'espère que vous pourrez m'aider, merci d'avance!

Hors ligne

 

#2 Wed 28 September 2011 11:08

nitram
Participant assidu
Lieu: Brest
Date d'inscription: 19 May 2009
Messages: 990
Site web

Re: Incrémentation d'un champ dans un Model Builder

Bonjour,

Des pistes :
-> http://www.ian-ko.com/free/free_arcgis.htm#Field
avec le "rec_Number.cal"
ou
-> http://support.esrifrance.fr/index.asp? … mbres.html

Dernière modification par nitram (Wed 28 September 2011 11:11)

Hors ligne

 

#3 Thu 29 September 2011 08:40

M.Gresset
Participant occasionnel
Date d'inscription: 28 Sep 2011
Messages: 15

Re: Incrémentation d'un champ dans un Model Builder

Merci pour ces pistes, notamment le rec_number.cal qui est une partie de la solution de mon problème. Par contre, je bloque sur la première partie de code ; je voudrais pouvoir récupérer la valeur maximum de mon champ (453 dans l'exemple), pour l'utiliser comme point de départ pour calculer les autres valeurs et obtenir :
                             Id_Arc
                                451
                                452
                                453
                                454
                                455

J'ai essayé mais sans succès! J'ai également pensé à utiliser le résumé statistique mais j'obtiens une nouvelle table, et je ne sais pas comment appeler la valeur trouver dans cette table...

Hors ligne

 

#4 Thu 29 September 2011 09:25

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Incrémentation d'un champ dans un Model Builder

Salut et bienvenue,

En ce servant de ta colonne FID, celà ne résoudrait t'il pas ton problème?
A+
Joël

Hors ligne

 

#5 Thu 29 September 2011 09:56

M.Gresset
Participant occasionnel
Date d'inscription: 28 Sep 2011
Messages: 15

Re: Incrémentation d'un champ dans un Model Builder

Merci!

Je pourrais peut-être en effet recalculer mes Id_Arc pour qu'ils correspondent aux valeurs de la colonne FID, tout simplement!

Mais si je garde les Id_Arc tels qu'ils sont pour le moment, est-ce que je peux faire une boucle qui parcourt toute ma colonne pour trouver le maximum. Je n'ai pas fait de programmation depuis un moment et je suis un peu perdue! Mon idée serait d'avoir cette boucle qui me donne l'Id max. Je réutiliserais ensuite ce max comme valeur de départ pour calculer les valeurs manquantes.

Mais quel est le code pour écrire ceci? Pour le moment, j'ai :

For i = 1 To quelque chose
     If Id> max then max = Id
Next i

Je bloque surtout sur le To "quelque chose", je ne sais pas comment passer à la dernière ligne de la colonne!

Hors ligne

 

#6 Thu 29 September 2011 10:03

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Incrémentation d'un champ dans un Model Builder

Que dit ta colonne FID par rapport à ta colonne ID_arc?
(entre ces 2 colonnes le pas est conservé donc possibilité de s'en servir)
PS: les boucles dans la calculette c'est pas le pied wink

Hors ligne

 

#7 Thu 29 September 2011 10:13

M.Gresset
Participant occasionnel
Date d'inscription: 28 Sep 2011
Messages: 15

Re: Incrémentation d'un champ dans un Model Builder

Ma colonne Id_arc commence aux environs de 900 mais ce n'est pas vraiment un problème si je remplace par les valeurs FID. Le seul petit bémol et que je devrai ensuite faire la même chose pour la table des noeuds et redonner les bonnes valeurs aux colonnes correspondant aux champs "noeud début tronçon" et "fin tronçon" de la table des tronçons... mais ça semble assez simple!

Dommage pour la boucle!

Merci!

Hors ligne

 

#8 Thu 29 September 2011 10:22

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Incrémentation d'un champ dans un Model Builder

Ce que je voulais dire c'est que si tes Id_arc commence à 900 pour un FID de 1
--> Id_arc1=900 pour FID=1
--> Id_arc2=901 pour FID=2
If Id_arc=0 then
Id_arc=900+FID
Pour tes autres colonnes il te suffit de faire la même chose avec une autre formule.
Ne pas oublier d'enregistrer le code VB en .cal (avec enregistrer) et tu pourras les utiliser dans ton model builder
J'espère être clair big_smile
A+
Joël

Hors ligne

 

#9 Thu 29 September 2011 11:09

M.Gresset
Participant occasionnel
Date d'inscription: 28 Sep 2011
Messages: 15

Re: Incrémentation d'un champ dans un Model Builder

Ok, mais ça ne marche pas pour moi car les Id_arc ne sont pas rangés dans le même ordre que les FID : (

Hors ligne

 

#10 Thu 29 September 2011 11:24

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Incrémentation d'un champ dans un Model Builder

Alors celà mérite quelques explications complémentaires car visiblement je n'ai pas compris ton problème sad
Peux tu nous poster quelques lignes de ta table?

Hors ligne

 

#11 Thu 29 September 2011 11:39

M.Gresset
Participant occasionnel
Date d'inscription: 28 Sep 2011
Messages: 15

Re: Incrémentation d'un champ dans un Model Builder

Oui bien sûr, voici ma table :


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#12 Thu 29 September 2011 15:34

Cornet Jérémie
Participant assidu
Lieu: Nouméa
Date d'inscription: 6 Apr 2008
Messages: 229

Re: Incrémentation d'un champ dans un Model Builder

Bonjour,
Si on considère que les enregistrements qui sont à zéro sont forcément en fin de table alors on peut appliquer le calcul suivant dans le champs Id_arc :

Code:

Static maxim as integer
if [Id_Arc] > 0 and  [Id_Arc] > maxim then
 maxim =  [Id_Arc]
else if [Id_Arc] = 0 then
 maxim = maxim + 1
end if

dans le bloc de code (vbscript) et maxim comme valeur.

Jérémie

NB : ce code sera faux si les valeurs 0 ne sont pas toutes en fin de table

Dernière modification par Cornet Jérémie (Thu 29 September 2011 15:36)

Hors ligne

 

#13 Thu 29 September 2011 16:59

M.Gresset
Participant occasionnel
Date d'inscription: 28 Sep 2011
Messages: 15

Re: Incrémentation d'un champ dans un Model Builder

Merci, en effet le code fonctionne très bien jusqu'à ce qu'il y est une valeur 0. J'ai essayé de trier le champ Id_Arc avant de lancer le calcul mais apparemment le tri n'est pas pris en compte. Donc, j'ai les bonnes valeurs mais pas pour toute la colonne sad

Hors ligne

 

Pied de page des forums

Powered by FluxBB