[mkgmap-dev] Putting the DP code under the microscope
From Johann Gail johann.gail at gmx.de on Sat Jul 25 09:54:02 BST 2009
> Hi Johann, > > it is actually not what it seems to be. The douglasPeucker function is > called recursively. If the condition (maxDistance < allowedError) is > fulfilled, the current part of the way can be reduced to a line (in > case start- and endpoint are different points) or a point (in case > start- and endpoint are the same). So the "if (ab == 0) > points.remove(endIndex)" does not remove the endpoint of the whole > polygon, but only prevents the polygon to have consecutive identical > nodes if the original way has small "loops" in it. Wouldn't be that > uncommon for contour lines btw. Closed polygons stay closed unless > they are smaller than the allowedError, in which case they will reduce > to a single point and will be dropped later anyway. > > Ok, with your explanation it seems reasonable to me. I will gave it a try later. > Some other observation about the DP code: I'm currently using the > "Straight version" instead of the "Node version" and I think the maps > look much nicer if zoomed out. I would recommend this as the standard > setting. The problem of T-crossings not lining up isn't that > prominent, because in resolution 24 the DP won't be applied at all and > in the other resolutions it is not that much noticeable (for me at > least). > > I've played with both versions and both of them have different advantages. This was the reason I included both of them into the patch. The straight line was the first attempt and does a good work with the default settings. Later I increased the allowed error distance to reduce data more and speedup drawing speed of my etrex. In my working copy I increased the error distance this far, so that the line can differ one or two pixels on the display. With this the crossings doesn't match exactly anymore. Therefore I introduced the node version, which doesn't zap nodes of crossings. A further development would be, to consider only nodes which are visible crossings at the current zoom level. I.e. if a residential connects to a big road and the residential is not visible at the current zoom level, then it is allowed to zap this node. This would straighten out lines at low zooms much more. But at the DP filter code I don't have this information available. Btw.: there is another patch around, which merges lines before DP filtering them. This is reasonable for the highways at very low zoom levels, which could be simplified often to a sinlge line in the overview maps. (But only if they are not cut in segments from exit to exit). If I find some time I will release an updated patch for it. Regards, Johann
- Previous message: [mkgmap-dev] Putting the DP code under the microscope
- Next message: [mkgmap-dev] Putting the DP code under the microscope
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the mkgmap-dev mailing list