Suite

Passer la valeur de GetParameterAsText à row.getValue() ?


J'essaie de créer un outil simple qui concatène les valeurs de deux champs et de l'enregistrer dans un champ nouvellement créé - le tout dans la même table. Cet outil devrait fonctionner avec n'importe quel fichier de formes, concaténer n'importe quel type de champs et créer un champ (avec le nom choisi par l'utilisateur). Mon problème est de savoir comment transmettre la valeur de "new_field_name" à row.getValue() (avant-dernière ligne du code). Ou tout autre moyen de faire la même chose ?

import time, arcpy startTime = time.clock() print "Start" shapefile = arcpy.GetParameterAsText(0) field_name_1 = arcpy.GetParameterAsText(1) field_name_2 = arcpy.GetParameterAsText(2) new_field_name = arcpy.GetParameterAsText(3) new_field_length = arcpy .GetParameterAsText(4) separator = arcpy.GetParameterAsText(5) arcpy.env.workspace = shapefile arcpy.env.overwriteOutput = True arcpy.AddField_management(shapefile, new_field_name, "Text", "", "", new_field_length) cur = arcpy .UpdateCursor(shapefile) pour la ligne dans cur : row.getValue() = (str(row.getValue(field_name_1)) + séparateur + str(row.getValue(field_name_2))) cur.updateRow(row)

Si vous devez utiliser la plaineMettre à jour le curseur, utilisationsetValueà la place deobtenirValeur

cur = arcpy.UpdateCursor(shapefile) pour la ligne dans cur : newValue = str(row.getValue(field_name_1)) + séparateur + str(row.getValue(field_name_2)) row.setValue(new_field_name, newValue) cur.updateRow(row)

La syntaxe du curseur devient un peu plus simple lorsque vous pouvez utiliser le da.UpdateCursor:

avec arcpy.da.UpdateCursor(shapefile, [field_name_1, field_name_2, new_field_name]) comme curseur : pour la ligne dans le curseur : newValue = str(row[0]) + séparateur + str(row[1]) row[2] = newValue curseur.updateRow(ligne)

Essayez row.setValue pour la colonne nouvellement ajoutée dans votre curseur de mise à jour.


Voir la vidéo: Map Automation 1: Using Arcpy to Change Layer Properties (Octobre 2021).