ST_Split返回了大量的行

时间:2017-02-21 15:40:46

标签: postgis

我试图在每个十字路口拆分一个小型公路网。我开始在QGIS的每个交叉点创建点,这没问题。但是现在我正在尝试使用PostGIS拆分它们,而且我要回16000行,这远非合理。我也检查过,看到返回的表中有很多重复。

我在PostGIS中没有太大的经验,所以我可能会犯一个我无法看到的关键错误。

这是我的疑问:

SELECT ST_AsEWKT((ST_Dump(ST_Split(streets_network.geom, nodes.geom))).geom) AS the_geom
FROM streets_network, nodes

1 个答案:

答案 0 :(得分:1)

  1. 你试图使用所有节点拆分所有街道......作为输出你至少得到节点数乘以街道数...
  2. 你必须添加2xnodes与道路交叉的这个值计数...如果你有1个道路有3个切割节点你将获得6件(在第一点分裂2,在第二点分裂2,在2分割2分)第三点)
  3. 很有可能它不会在数据库的所有准确性和舍入中起作用 - 根据定义,它几乎不可能达到一个点无限小的点。
  4. 作为决议:

    1. 您必须仅使用与其相交的点来剪切线
    2. 使用与此街道相交的所有点的并集来切割线 - 一个几何体具有一个(多个)几何体,因此使用3个点进行切割将获得4条线。
    3. 使用具有最小值的ST_Buffer将点扩展为非常小的圆圈
    4. 或者......使用pgr_nodeNetwork()
    5. 中的pg_routing extension函数