Utilisation d'une table externe pour modifier de manière itérative les paramètres en code ArcPy

Oct 13 2020

Je travaille avec Python 2.7 et ArcPy sous l'environnement de notebook Jupyter. Je souhaite adapter itérativement mon code à une table de référence.

Voici ma table de référence qui contient les 3 variables que j'utilise pour l'outil que j'exécute dans ArcPy:

RegY          HunCal    CRY
    1            1718     BL1
    1            1112     JU1
    1            1112     JU1
    1            1213     JU1

Il s'agit d'une simple table XLS que j'ai importée dans mon notebook Jupyter. Je l'ai comme référence visuelle lorsque je dois modifier ces variables dans mon code.

Au début, je le faisais à la main car il y avait quelques changements à faire. Mais maintenant, il y a plus de 150 changements à adapter, et ce montant augmente avec le temps. Par conséquent, je voudrais modifier le code de telle sorte qu'il utilise la table de référence pour parcourir chaque fonctionnalité à chaque fois que la table de référence change.

Voici le code que j'utilise:

# 2011
# Set geoprocessor object property to overwrite existing output
arcpy.gp.overwriteOutput = True


arcpy.env.workspace = r'C:\Users\GeoData\simSear\SBA_D.gdb'
    
# Process: Group Similar Features  
SS.SimilaritySearch("redD_RegY_1_1112","blackD_CRY_JU1_1112","SS_JU1_1112","NO_COLLAPSE",
                        "MOST_SIMILAR","ATTRIBUTE_PROFILES",0,
                        "Temperatur;Precipitat", 'DateFin')

Comment puis-je adapter le code de manière à ce que les variables de la table de référence soient insérées dans mon code de la manière suivante?

À partir de la table de référence, les valeurs de RegYseraient remplacées dans redD_RegY_**1**_1112. Les valeurs de CRYseraient remplacées blackD_CRY_**JU1**_1112et SS_**JU1**_1112enfin, les valeurs de HunCalseraient remplacés dans redD_RegY_1_**1112**, blackD_CRY_JU1_**1112**, SS_JU1_**1112**.

Réponses

3 BERA Oct 13 2020 at 23:08
  1. Créer une vue de la table Excel à l'aide de Créer une vue de table
  2. Lisez les valeurs ligne par ligne avec da.SearchCursor
  3. Avec le format de chaîne, construisez les chaînes de paramètres d'entrée

Quelque chose comme:

import arcpy
arcpy.MakeTableView_management(in_table=r'C:\GIS\data\testdata\excelfile123.xls\Sheet1$', out_view='tempview')
with arcpy.da.SearchCursor('tempview', ['RegY', 'HunCal', 'CRY']) as cursor: #Adjust field names to match your data
    for regy, huncal, cry in cursor:
        S.SimilaritySearch("redD_RegY_{0}_1112".format(regy),"blackD_CRY_{0}_1112".format(cry), ... Dont know exactly what you want