2016-06-05 2 views
0

У меня есть список точек xy, которые я пытаюсь суммировать и идентифицировать центроид, но он использует только последнее значение в строке. Я пытаюсь создать центроид для каждого состояния. Вот код:Попытка суммировать список в дуге

Total_X1 = 0 
Total_Y1 = 0 
TotalPop1 = 0 
#Cat = "cali" 
cntyName1 = "cnty" 
stateName1 = "statename" 
for row in cursor: 

    #if row[0] >= : ### for condition that is met 
    #if row[0]== []: 
     TheStateName1 = row[0] 
     thecntyName1 = row[4] 
     idpoly1 = row[5] 
     idobject1 = row[6] 
     stateFIPS1 = row[7] 
     countyFIPS1 = row[8] 
     fips1 = row[9] 
     fipSnum1 = row[10] 
     fipsNumer1 = row[11] 
     #totarea = row[12] 
     XPoint = row [13] 
     YPoint = row[14] 


     #print Cat 
     print TheStateName1 
     print thecntyName1 

     print row  ### do something with that value! 

     Total_X1 += row[2] *row[3] 
     print Total_X1 


     Total_Y1 += row[1] *row[3] 
     print Total_Y1 


     TotalPop1 += row[3] 
     print TotalPop1 

    print ""   
    print "X is: " , Total_X1 
    print "POP is: " , TotalPop1 
    centroid_X1 = Total_X1/TotalPop1 
    print "your x centroid is: ",centroid_X1 
    print "" 
    #print Cat 
    print thecntyName1 
    print TheStateName1 

Любые предложения, спасибо!

ответ

1

Курсор может «видеть» только одну строку за раз, вам нужно вывести информацию из этой строки и сохранить ее в другом месте.

loc_list = [(row[0], row[1]) for row in arcpy.da.SearchCursor(dataset, ['X_coord', 'Y_coord']) 

Дает вам список кортежей X, Y из таблицы атрибутов.

После этого у вас есть несколько вариантов поворота этого списка кортежей в пространственный набор данных перед вычислением среднего начала, прочитав документацию ESRI для arcpy.Point и всех связанных тем и связанных с ними. Если у вас есть 10.3 или выше, вы можете использовать Mean Center, если у вас есть точечный слой.

Возможно, вы получите неправильный ответ, если вы просто возьмете среднее значение X и Y, не проецируя сначала, так что нет.

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