#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
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
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
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
Peux tu nous poster quelques lignes de ta table?
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
Hors ligne