2016-06-05 2 views
0

J'ai une liste de points xy que j'essaie de sommer et d'identifier le centroïde, mais il utilise seulement la dernière valeur de la ligne. Je suis en train de créer un centre de gravité pour chaque état, voici le code:Essayer de résumer la liste dans arcpy

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 

suggestions, Merci!

Répondre

1

Le curseur ne peut «voir» qu'une ligne à la fois, vous devez extraire des informations de cette rangée et les stocker ailleurs.

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

Vous donnera une liste de tuples X, Y à partir de votre table attributaire. Ensuite, vous avez plusieurs options pour transformer cette liste de tuples en un ensemble de données spatiales avant de calculer la moyenne - commencer en lisant la documentation ESRI pour arcpy.Point et tous les sujets connexes liés, et aller à partir de là. Si vous avez 10.3 ou plus, vous pouvez utiliser Mean Center une fois que vous avez une couche de points.

Vous obtiendrez probablement une mauvaise réponse si vous prenez simplement la moyenne de X et Y sans projeter d'abord, alors ne le faites pas.