[OSM-dev] detecting street made up of multiple lanes

marcus.wolschon at googlemail.com marcus.wolschon at googlemail.com
Tue Mar 17 12:40:12 GMT 2009


I may have found an algorithm myself:

Input: way A, way B with the same name/ref
Output: true if all of A(or B) is parallel to B(or A)

foreach Node a in A do:
  if distance(a, B) > X then
    return false;
  endif
done

foreach Node b in B do:
  if distance(b, A) > X then
    return false;
  endif
done

return true

Note that I don't care about oneway=true as this is for
rendering low zoom levels (LOD1=a whole city, LOD2=a whole state, LOD3=a
whole country/continent)

Marcus


On Tue, 17 Mar 2009 12:55:00 +0100, <marcus.wolschon at googlemail.com> wrote:
> Hello,
> 
> I am currently presented with a quite puzzling problem.
> For low zoom levels Traveling Salesman (or more exact, the LODDataSet)
> merges streets that are broken up into multiple ways
> into as few ways as possible and then simplifies these polylines.
> 
> Now there are road-constellations (first detected in Helsinki, Finnland
> Bug-ticket: http://travelingsales.sourceforge.net/bugs/view.php?id=52)
> where roads start as 2 parallel ways with oneway=true, then merge into
> a single way and then split up into 2 parallel ways with oneway=true
again.
> One example would be "name=Pakilantue" near the crossing with "name=Kehä
> I".
> Another example would be pretty much any german motorway.
> 
> I would like to detect such ways and merge the 2 parallel ways into a
> single one.
> My question:
> Given only the 2 parallel ways and their nodes, how could I detect these
> to be 2 lanes of the same street?
> 
> I know/I can assume:
> * they have the same namd and/or ref
> * both are oneway=true
> 
> I can not assume:
> * that both ways meet at a common point like in Helsinki
> 
> 
> Marcus
> 




More information about the dev mailing list