我有一个表包含芝加哥的街道网络,我也有一个在芝加哥犯下的罪行表。我试图通过将它们分配到距离最短路程的聚类中心来为犯罪创建k-means聚类。Postgis ST_Split不分道路所有点
首先,我把所有的罪行插入到最近的道路上。到现在为止还挺好。 现在我想要做的就是将所有犯罪点分开,然后我可以使用pgrouting创建一个网络拓扑并从一个犯罪地点路由到另一个犯罪地点。
问题是,ST_Split函数似乎没有拆分大部分道路,我不知道为什么。鉴于我有100万的犯罪点,道路应该被分割成大量的路段,但是我只能获得比原始街道网络表格大约一千行的路线。这是我使用的命令:
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,使我对multipoints分裂是没有问题的事实..
任何帮助,将不胜感激!
也许使用ST_Snap捕捉道路上的点垂直线,以便它们干净地分割。 –
你说得对,它似乎以这种方式工作。我认为使用ST_Closest_Point插入犯罪就足够了。谢谢! – Ponsietta