Suite

UpdateCursor basé sur les résultats de SearchCursor

UpdateCursor basé sur les résultats de SearchCursor


Je suis un peu coincé avec un UpdateCursor. C'est ce que j'essaie de faire : chaque cellule d'une grille stocke plusieurs réponses qui ont été données dans un sondage. Pour chaque cellule, je dois choisir UNE seule réponse, celle qui a les taux les plus élevés.

Ce que j'essaie de faire dans mon code, c'est de sélectionner les lignes qui ont la même valeur pour ID_GRID, de comparer les valeurs du champ PERCENT et de mettre à jour FINAL_VALUE avec la valeur du champ VALUE correspondant à la valeur PERCENT la plus élevée. Dans l'exemple ci-dessous, la réponse 3310 a un taux de 76% > FINAL_VALUE pour les résultats sélectionnés doit être 3310.

Mon code ne prend que la dernière valeur du SearchCursor et met à jour tout le champ FINAL_VALUE avec :

myTable = r"D:… " myFields = ['PERCENT', 'VALUE'] avec arcpy.da.SearchCursor (myTable, "ID_GRID") comme curseur : pour srow dans le curseur : avec arcpy.da.SearchCursor(myTable, myFields, "ID_GRID" + "= " + str(srow[0])) comme sscursor : maxValue = None ID = None pour ssrow dans sscursor : if maxValue < ssrow[0] : maxValue = ssrow[0] ID = ssrow[ 1] avec arcpy.da.UpdateCursor(myTable, "FINAL_VALUE") comme ucursor : pour urow dans ucursor : urow[0] = ID ucursor.updateRow(urow)

Vous pourriez certainement résoudre ce problème (je pense) mais je pense que vous devriez repenser l'approche. Les statistiques récapitulatives le feront pour vous et ce serait plus facile, mais l'inconvénient (je suppose) est que cela crée une nouvelle sortie. Cela étant dit, vous pouvez toujours le joindre à votre table d'origine en fonction du champ ID_GRID (qui peut également être scripté). Cela devrait également être plus rapide car vous ne parcourez pas le calque deux fois.

myTable = r"D:… " myOutTable = r":… " arcpy.Statistics_analysis(myTable, myOutTable, [["VALUE", "MAX"]], "ID_GRID")

Voir la vidéo: TUTO comment regler votre souris