1
我需要在從OSM文件導入期間存儲edgeId-osmWayId映射,以在路由期間使用它。 這可能嗎? 有什麼建議嗎?如何在graphhopper中映射osm方式?
我需要在從OSM文件導入期間存儲edgeId-osmWayId映射,以在路由期間使用它。 這可能嗎? 有什麼建議嗎?如何在graphhopper中映射osm方式?
您可以在導入時將此信息存儲到地圖。隨着它的增長真的很大,我建議使用一個預分配的長陣列和儘可能多的條目。例如。使用自定義編碼器:
CarFlagEncoder carEncoder = new CarFlagEncoder(5, 5, 3) {
@Override
public void applyWayTags(OSMWay way, EdgeIteratorState edge) {
ghEdgeIdToOSMWayIdMap[edge.getEdge()] = way.getId();
super.applyWayTags(way, edge);
}
};
setEncodingManager(new EncodingManager(carEncoder, ...));
感謝您的回答。
我以這種方式創建我的地圖:
[代碼]保護無效storeOsmWayID(INT EdgeID的,長osmWayId) \t { \t如果(getOsmWayIdSet()包含(osmWayId)。) \t { \t getEdgeIdToOsmWayIdMap()把(。 edgeId,osmWayId); \t} \t // Creo associazione tra edgeId e osmWayId \t osmEdgeIdOsmWayIdMap.put(edgeId,osmWayId); \t} [code]
但我不知道如何將它存儲在我的圖中並在路由期間使用它。例如。在自定義加權。 –
查看描述類似的權重文檔(weighting.md) – Karussell
我想用這種方式創建自定義權重:Weighting customWeighting = new MyFastestWeighting(ghEdgeIdToOSMWayIdMap,encoder);但是如何在導入過程中創建ghEdgeIdToOSMWayIdMap?我應該將它保存爲StorableProperties屬性嗎? –