osmlab / atlas

OSM in memory
BSD 3-Clause "New" or "Revised" License
231 stars 80 forks source link

ComplexRoundabout returns incorrect instructions. #658

Open vladlemberg opened 4 years ago

vladlemberg commented 4 years ago

ComplexRoundabout is not properly handling following combination: junction=roundabout + oneway=no. (data issue) Example: WayID

Screen Shot 2020-07-30 at 7 48 26 AM

MalformedRoundabout Check returns following instructions: 1.This roundabout is malformed. 2. This roundabout does not form a single, one-way, complete, car navigable route. Problem occurs here: if (this.roundaboutEdgeSet.stream() .anyMatch(roundaboutEdge -> !HighwayTag.isCarNavigableHighway(roundaboutEdge) || !roundaboutEdge.isMasterEdge()) || !this.roundaboutRoute.start().inEdges().contains(this.roundaboutRoute.end())) Possible fix options:
Option1 - filter MaterEdge in SimpleEdgeWalker Option2 - filter MaterEdge in building a Route fromNonArrangedEdgeSet.

Bentleysb commented 4 years ago

I am happy to be corrected, but it is my understanding that a roundabout should only every be one way in OSM. I would suggest that this feature is correctly flagged by MalformedRoundaboutCheck for not being one way, and that it is even more correctly flagged by RoundaboutValanceCheck with the instruction "This roundabout should be a turning loop or turning circle."

vladlemberg commented 4 years ago

Hi Bentley, thanks for your comment! This particular case of mistagging roundabout will be flagged in two checks: 1) RoundaboutValanceCheck 2) MalformedRoundaboutCheck: as part of migration OSMOSE4020. currently its under validation. planning to submit a PR next week.