logo separator

[mkgmap-dev] mergeroads branch

From WanMil wmgcnfg at web.de on Fri Sep 20 15:51:59 BST 2013

>> Regarding the changes in the source code please check:
>> The method mergeRoads() is called before the other routines that
>> manipulate lines.
>> If I got that right this can cause trouble with the
>> continue statement in the style which produces overlaid lines and the
>> loop in StyledConverter following this line:
>> 		// make sure that copies of modified roads are have equal pointshe
>>
>> Not sure, but I think the roads which were merged should somehow
>> appear in the deletedRoads or modifiedRoads ?
>
> Thanks for the hint! I will check that.
>

Mmmh, after a quick check I think there is no easy solution. And it's a 
bug too :-(

The modifiedRoads contains all way ids that are modified in the 
removeShortArcs handling. The deletedRoads contains all ids that have 
been removed by removeShortArcs.

Assume the following:
Way-Id: 4711
Tags: highway=motorway; bridge=yes

Way-Id: 4712
Tags: highway=motorway

4711 and 4712 are connected.

Style:
highway=motorway & bride=yes [ 0x2222 continue ]
highway=motorway [ 0x01 ]

0x2222 is used for drawing a bridge on top of the motorway.

The result are three garmin objects:
0x01   (4711)   --
0x2222 (4711)   ==
0x01   (4712)     ---

The RoadMerger merges the 0x01 4711 and 4712 garmin objects. So we have
0x01   (4711)   ------
0x2222 (4711)   ==

If the removeShortArcs modified the 0x01 way the id 4711 is added to the 
modifiedRoads list. That means that the points of 0x2222 are copied to 
the 0x2222 object.

Maybe the merge routine has to be moved after the removeShortArcs handling.

WanMil




More information about the mkgmap-dev mailing list