#1 Thu 10 December 2015 17:18
- Estelle_Geo
- Juste Inscrit !
- Date d'inscription: 15 Oct 2015
- Messages: 7
Python - Calculer un champ
Bonsoir à tous,
J'essaie d'ajouter et de calculer un nouveau champ à partir d’un autre champ de la même table au moyen d'une double boucle via la fenêtre python.
L'idée est d'attribuer un numéro identique chaque 8 entités. Exemple : Les entités ayant un ordre de 1 à 8 auront un 1 d'attribué dans le nouveau champs créé, les entités ayant un ordre de 9 à 17 auront un 2 et ainsi de suite...
Code:
# Chargement des variables
inTable = "Atlas_PL"
fieldName = "ATLAS_2"
fieldPrecision = 9
expression = "Ordre()"
code_block = """def Ordre():
i = 0
while !ORDRE! <= max(!ORDRE!):
if !ORDRE!%8 == 0:
i = i + 1
!ATLAS_2! = i
else:
!ATLAS_2! = i
!ORDRE! = !ORDRE! + 1
return i
"""
# Ajout d'un champ ATLAS_2
arcpy.AddField_management(inTable, fieldName, "LONG", fieldPrecision, "", "", "NULLABLE")
# Calcul du champ pour obtenir des
arcpy.CalculateField_management(inTable, fieldName, expression, "PYTHON", code_block)Le problème vient du bloc de code de l'expression Ordre() et relève probablement d'une erreur de syntaxe (ERROR 000989).
C'est la première fois que je calcule un nouveau champs via un code bloc et ne suis donc pas sûre de la syntaxe. Donc l'erreur est peut-être très flagrante pour les habitués.
Si quelqu'un a des suggestions/infos/conseils, merci d'avance ![]()
Bonne soirée.
Dernière modification par Estelle_Geo (Thu 10 December 2015 17:20)
Hors ligne
#2 Fri 11 December 2015 08:41
- lebon henri
- Participant actif
- Lieu: Vendée
- Date d'inscription: 14 Jan 2008
- Messages: 99
Re: Python - Calculer un champ
Salut, si t'es en version 10.1 ou plus, tu peux essayer de faire ça.
a+
Code:
import arcpy
slice8 = 8
slice8increment = 0
numero = 1
with arcpy.da.UpdateCursor(r"Chemin de ma couche", ("Champ à mettre à jour")) as cursor:
for row in cursor:
slice8increment += 1
if slice8 < slice8increment:
slice8 += 8
numero += 1
row[0] = numero
cursor.updateRow(row)Dernière modification par lebon henri (Fri 11 December 2015 08:42)
Hors ligne


