如何修改OGR SQL语句实现交点值求和并写入多边形属性列
问题:计算相交点属性值之和并写入多边形Shapefile属性列
我已通过OGR SQL语句实现统计与多边形相交的点数量,语句如下:
ogrinfo -sql "select count(*) from tmppol, tmppoi where st_intersects(tmppol.geometry,tmppoi.geometry) group by tmppol.fid" -dialect sqlite input.vrt
现在需要修改语句,实现计算所有相交点的属性值之和,并将结果写入多边形Shapefile的属性列中。我尝试了以下不完整的更新语句,但不知道如何完善:
ogrinfo tmppol.shp -dialect sqlite -sql "update tmppol set sum = sum(tmpoi.tn) from tmppol where st_intersects(tmppol.geom, tmppoi.geom) ???"
解决方案步骤:
为多边形Shapefile添加存储求和结果的字段(若已有对应字段可跳过此步):
ogrinfo tmppol.shp -sql "ALTER TABLE tmppol ADD COLUMN sum_tn INTEGER"注:避免使用
sum这类SQL关键字作为字段名,这里用sum_tn指代点属性tn的求和值。执行关联更新语句,通过子查询计算每个多边形对应的点属性总和并写入字段:
ogrinfo tmppol.shp -dialect sqlite -sql "UPDATE tmppol SET sum_tn = (SELECT SUM(tmpoi.tn) FROM tmppoi WHERE ST_Intersects(tmppol.geometry, tmppoi.geometry))"验证更新结果:可通过以下语句查看多边形的求和属性:
ogrinfo tmppol.shp -sql "SELECT fid, sum_tn FROM tmppol"
内容的提问来源于stack exchange,提问作者Gery
相关产品推荐
相关产品推荐

