postgis将每行导出到shapefi

2024-06-06 03:35:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从csv导出许多系列点的边界。输入数据为几何点类型,输出的几何图形为多段多边形。在

我目前的工作流程-

  • 将原始csv加载到postgis
  • 创建几何图形和索引
  • 单点到多点几何图形和缓冲区

    选择seam,ST_Buffer(ST_Buffer(ST_Multi(ST_Union(the_geom)),50),-25)作为“几何体” 进入缓冲区 从资源点 按煤层分组

    (点按50m规则间隔,因此缓冲区的膨胀/减少)

  • 现在我想将res_buffers表的每一行导出到shapefile中。所以50行=50个形状文件。

对Python、Postgis/PSQL、ogr或Windows shell中的解决方案开放。在


Tags: csvthe数据类型buffer流程多边形multi
1条回答
网友
1楼 · 发布于 2024-06-06 03:35:23

如果您还没有一个唯一的id,请将其添加到res\u buffers表中。在

Alter table res_buffers add column id serial;

然后您可以使用一个简单的循环结构并调用pgsql2shp50次。我可以告诉你如何使用bash来实现这一点,所以如果你在windows环境下,你需要cygwin或类似的工具,或者将其应用于powershell或dos(抱歉,我帮不了你)。下面的一个班轮在炮弹里运行

^{pr2}$

将输出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 imho的简单性更好了。在

相关问题 更多 >