logo separator

[mkgmap-dev] Bug in handling of bus stops

From A drian ar2988-os at outlook.com on Sun Feb 1 12:15:50 GMT 2015

This bug was highlighted in r3334 when the test public_transport=platform was added to these four rules in the default points style file (lines 45-63):

(public_transport=platform | highway=bus_stop | railway=tram_stop | railway=halt | railway=station)
& (ref=* | route_ref=*) {
  set ref='${ref|def:}(${route_ref})';
}
(public_transport=platform | highway=bus_stop | railway=tram_stop | railway=halt | railway=station)
& lit=yes & (shelter=yes | covered=yes)
{
  set ref='${ref|def:}*';
}
(public_transport=platform | highway=bus_stop | railway=tram_stop | railway=halt | railway=station)
& lit!=yes & (shelter=yes | covered=yes)
{
  set ref='${ref|def:}+';
}
(public_transport=platform | highway=bus_stop | railway=tram_stop | railway=halt | railway=station)
& (shelter=no | covered=no)
{
  set ref='${ref|def:}-';
}

What happens is that if a node has two of the tags in the list

public_transport=platform | highway=bus_stop | railway=tram_stop | railway=halt | railway=station

then the node is processed twice by each rule, so the route_ref and the shelter marker (*, + or -) are doubled-up. Looking at https://www.openstreetmap.org/node/1424432523 - this node is tagged public_transport=platform and highway=bus_stop. Prior to r3334, the node had only one tag that matched and there was no doubling-up. From r3334 onwards, there are two tags that match and the result is Agglo Hérault Méditerranée: (1;2;3;4;5,4,4,3,3)(1;2;3;4;5,4,4,3,3)++ Gare SNCF. I believe it is not intended that style rules should work in this way, therefore it is a bug in the code. In which case it is a question for the Java experts.

Adrian

 		 	   		  


More information about the mkgmap-dev mailing list