我在這裏帶着一個新問題。邊緣索引在graphhopper中如何工作?
我正在製作一個自定義算法,需要圖形邊緣的預先計算的數據。我用的是AllEdgesIterator這樣的:
AllEdgesIterator it = graph.getAllEdges();
int nbEdges = it.getCount();
int count = 0;
int[] myData = new int[nbEdges];
while (it.next())
{
count++;
...
}
第一個奇怪的是,nbEdges等於15565個邊,但怎麼可能數僅相當於14417.?
第二個奇怪的是當我運行我的自定義A *時:我只是使用outEdgeExplorer瀏覽節點,但是我在myData數組上的索引15569處得到了一個IndexOutOfBound。我認爲邊緣索引被包含在[0; N-1]其中N是邊緣的數量,是真的嗎?
這裏可能會發生什麼?順便說一句,我已經禁用圖收縮層次結構。
謝謝你每次回答這麼快!
好吧,我明白了,你能解釋多一點虛擬邊緣?他們是什麼,爲什麼你需要這個?它們很重要還是我可以跳過它們?我怎麼知道原來的邊緣是什麼?謝謝 ! – user3890394
它們在現有的交匯點和查詢點之間引入,以便算法不需要對這些點進行特殊處理。每個點的QueryResult(從locationIndex.findClosest返回)將包含指向原始邊的EdgeIteratorState。 – Karussell
非常感謝你:) – user3890394