在从OSM文件导入过程中,我需要存储一个edgeId osmWayId映射,以便在路由过程中使用它。有可能吗?有什么建议吗?
您可以在导入时将这些信息存储到映射中。由于它变得非常大,我建议使用一个预先分配的长数组,该数组的条目数量与边缘数量一样多。例如,使用自定义编码器:
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, ...));