我试图从csv导出许多系列点的边界。输入数据是几何POINT类型,输出几何将是多部分多边形。
到目前为止我的工作流程 -
单点指向多点几何和缓冲区
SELECT seam,ST_Buffer(ST_Buffer(ST_Multi(ST_Union(the_geom)),50), - 25)as_geom INTO res_buffers 来自res_points GROUP BY seam;
(点的间距通常为50米,因此缓冲区的扩展/缩小)
我现在想将res_buffers表的每一行导出到shapefile中。所以50行= 50个shapefile。
使用Python,Postgis / PSQL,ogr或Windows shell开放解决方案。
答案 0 :(得分:2)
如果您还没有唯一ID,请在res_buffers表中添加唯一ID。
Alter table res_buffers add column id serial;
然后你可以使用一个简单的循环结构并调用pgsql2shp
50次。我可以用bash告诉你如何做到这一点,所以如果你在windows中,你将需要cygwin或类似的,或者将它改编为powershell或dos(我无法帮助你,对不起)。以下单线程在shell中运行,
for i in {1..50} ; do pgsql2shp -f $i.shp db_name "select * from res_buffers where id = $i"; done
将输出1.shp,2.shp等,其中db_name是您的数据库名称。你也可以在$ i.shp前面放一条路径。
如果你不喜欢一个衬里,你也可以将它放在文件中并使其可执行,
for i in {1..50}
do
pgsql2shp -f $i.shp db_name "select * from res_buffers where id = $i"
done
如果你想用Python做这件事,MikeT写了一个关于使用shapely and fiona来编写形状文件的优秀答案。如果你在Python中做更多的一般工作,这种方法很棒,但就个人而言,对于这个问题中的单个任务,没有什么比pgsql2shp aproach的简单性更好了。