2016-12-03 4 views
0

OSMに基づいてOSM2POというルーティングネットワークをPostgreSQLに拡張子pgroutingで作成しました。私は列km(距離km)、列cost(運転時間)とmax_speedを持っています。私は関数pgr_drivingDistanceで列km(km単位の距離)を使用して集水域を作成しようとしています。これは、ほとんどの場合車の現実的な距離ではない最短経路で集水を計算します。そのため、最短運転時間に基づいて集水量を計算するには、costを使用します。しかし、その結果、私はメートルののユニットが必要で、時間はではありません。何かヒントありがとうございました。pgr_drivingDistanceで最速パスの距離を取得

ショートバージョン:最短(最小時間)のルートにはkm単位の距離が必要です。フィーチャータイプ(高速道路、主要RD)、MAX_SPEEDと列を作成し、距離の意志にこのMAX_SPEEDを分割している場合は

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 ; 
+0

これはかなり専門的な質問です。おそらくあなたはhttp://dba.stackexchange.comでより良いです –

+0

それは空間的な機能についてとても良いですgis.stackexchange.com – Jendrusk

答えて

0

あなたはそのようなことをすることはできません...走行距離では、あなたのコスト(時間または距離またはsth else)を決定しており、機能はこのコストを処理しています。コストは1つだけです...私は解像度の1つが距離を数えることができると思うが、エッジから「車のための現実的ではない」clazzまたはflagsフィールドを使用して除外します。 osm2po構成ファイルには、このフィールドの説明があります。

0

:ここ

キロで最短距離でpgr_drivingDistanceするための標準的なコードです道路セグメントを移動するのにかかる時間を与えます。この時間は、最短走行距離を与えるためのコストとして選択することができます。

+0

あなたの答えをありがとう。 OSM2POツールは、すでに運転時間とともに「費用」という列を作成しました。しかし、「コスト」に基づいて集水量を計算すると、最速ルートのkm単位の距離は得られません。 – Martin

+0

最速ルートを得るためのコストを列(距離/速度)に変更してください。 1.コスト列を、各機能タイプの最大速度を挿入する新しいmax_speed列で割ります。 2.この新しい列をコストとして取り、pgr_drivingDistanceを(コストとしての時間)から計算します。 – Columbo25

+0

ご返信ありがとうございます。たぶん私はポイントを得ることはできませんが、私の考えでは、私の目的のためにはできません。冒頭で最速のルートを計算しないので、_pgr_drivingDistance_関数しか使用できません。 kmの距離に関する情報を用いて、点Aから100kmの距離内にあるすべてのノードについて、最も速い経路を必要とする。 – Martin

関連する問題