Skip to content

Commit 7dee155

Browse files
author
Peter
committed
removed applyNodeTags as node handling is broken and needs a proper fix
1 parent 11c2b95 commit 7dee155

File tree

5 files changed

+16
-114
lines changed

5 files changed

+16
-114
lines changed

core/src/main/java/com/graphhopper/reader/OSMReader.java

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -104,11 +104,10 @@ public class OSMReader implements DataReader
104104
private LongIntMap osmNodeIdToInternalNodeMap;
105105
private TLongLongHashMap osmNodeIdToNodeFlagsMap;
106106
private TLongLongHashMap osmWayIdToRouteWeightMap;
107-
// stores osm ids used by relations to identify which edge ids needs to be mapped later
107+
// stores osm way ids used by relations to identify which edge ids needs to be mapped later
108108
private TLongHashSet osmIdStoreRequiredSet = new TLongHashSet();
109-
;
110-
private TIntLongMap edgeIdToOsmidMap;
111-
private final TLongList barrierNodeIDs = new TLongArrayList();
109+
private TIntLongMap edgeIdToOsmIdMap;
110+
private final TLongList barrierNodeIds = new TLongArrayList();
112111
protected PillarInfo pillarInfo;
113112
private final DistanceCalc distCalc = new DistanceCalcEarth();
114113
private final DistanceCalc3D distCalc3D = new DistanceCalc3D();
@@ -117,7 +116,7 @@ public class OSMReader implements DataReader
117116
private int nextTowerId = 0;
118117
private int nextPillarId = 0;
119118
// negative but increasing to avoid clash with custom created OSM files
120-
private long newUniqueOSMId = -Long.MAX_VALUE;
119+
private long newUniqueOsmId = -Long.MAX_VALUE;
121120
private ElevationProvider eleProvider = ElevationProvider.NOOP;
122121
private boolean exitOnlyPillarNodeException = true;
123122
private File osmFile;
@@ -236,10 +235,10 @@ private TLongSet getOsmIdStoreRequiredSet()
236235

237236
private TIntLongMap getEdgeIdToOsmidMap()
238237
{
239-
if (edgeIdToOsmidMap == null)
240-
edgeIdToOsmidMap = new TIntLongHashMap(getOsmIdStoreRequiredSet().size());
238+
if (edgeIdToOsmIdMap == null)
239+
edgeIdToOsmIdMap = new TIntLongHashMap(getOsmIdStoreRequiredSet().size());
241240

242-
return edgeIdToOsmidMap;
241+
return edgeIdToOsmIdMap;
243242
}
244243

245244
/**
@@ -411,9 +410,6 @@ void processWay( OSMWay way )
411410
// remember barrier for processing the way behind it
412411
lastBarrier = i;
413412
}
414-
} else if (nodeFlags < 0)
415-
{
416-
wayFlags = encodingManager.applyNodeFlags(wayFlags, -nodeFlags);
417413
}
418414
}
419415

@@ -790,7 +786,7 @@ private int handlePillarNode( int tmpNode, long osmId, PointList pointList, bool
790786
return (int) tmpNode;
791787
}
792788

793-
void finishedReading()
789+
protected void finishedReading()
794790
{
795791
printInfo("way");
796792
pillarInfo.clear();
@@ -799,7 +795,7 @@ void finishedReading()
799795
osmNodeIdToNodeFlagsMap = null;
800796
osmWayIdToRouteWeightMap = null;
801797
osmIdStoreRequiredSet = null;
802-
edgeIdToOsmidMap = null;
798+
edgeIdToOsmIdMap = null;
803799
}
804800

805801
/**
@@ -827,7 +823,7 @@ long addBarrierNode( long nodeId )
827823

828824
private long createNewNodeId()
829825
{
830-
return newUniqueOSMId++;
826+
return newUniqueOsmId++;
831827
}
832828

833829
/**
@@ -838,10 +834,10 @@ Collection<EdgeIteratorState> addBarrierEdge( long fromId, long toId, long flags
838834
// clear barred directions from routing flags
839835
flags &= ~nodeFlags;
840836
// add edge
841-
barrierNodeIDs.clear();
842-
barrierNodeIDs.add(fromId);
843-
barrierNodeIDs.add(toId);
844-
return addOSMWay(barrierNodeIDs, flags, wayOsmId);
837+
barrierNodeIds.clear();
838+
barrierNodeIds.add(fromId);
839+
barrierNodeIds.add(toId);
840+
return addOSMWay(barrierNodeIds, flags, wayOsmId);
845841
}
846842

847843
/**
@@ -893,12 +889,12 @@ boolean isInBounds( OSMNode node )
893889
/**
894890
* Maps OSM IDs (long) to internal node IDs (int)
895891
*/
896-
LongIntMap getNodeMap()
892+
protected LongIntMap getNodeMap()
897893
{
898894
return osmNodeIdToInternalNodeMap;
899895
}
900896

901-
TLongLongMap getNodeFlagsMap()
897+
protected TLongLongMap getNodeFlagsMap()
902898
{
903899
return osmNodeIdToNodeFlagsMap;
904900
}

core/src/main/java/com/graphhopper/routing/util/AbstractFlagEncoder.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -208,14 +208,6 @@ public long handleNodeTags( OSMNode node )
208208
return 0;
209209
}
210210

211-
/**
212-
* This method is called after determining the node flags and way flags.
213-
*/
214-
public long applyNodeFlags( long wayFlags, long nodeFlags )
215-
{
216-
return nodeFlags | wayFlags;
217-
}
218-
219211
@Override
220212
public boolean isForward( long flags )
221213
{

core/src/main/java/com/graphhopper/routing/util/EncodingManager.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -395,20 +395,6 @@ public long handleNodeTags( OSMNode node )
395395
return flags;
396396
}
397397

398-
/**
399-
* When parsing the ways we have the node flags as long variable encoded in analyzeNode.
400-
*/
401-
public long applyNodeFlags( long wayFlags, long nodeFlags )
402-
{
403-
long flags = 0;
404-
for (AbstractFlagEncoder encoder : edgeEncoders)
405-
{
406-
flags |= encoder.applyNodeFlags(wayFlags & encoder.getWayBitMask(), nodeFlags);
407-
}
408-
409-
return flags;
410-
}
411-
412398
private static int determineRequiredBits( int value )
413399
{
414400
int numberOfBits = 0;

core/src/test/java/com/graphhopper/reader/OSMReaderTest.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -580,16 +580,6 @@ public long handleNodeTags( OSMNode node )
580580
return -objectEncoder.setValue(0, 1);
581581
return 0;
582582
}
583-
584-
@Override
585-
public long applyNodeFlags( long wayFlags, long nodeFlags )
586-
{
587-
double speed = getSpeed(wayFlags);
588-
if (objectEncoder.getValue(nodeFlags) != 0)
589-
speed -= 5;
590-
591-
return setSpeed(0, speed);
592-
}
593583
};
594584
EncodingManager manager = new EncodingManager(encoder);
595585
GraphStorage graph = newGraph(dir, manager, false, false);

core/src/test/java/com/graphhopper/routing/util/EncodingManagerTest.java

Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -182,68 +182,6 @@ public void testFullBitMask()
182182
assertTrue(bitUtil.toBitString(foot.getNodeBitMask()).endsWith("00011111110000000"));
183183
}
184184

185-
@Test
186-
public void testApplyNodeTags()
187-
{
188-
CarFlagEncoder car = new CarFlagEncoder();
189-
CarFlagEncoder car2 = new CarFlagEncoder(7, 1)
190-
{
191-
protected EncodedValue nodeEncoder;
192-
193-
@Override
194-
public int defineNodeBits( int index, int shift )
195-
{
196-
shift = super.defineNodeBits(index, shift);
197-
nodeEncoder = new EncodedValue("nodeEnc", shift, 2, 1, 0, 3);
198-
return shift + 2;
199-
}
200-
201-
@Override
202-
public long handleNodeTags( OSMNode node )
203-
{
204-
String tmp = node.getTag("test");
205-
// return negative value to indicate that this is not a barrier
206-
if (tmp == null)
207-
return -nodeEncoder.setValue(0, 1);
208-
return -nodeEncoder.setValue(0, 2);
209-
}
210-
211-
@Override
212-
public long applyNodeFlags( long wayFlags, long nodeFlags )
213-
{
214-
double speed = speedEncoder.getDoubleValue(wayFlags);
215-
double speedDecrease = nodeEncoder.getValue(nodeFlags);
216-
return setSpeed(wayFlags, speed - speedDecrease);
217-
}
218-
};
219-
EncodingManager manager = new EncodingManager(car, car2);
220-
221-
OSMNode node = new OSMNode(1, Double.NaN, Double.NaN);
222-
OSMWay way = new OSMWay(2);
223-
way.setTag("highway", "secondary");
224-
225-
long wayFlags = manager.handleWayTags(way, manager.acceptWay(way), 0);
226-
long nodeFlags = manager.handleNodeTags(node);
227-
wayFlags = manager.applyNodeFlags(wayFlags, -nodeFlags);
228-
assertEquals(60, car.getSpeed(wayFlags), 1e-1);
229-
assertEquals(59, car2.getSpeed(wayFlags), 1e-1);
230-
231-
node.setTag("test", "something");
232-
wayFlags = manager.handleWayTags(way, manager.acceptWay(way), 0);
233-
nodeFlags = manager.handleNodeTags(node);
234-
wayFlags = manager.applyNodeFlags(wayFlags, -nodeFlags);
235-
assertEquals(58, car2.getSpeed(wayFlags), 1e-1);
236-
assertEquals(60, car.getSpeed(wayFlags), 1e-1);
237-
238-
way.setTag("maxspeed", "130");
239-
wayFlags = manager.handleWayTags(way, manager.acceptWay(way), 0);
240-
assertEquals(car.getMaxSpeed(), car2.getSpeed(wayFlags), 1e-1);
241-
nodeFlags = manager.handleNodeTags(node);
242-
wayFlags = manager.applyNodeFlags(wayFlags, -nodeFlags);
243-
assertEquals(98, car2.getSpeed(wayFlags), 1e-1);
244-
assertEquals(100, car.getSpeed(wayFlags), 1e-1);
245-
}
246-
247185
/**
248186
* Tests the combination of different turn cost flags by different encoders.
249187
*/

0 commit comments

Comments
 (0)