ArcGIS/Python:如何根据公共ID累加行
我想要一种方法,可以根据一个共同的标识符来对表格中的值进行求和(在下面的表格中,这个字段是'IWUP')。我的表格大概是这样的:
+--------------------+--------------------+--------------------+--------------------+
|IWUP |Site |Date |PPG
+--------------------+--------------------+--------------------+--------------------+
|1985001 |1234 |01/01/2012 | .03 |
|1985001 |1235 |01/01/2012 | .23 |
|1985001 |1236 |01/01/2012 | .35 |
|1985001 |1234 |01/02/2012 | .03 |
|1985001 |1235 |01/02/2012 | .03 |
|1985001 |1236 |01/02/2012 | .03 |
|1985001 |1234 |01/03/2012 | .03 |
|1985001 |1235 |01/03/2012 | .03 |
|1985001 |1236 |01/03/2012 | .03 |
这是通过一些arcpy代码生成的临时表,代码如下:
arcpy.MakeTableView_management(PUMPAGE_PPG_DATA, PPG_DATA_View, "IWUP =1985001", "", "IWUP; SITE; DATE; PPG")
我想要对每个地点和每个月的PPG数据进行求和,得到类似这样的结果:
+--------------------+--------------------+----------------------------+
|IWUP |Date |PPG
+--------------------+--------------------+----------------------------+
|1985001 |01/02/2012 |SUM(Sites 1234, 1235, 1236) |
|1985001 |01/03/2012 |SUM(Sites 1234, 1235, 1236) |
|1985001 |01/04/2012 |SUM(Sites 1234, 1235, 1236) |
然后我可以把这些结果绘制成图表。
x = []
y = []
fig = plt.figure()
table = QUERY
fields = ["Date", "PPG"]
with arcpy.da.SearchCursor(table, fields) as rows:
for row in rows:
x.append(row[0])
y.append(row[1])
plt.plot(x,y, marker='o', linestyle='-', color='b')
plt.show()
1 个回答
1
你应该使用 空间统计,把 PPG 作为统计字段,IWUP 和日期作为案例字段。具体的代码是:arcpy.Statistics_analysis(in_table, out_table, [["PPG", "SUM"]], ["IWUP", "Date"])