PostGIS pgrouting
で作業している間、2つの道路(線)間の距離を計算するために、_shortest_path
_関数を使用しています。
ロジックはstart_point(Start_id)
とend_point(end_id)
に基づいていますが、私のデータでは、行文字列には(linestring(1 1,2 2,3 3,4 4,5 5)
など)のような多くの内部ポイントが含まれています。
したがって、開始点を_(1 1)
_とし、終点を_(5 5)
_とします。別の行が_(5 5)
_で始まる場合、linestring(5 5,6 6)
のようなルートとして表示されます。
ただし、_(2 2,3 3,4 4)
_のようにラインストリング内に交差点があるラインは、接続されているとは見なされません。
たとえば、次の道路テーブルを使用します。
_id name way
1 A linestring(1 1,2 2,3 3,4 4,5 5)
2 B linestring(5 5,6 6)
3 c linestring(2 1,2 2,2 3)
_
_shortest_path
_関数をポイント_(1 1)
_から_(6 6)
_に適用すると、パスが決定されます。しかし、_(1 1)
_から_(2 3)
_の場合、何も見つかりません。 _(1 1,2 2,2 3)
_ルートが見つかりません。
関数が線の始点と終点だけでなく、各セグメントの内部点を考慮するようにするには、何をする必要がありますか?
たぶんこれはあなたを始めるのに役立つでしょうが、これが私がこれを通してどのように考えているかです。
交差しない限り、2本の直線が端よりも中央で近くなる球面三角法については考えられません。各道路の頂点と最も近い点に検索を絞り込むことができると思います。他の道路のその頂点。あなたの道路は大円に沿った線分としてモデル化されていると思います。
したがって、これが完全な解決策であるとは思いませんが、私が検討しているのは次のとおりです。
それが最良の答えのようです。ポイントを計算する必要があります。 PostGISでこれを行う魔法の方法はわかりませんが、球面三角法が助けになるかもしれません。もちろん、距離が十分に小さい場合は、平面トリガーで十分な場合があります。