2017-04-03 58 views

答えて

1

これはよくある質問ですが、これまでにここで答えられていない可能性があります。残念ながら、答えは主に入力データの品質に左右されます(各データにタイムスタンプがある場合に役立ちます)。最善のケースでは、街路網のルートの各端に位置更新があり、単にその場所を通りに写像することによって経路を読み取ることができます。このマッピングは、相撲に来てのpython sumolibを使用して行うことができます。

import sumolib 
net = sumolib.net.readNet("myNet.net.xml") 
route = [] 
radius = 1 
for x, y in coordinates: 
    minDist, minEdge = min([(dist, edge) for edge, dist in net.getNeighboringEdges(x_coordinate, y_coordinate, radius)]) 
    if len(route) == 0 or route[-1] != minEdge.getID(): 
     route.append(minEdge.getID()) 

は、追加の地理変換のためにもhttp://sumo.dlr.de/wiki/Tools/Sumolib#locate_nearby_edges_based_on_the_geo-coordinate参照してください。

データポイントによってヒットしなかったルートにエッジがある場合や、不一致(「間違った」方向に向いているエッジに一致する場合など)の場合には、これは失敗します。前者の場合は、sumoのduarouterを使用して簡単に経路を修復できます。

> duarouter -n myNet.net.xml -r myRoutesWithGaps.rou.xml -o myRepairedRoutes.rou.xml --repair 

後者のケースは、誤ったエッジの定義に大きく依存するため、検出と修復の両方がかなり困難です。突然、逆方向(実際の交通でも起こりうる)や小さな迂回路を突きつけるなど、明確なケースがほとんどあり、個別の答えを決めるのは難しい。

継続入力を求めているので、このライブをTraCIとし、このFAQ on constant input flowでライブに興味があるかもしれません。

+0

TBH、私はまだこれに新しいです。タイムスタンプがあります。だから、どうやって状況が変わるだろうか?ありがとう。 – skw1990

+0

タイムスタンプとスピードは移動距離を見積もる際に役立ちますので、次のエッジを検索する際の最大範囲を知ることができます(最後の推測が正しいと仮定して) – Michael