2014-10-22 6 views
1

У меня есть класс объектов, который необходимо обновить, назовите его как big_file, он имеет имя поля 'ID_old', которое мы будем используйте для выполнения запроса. другое поле - «Sum_value», которое должно быть заполнено суммой суммы значения другого файла.python-in-arcmap, как запросить использование идентификатора строки и искать значения полей из другого класса объектов

поэтому у меня есть один список (по имени list_file), который содержит много классов объектов, назовите каждый из них как small_file. имя каждого файла уже содержит идентификатор (name it 'ID), который нам нужно найти. каждый файл имеет поле с именем «field_value». «ID» - это не поле, а просто название класса объектов.

отмечают, что «ID_old» и «ID» имеют другой формат, так как ID не содержит «» или «», например:.

ID_old : New York, St. Louis corresponds to 
ID: New_York, St_Louis 

теперь нужно: заполнить поле Sum_value из big_file с суммой field_value каждого small_file, которая имеет соответствующий идентификатор с каждой строкой.

например. одна строка big_file имеет идентификатор, который является «Нью-Йорк», поэтому в файле list_file есть файл, имя которого содержит «New_York», после того, как мы найдем этот файл, скажем sth_New_York_file, мы получим сумму поля «field_value», и имеют результат. затем вернитесь к big_file и заполните поле Sum_value thw row (ID is 'New York') с результатом.

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

Есть ли какие-либо подсказки? Я полагаю, что мне нужно использовать UpdateCursor, но не знаю, как запрашивать и получать значения.

+0

Что язык/система/приложение/и т. д., это? Пожалуйста, добавьте теги вашего Вопроса, чтобы это отразить. – JNevill

+0

уверены, что pls видят название – widget

ответ

0

коды выглядеть следующим образом:

for file in list_file: 
    outStat="path_for_sum_output" 
    arcpy.Statistics_analysis(file,outStat, [["field_value", "SUM"]]) 
    rowsStat = arcpy.SearchCursor(outStat) 
    for row in rowsStat: 
    sum=row.getValue('Sum_field_value') 

    #formate name of file so the format match with field ID_old of the feature class 
    namelist=file.split('_') 
    myname=' '.join(namelist) 
    print myname 

    fc='big_file' 
    cursor=arcpy.da.UpdateCursor(fc,['Sum_value'], "ID_old = '" +myname+ "'") 
    for row in cursor: 
     row[0]= sum 
     cursor.updateRow(row) 
     print row 

Это решается большая часть проблемы, за исключением записей в big_file с ID_old, начиная с «St .'-- для этих записей нужно заполнить вручную