シカゴのストリート ネットワークを含むテーブルと、シカゴで犯された犯罪のテーブルがあります。私は犯罪の k-means クラスターを作成しようとしています。それらを最短の道路距離であるクラスターの中心に割り当てます。
まず、すべての犯罪を最も近い道路に補間しました。ここまでは順調ですね。今私がやろうとしているのは、各道路をその上にあるすべての犯罪ポイントで分割して、pgrouting を使用してネットワーク トポロジを作成し、ある犯罪場所から別の犯罪場所にルーティングできるようにすることです。
問題は、ST_Split 関数がほとんどの道路を分割していないようで、その理由がわかりません。100 万の犯罪ポイントがあることを考えると、道路は多数のセグメントに分割されるはずですが、元の道路ネットワーク テーブルにある行数よりも約 1000 行多いだけです。これは私が使用しているコマンドです:
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を使用しているので、マルチポイントで分割しているという事実は問題ではありません..
どんな助けでも大歓迎です!