2つのテーブルを生成するpostgisスクリプトのセットがあります-1つはポイントのセット、もう1つはそれらを囲む道路のセットです。すべてのデータは同じプロジェクションにあり、両方の出力はpostgis 2.1でpostgres 9.2テーブルに保存されます
道路ネットワークのトポロジーを作成し、ポイントテーブルに最も近い道路セグメントを含む列があります。
次に、最小全域木などを使用してすべてのポイントを接続する最小のネットワークを表す道路ネットワークのサブセットを生成します。道路ネットワークは無向であり、コストは単にルートの長さです。
モジュールのv.netファミリを使用してQGIS / Grassでこれを行うことができますが、理想的にはSQLでもこの最終ステップを維持したいと思います。
新しいapspWarshall postgis関数を見てきましたが、ネットワーク全体ではなくポイントの接続にエネルギーを集中するように奨励する方法については迷っています。
これは、これを解決するためのフレームワークを作成するために作成した短いスクリプトですが、エッジのサブセットから開始するために関数をフォーカスできる場所がわかりません。
SELECT seq, id1 AS node, id2 AS edge, cost, the_geom
FROM pgr_apspWarshall('SELECT gid AS id,
source,
target,
st_length(the_geom) AS cost
FROM road_network
',
false, false
) AS tree
JOIN road_network As roads
ON tree.id2 = roads.gid
単一パスの最短パスの問題では、関数は開始と終了を要求しますが、明らかにすべてのポイントの問題ではありません。同様に、Grassでは、v.net.spanningtreeとv.net.steinerは、連携するネットワークとして一連のポイントとラインを使用することを想定しています。
PostGISでこれを行う方法についての提案はありますか?