0

拡張機能 pgrouting を使用して、PostgreSQL でOSM2POを使用して OSM ベースのルーティング ネットワークを作成しました。列km(km 単位の距離)、列cost(運転時間)、およびmax_speed. 関数pgr_drivingDistanceで列km(km 単位の距離)を使用して集水域を作成しようとしました。これは最短経路で集水域を計算しますが、これはほとんどの場合、車にとって現実的な距離ではありません。したがって、 を使用して最短の運転時間に基づいて流域を計算したいと思いcostます。しかし、結果として、time ではなくメートルの単位が必要です。ヒントをありがとう。

短いバージョン: 最速 (最小時間) ルートの距離が km の集水域が必要です!

以下は、最短距離を km で指定した pgr_drivingDistance の標準コードです。

SELECT *
   FROM routing_vertices_pgr
   JOIN(
SELECT * FROM pgr_drivingDistance('
SELECT id,
     source,
     target,
     km as cost
    FROM routing',
1, 100, false)) AS route ON routing_vertices_pgr.id = route.node ;
4

2 に答える 2

0

フィーチャ タイプ (highway、primary rd) がある場合、max_speed を含む列を作成し、この max_speed を距離で割ると、道路セグメントを移動するのにかかる時間が得られます。この時間は、走行距離を最短にするためのコストとして選択できます。

于 2016-12-06T18:07:10.230 に答える
0

あなたはそのようなことはできません...運転距離では、あなたのコスト(時間または距離または他のsth)が何であるかを決定しており、関数はこのコストを処理しています. コストは 1 つだけです...解決策の 1 つは、距離をカウントすることであると思いますが、clazz またはフラグ フィールドを使用して、これを「車には現実的ではない」エッジから除外します。このフィールドの説明は、osm2po 構成ファイルにあります。

于 2016-12-27T10:50:20.617 に答える