2016-12-03 45 views
0

我創建了一個基於OSM的路由網絡,其中PostgreSQL中的OSM2PO的擴展名爲pgrouting。我有一列km(以km爲單位),列cost(駕駛時間)和max_speed。我嘗試使用列km(以km爲單位)創建功能pgr_drivingDistance的集水區。這用最短路徑來計算流域,這在大多數情況下不是汽車的實際距離。因此,我想根據最短駕駛時間使用cost來計算流域。但在結果中,我需要的單位,而不是時間。非常感謝任何提示。使用pgr_drivingDistance獲取最快路徑的距離

短版本:我需要一個以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 ; 
+0

這是一個很專業的問題。也許你在http://dba.stackexchange.com更好 –

+0

這是關於空間功能如此之好gis.stackexchange.com – Jendrusk

回答

0

你不能做這樣的事......在駕駛距離你決定什麼是你的成本(時間或距離或其他)和功能正在處理這個成本。成本只有一個......我認爲其中一個解決方案可能是計算距離,但從邊緣排除這個「對汽車來說不現實」,使用clazz或flags字段。你會在你的osm2po配置文件中找到這些字段的描述。

0

如果你有特徵類型(高速公路,主要RD),創建具有MAX_SPEED列和除以MAX_SPEED到的距離將爲您提供旅行路段所需的時間。這次可以選擇成本來給出最短的駕駛距離。

+0

感謝您的回答。 OSM2PO的工具已經創建了一個名爲'cost'的列,其中包含駕駛時間。但是,根據「成本」計算流域不會給我最快路線的公里距離。 – Martin

+0

將成本更改爲列(距離/速度)以獲得最快路線 1.將成本列除以新的max_speed列,您可以在其中插入每種要素類型的最大速度。 2.以這個新列作爲成本,並根據(時間成本)計算pgr_drivingDistance。 – Columbo25

+0

感謝您的回覆。也許我不明白這一點,但在我看來,這是不可能達到我的目的的,因爲我不會在開始時計算任何最快的路線,我只能使用函數_pgr_drivingDistance_。我需要距離A點100km範圍內的所有節點的最快路線以及以km爲單位的距離信息。 – Martin