【问题标题】:Postgis ST_Split not splitting roads by all pointsPostgis ST_Split 不按所有点分割道路
【发布时间】:2016-04-26 13:46:33
【问题描述】:

我有一张包含芝加哥街道网络的表格,还有一张在芝加哥犯下罪行的表格。我正在尝试通过将它们分配到距离最短的道路距离的集群中心来为犯罪创建 k-means 集群。

首先,我将所有犯罪插值到最近的道路上。到目前为止,一切都很好。 现在我要做的是将每条道路上的所有犯罪点分开,这样我就可以使用 pgrouting 和从一个犯罪地点到另一个犯罪地点的路线创建网络拓扑。

问题是,ST_Split 函数似乎没有分割大部分道路,我不知道为什么。鉴于我有一百万个犯罪点,道路应该被分成大量的路段,但我只得到比原始街道网络表中的多一千行。这是我正在使用的命令:

CREATE TABLE algorithms.crime_network AS 
    SELECT road.id AS road_id, (ST_Dump(ST_Split(road.geom, road.crime_points))).geom
    FROM (SELECT r.geom as geom, r.gid id, ST_Multi(ST_Collect(c.geom)) AS crime_points FROM public.transportation r INNER JOIN chicago_data.interpolated_crimes c ON c.road_id = r.gid GROUP BY r.gid) AS road;

我使用的是 Postgis 版本 2.2.2,所以我按多点分割的事实不是问题..

任何帮助将不胜感激!

【问题讨论】:

  • 也许可以使用 ST_Snap 捕捉道路上的点顶点,以便它们干净地分裂。
  • 你说得对,它似乎是这样工作的。我认为使用 ST_Closest_Point 对犯罪进行插值就足够了。谢谢!

标签: postgresql postgis k-means postgresql-9.3 pgrouting


【解决方案1】:

正如所评论的,某些功能,如所有覆盖运算符和 ST_Split,需要精确的节点才能按预期执行。这意味着几何叠加的烦人浮点差异将使来自不同几何的顶点彼此非常接近(在

使用 ST_Snap 获得一个几何体在另一个几何体上的精确节点,这将有助于 ST_Split 等函数按预期运行。

【讨论】:

  • 非常感谢您的回答:)
猜你喜欢
  • 2018-03-08
  • 2020-12-17
  • 2021-09-05
  • 2014-11-03
  • 2012-08-20
  • 1970-01-01
  • 2021-05-21
  • 1970-01-01
  • 2019-04-18
相关资源
最近更新 更多