Pages: 1
- Sujet précédent - ArcGis 10 : Calculatrice de valeurs de champs : Script VB - Sujet suivant
#1 Thu 08 December 2011 11:21
- Florent45
- Juste Inscrit !
- Date d'inscription: 1 Nov 2010
- Messages: 4
ArcGis 10 : Calculatrice de valeurs de champs : Script VB
Bonjour,
j'essaie actuellement de classer des teneurs en cadmium enregistrées dans le champ "Cd" (réel double) d'une table de ma géodatabase (en 6 classes différentes). Pour cela j'ai créé un second champs "ICMM_Cd" (réel double) afin de calculer ces classes selon la teneurs en Cadmium. J'utilise ensuite la calculatrice d'ArcGis pour calculer le champs "ICMM_Cd" selon la valeur rencontrée à l'aide d'un script VB que voici :
Code:
Dim icmmcd If [Cd] <="0,25" Then icmmcd ="1" ElseIf [Cd]>0,25 and <=0,35 Then icmmcd="2" ElseIf [Cd]>"0,35" and <="0,50" Then icmmcd="3" ElseIf [Cd]>"0,50" and <="1" Then icmmcd="4" ElseIf [Cd]>"1" and <="2" Then icmmcd="5" ElseIf [Cd]>"2" Then icmmcd="6" End If
Sachant que ICMM_Cd=icmmcd.
Or quand je lance le calcul du champs, ArcGis me retourne une erreur 99999, je pense que la structure de mon script est correcte (en même temps on peut pas faire beaucoup plus simple..) mais il doit y avoir une erreur de syntaxe que je n'arrive pas à déceler.
Auriez vous une idée pour me décoincer ?
Merci d'avance.
Hors ligne
#2 Thu 08 December 2011 11:48
- dominique.lys
- Participant assidu
- Date d'inscription: 5 Oct 2006
- Messages: 473
- Site web
Re: ArcGis 10 : Calculatrice de valeurs de champs : Script VB
Salut,
Deux choses:
-Pour comparer des nombres il faut que tes variables soient des nombres et non du texte. Donc d'une part vérifier le type du champs [Cd] et convertir les valeurs en nombre si nécessaire, d'autre part ne pas mettre de guillemets pour la valeur de comparaison.
-Pour évaluer plusieurs critère dans ta condition il faut que pour chaque comparaison que les deux valeurs soient explicites, donc ici on mets deux fois [cd] --> [Cd]>1 and [Cd]<=2
Code:
Dim icmmcd as integer If [Cd] <=0.25 Then icmmcd =1 ElseIf [Cd]>0.25 and [Cd]<=0.35 Then icmmcd=2 ElseIf [Cd]>0.35 and [Cd]<=0.50 Then icmmcd=3 ElseIf [Cd]>0.50 and [Cd]<=1 Then icmmcd=4 ElseIf [Cd]>1 and [Cd]<=2 Then icmmcd=5 ElseIf [Cd]>2 Then icmmcd=6 End If
Hors ligne
#3 Thu 08 December 2011 13:08
Re: ArcGis 10 : Calculatrice de valeurs de champs : Script VB
Petit conseil : la commande Case évite de s'enquiquiner avec les boucles
Pas besoin de remplacer Mavariable, elle ne sert que pour le calcul du champ concerné.
Code:
Dim Mavariable as integer Select Case True Case [Cd] <= 0.25 Mavariable = 1 Case [Cd] > 0.25 and [Cd] <= 0.35 Mavariable = 2 Case [Cd] > 0.35 and [Cd] <= 0.50 Mavariable = 3 Case [Cd] > 0.50 and [Cd] <= 1 Mavariable = 4 Case [Cd] > 1 and [Cd] <= 2 Mavariable = 5 Case [Cd] > 2 Mavariable = 6 End select __esri_field_calculator_splitter__ Mavariable
Hors ligne
#4 Thu 08 December 2011 14:26
- Florent45
- Juste Inscrit !
- Date d'inscription: 1 Nov 2010
- Messages: 4
Re: ArcGis 10 : Calculatrice de valeurs de champs : Script VB
Merci pour ces réponses, du coup j'ai pris la solution de Dominique car bien que mes variables soient bien des nombres (réels doubles) et après avoir fait les changements proposés dans les remarques, la solution de Robin ne fonctionnait toujours pas (toujours le même message d'erreur). Pour le code de Dominique je croit qu'il ne faut pas préciser le type de variable utilisé avec ArcGis 10, du coup avec :
Code:
Dim Mavariable Select Case True Case [Cd] <= 0.25 Mavariable = 1 Case [Cd] > 0.25 and [Cd] <= 0.35 Mavariable = 2 Case [Cd] > 0.35 and [Cd] <= 0.50 Mavariable = 3 Case [Cd] > 0.50 and [Cd] <= 1 Mavariable = 4 Case [Cd] > 1 and [Cd] <= 2 Mavariable = 5 Case [Cd] > 2 Mavariable = 6 End select
sa fonctionne. Il y a juste une erreur au niveau des valeurs "Null" dans le champs "Cd" mais par défaut ArcGis met des "0" dans le champs "ICMM_Cd" donc cela me convient . Je me demande d'ailleurs si mon problème ne vient pas des valeurs nulles au départ.
En tout cas merci beaucoup, le sujet est résolu.
Hors ligne
Pages: 1
- Sujet précédent - ArcGis 10 : Calculatrice de valeurs de champs : Script VB - Sujet suivant