Got the list of edges of map-matching result. Got its internal basenode and adjnode id by
int nodeId = edge.getBaseNode();
int nodeId2 = edge.getAdjNode();
error when
long osmNodeId = hopper.getOSMNode(nodeId);
error info:
[main] ERROR com.graphhopper.storage.RAMDataAccess - node_mapping, segments:3, bufIndex:2982656, bytePos:2982656, segPower:0
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2982656
at com.graphhopper.storage.RAMDataAccess.getInt(RAMDataAccess.java:235)
at MapMatchingTest.MyGraphHopper.getOSMNode(MyGraphHopper.java:122)
getOSMNode() function in MyGraphHopper.java:
public long getOSMNode(int internalNodeId) {
if (internalNodeId >= getGraphHopperStorage().getNodes()){
return -1;
}
System.out.println("internalNodeId");
System.out.println(internalNodeId);
long pointer = 8L * internalNodeId;
System.out.println(pointer);
nodeMapping.ensureCapacity(pointer + 8L);
return bitUtil.combineIntsToLong(nodeMapping.getInt(pointer), nodeMapping.getInt(pointer + 4L));
}
how to solve it?