Suite

Convertir l'objet du curseur de recherche en variable


À l'aide d'un script python, je voudrais lire un tableau comportant 27 colonnes. Pour chaque ligne, je souhaite stocker la valeur de chaque colonne dans une variable, afin que je puisse transmettre les valeurs à un script ultérieur en tant que paramètre d'entrée.

voici ce que j'ai pour l'instant :

importer arcpy depuis arcpy importer env depuis arcpy.sa import * import os workspace = r"X:Auftrag20151415154_Armasuisse_GHK4_ArbeitsordnerVoFArmasuisse_Vof.gdb" arcpy.env.workspace = workspace arcpy.env.scratchworkspace = workspace arcpy .env.overwriteOutput = True Inputdaten_txt = "Batchtable" Attributes = arcpy.ListFields(Inputdaten_txt) Attribute_List = [] pour le champ dans Attributes : Attribute_List.append(field.name) avec arcpy.da.SearchCursor(Inputdaten_txt) as Attribute_List. pour le champ dans Attribute_List : pour la ligne dans le curseur : OBJECTID = ("{0}".format(row[0])) Temp = ("{0}".format(row[1])) CalculationOption = ("{0 }".format(row[2])) ElevationModel = ("{0}".format(row[3])) DrainageNetwork_rainfall = ("{0}".format(row[4])) RelativeDrainageElevation = ("{ 0}".format(row[5])) Elevation_of_input_drainage_network = ("{0}".format(row[6])) ConstantDrainatePlus = ("{0}".format(row[7])) HydrographFile = (" {0}".format(row[8])) CoordinateFile = ("{0}".format(row[9])) Rugosité = ("{0}".format( row[10])) FlowBarrier = ("{0}".format(row[11])) DamFailure = ("{0}".format(row[12])) ContinueCalculationFrom = ("{0}".format (row[13])) ContinueTime = ("{0}".format(row[14])) ContinueInundationAsWaterDepth = ("{0}".format(row[15])) DurationOfSimulation = ("{0}". format(row[16])) SavingIntervall = ("{0}".format(row[17])) OutputSwitch = ("{0}".format(row[18])) MapUnits = ("{0}" .format(row[19])) HeightUnits = ("{0}".format(row[20])) drainage_units = ("{0}".format(row[21])) MaximumExchange = ("{0} ".format(row[22])) Output = ("{0}".format(row[23])) intermed = ("{0}".format(row[24])) LicenseCode = ("{0 }".format(row[25])) Execute = ("{0}".format(row[26])) # continuez en appelant un autre script python

Je suis tout à fait sûr que cela pourrait être fait plus facilement, par exemple, je voudrais générer automatiquement chaque variable (par exemple var_1… var_27) à l'aide d'une boucle qui parcourt une liste de ces variables obtenue avec la fonction searchCursor. Mais chaque fois que j'essayais, je restais bloqué au point où ma variable finit par être un "objet SearchCursor à 0x14A522A0" au lieu de la valeur du champ dans la table. Quelqu'un peut-il me dire le moyen le plus simple d'accomplir cette tâche?


Voici deux manières différentes d'accomplir la tâche.

Vous pouvez créer une liste vide pour chaque attribut et l'ajouter à ces listes dans votre curseur de recherche pour la boucle.

OBJECTID =[] Temp =[] avec arcpy.da.SearchCursor(Inputdaten_txt, Attribute_List) comme curseur : pour la ligne dans le curseur : OBJECTID.append(row[0]) Temp.append(row[1])

Une manière différente serait de créer une variable de liste unique qui contient des listes de chaque valeur d'attribut

listes =[] pour i dans la plage (0,len(Attribute_List)) : listes.append([]) avec arcpy.da.SearchCursor(Inputdaten_txt, Attribute_List) comme curseur : pour la ligne dans le curseur : pour i dans la plage(0, len(row)): lists[i].append(row[i]) print lists[0] # cela devrait imprimer une liste de toutes les valeurs OBJECTID dans votre table "Batchtable"