arcpy — использование внешней таблицы для многократного изменения параметров в моем коде

Я работаю с python 2.7 и arcpy в среде ноутбука Jupyter. Я хотел бы итеративно адаптировать свой код к справочной таблице.

Это моя справочная таблица, которая содержит 3 переменные, которые я использую для инструмента, который я запускаю в arpcy:

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

Это простая таблица xls, которую я импортировал в свой блокнот Jupyter. У меня есть это как визуальная ссылка, когда мне нужно изменить эти переменные в моем коде.

Вначале я делал это вручную, потому что нужно было внести несколько изменений. Но сейчас нужно адаптировать более 150 изменений, и со временем это количество увеличивается. Поэтому я хотел бы изменить код таким образом, чтобы он использовал справочную таблицу для повторения каждой функции при каждом изменении справочной таблицы.

Это код, который я использую:

# 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')

Как мне адаптировать код таким образом, чтобы переменные из справочной таблицы вставлялись в мой код следующим образом:

  • Из справочной таблицы значения из RegY будут заменены в redD_RegY_**1**_1112.
  • Значения из CRY будут заменены в blackD_CRY_**JU1**_1112 и SS_**JU1**_1112
  • Значения из HunCal будут заменены в redD_RegY_1_**1112**, blackD_CRY_JU1_**1112**, SS_JU1_**1112**

Любые подсказки или предложения будут высоко оценены.


person John Perez    schedule 11.10.2020    source источник


Ответы (1)


Вы должны выполнить итерацию по каждой строке таблицы, чтобы получить значения вашей справочной таблицы, а затем использовать их для создания уникальных строк для ваших входных, потенциальных и выходных функций.

for row in table:
    regY = row[0]
    hunCal = row[1]
    cry = row[2]

    input_features_to_match = 'redD_RegY_{}_{}'.format(regY, hunCal)
    candidate_features = 'blackD_CRY_{}_{}'.format(cry, hunCal)
    output_features = 'SS_{}_{}'.format(cry, hunCal)

    SS.SimilaritySearch(
        input_features_to_match,
        candidate_features,
        output_features,
        'NO_COLLAPSE',
        'MOST_SIMILAR',
        'ATTRIBUTE_PROFILES',
        0,
        'Temperatur;Precipitat',
        'DateFin')

Или гораздо более компактно:

for row in table:
    SS.SimilaritySearch(
        'redD_RegY_{}_{}'.format(row[0], row[1]),
        'blackD_CRY_{}_{}'.format(row[2], row[1]),
        'SS_{}_{}'.format(row[2], row[1]),
        'NO_COLLAPSE',
        'MOST_SIMILAR',
        'ATTRIBUTE_PROFILES',
        0,
        'Temperatur;Precipitat',
        'DateFin')
person Erica    schedule 01.11.2020