2015-10-01 4 views
1

Я объединил код ниже, который проходит через некоторые классные классы и выводит итоговые значения на fc, а также сумму количества классов объектов. Последняя часть моей головоломки, которую я не могу получить, заключается в том, как теперь суммировать итоги каждого класса объектов, поэтому мне не нужно добавлять их в голову. Я читал множество подобных сообщений, но все они, похоже, сосредоточены на возврате суммы класса объектов, а не сумме нескольких классов объектов. (Im на Win 7, Oracle 10g, Python 2.7.5, ArcGIS 10.2.1) Мой рабочий код до сих пор .....Как суммировать значения в нескольких тематических классах?

FCS = arcpy.ListFeatureClasses() 
    FCS.sort() 
    for fc in FCS: 
      if fc.startswith("Book"): 
        DM1 = arcpy.GetCount_management(fc) 
        print "\t" + fc +" Record Count = "+ str(DM1) 
        # total = sum(str(DM1)) #### my effort to return sum 
        # print "Book_** Record Count = " +total 
    # and the number of feature classes (In case there were hundreds) 
    fcCount = len(FCS) 
    print '\n' '\t' "FeatureClasses found = " + str(fcCount) 

Производит этот результат ....

15_Books_Base_count.py starts here...... 

Book_10 Record Count = 841 
Book_20 Record Count = 209 
Book_30 Record Count = 56 
Book_40 Record Count = 32182 
Book_50 Record Count = 40178 
Book_60 Record Count = 8562 
Book_70 Record Count = 2118 
Book_80 Record Count = 6413 
Book_90 Record Count = 645 

FeatureClasses found = 11 

Я за возвращенной строкой, которая имеет «Book _ ** Record Count = 91204».

+0

Что это связано с Oracle10g? в вашем коде не задействован SQL или PL/SQL. – Sentinel

+0

Вы не видите полный скрипт (700 строк). Бит sql не является проблемой. – user1995458

+2

Тогда зачем маркировать его как Oracle10g? – Sentinel

ответ

1

Создайте переменную под названием total. Каждый раз через цикл, приращение total по количеству этого класса объектов, DM1. Затем распечатайте str(total) после цикла.

total = 0 
FCS = arcpy.ListFeatureClasses() 
FCS.sort() 
for fc in FCS: 
     if fc.startswith("Book"):      
       getCountResult = arcpy.GetCount_management(fc) 
       DM1 = int(getCountResult.getOutput(0)) 
       print "\t" + fc +" Record Count = "+ str(DM1) 
       total += DM1 
print "Book_** Record Count = " + str(total) 
# and the number of feature classes (In case there were hundreds) 
fcCount = len(FCS) 
print '\n' '\t' "FeatureClasses found = " + str(fcCount) 
+0

Это выглядит хорошо благодаря @ Gary-s и опции, которую я не рассматривал. Завтра утром у меня будет выход, когда я вернусь на работу и посоветую. – user1995458

+0

У вас была возможность попробовать? –

+0

К сожалению, только сейчас из-за некоторых срочных работ. Если я запустил код, я получаю следующую ошибку. msgstr "неподдерживаемый тип (ы) операндов для + =: 'int' и 'Result'". Я попытался добавить «int» в разных местах, но все же получил неподдерживаемые ошибки oparand. Имея мои ограниченные знания, я сомневаюсь, что это связано с типами полей, поскольку счетчик - это записи fc, а не значения полей. Я искал дальше только сейчас, но не нашел ни одного знания. Если вы запускаете код на образце, установленном в конце, получаете ли вы неподдерживаемую ошибку? – user1995458

Смежные вопросы