
Hi Richard,
Date: Sat, 17 Mar 2012 13:43:17 -0400 From: rhansen@bbn.com To: mkgmap-dev@lists.mkgmap.org.uk Subject: Re: [mkgmap-dev] Problem with splitter
On 2012-03-15 03:51, GerdP wrote:
Hi Wolfgang,
I've described splitters algorithm as it is now here: http://gis.19327.n5.nabble.com/Problem-with-splitter-tp5555886p5561551.html
I am now working on a first approach that looks like this: pass 1: calculate tile areas pass 2: a) for each coord, way: find out all tiles that are "touched", save the info in a map
What is the definition of "touched"?
A point normally lies in exactly one tile. Nevertheless a point can be written to more tiles because of the overlap handling. With "touched" I mean the point is contained in the bounding box of the tile with its overlap. If a tile's extended bounding box is completely enclosed by an area,
does that way "touch" the tile? What if the way was a closed polyline instead of an area?
ASCII art illustration, where 'o' is a node, the outer box is a way (either area or closed polyline), and the inner box is a tile's extended bounding box:
o-----------o | _______ | | | | | | | | | | |_______| | o-----------o
b) for each relation, find out all tiles that are "touched", and add this information to the way map (so that each way belonging to a relation will be written to all tiles that is touched by the relation)
Same question: What does it mean for a relation to touch a tile?
This is something I want to find out with this discussion. Splitter r200 simply does this: If a way has at least one point in a tile, then the way is written to that tile. If a relation has at least one point or a way that is written to a tile, then the relation is also written to that tile. I think a correct solution should additionally write the relation to all tiles that are fully enclosed. If a relation has sub-relations, it should also be written to all tiles that the sub-relation was written to. Just to clarify: Writing a relation means writing the id, all tags, and the ids of the members.
pass 3: for each node of each way: add the info from the way map to the coords map (so that each coord belonging to a way will be written to all tiles that is touched by the way) pass 4: for each node, way, and relation: write to the output files
Suppose I feed all of North America to splitter. Wouldn't this algorithm write all of the nodes, ways, and relations that compose the United States administrative boundary to every tile in the US?
Yes, without a clever filter algorithm this could be the case. I still hope that we can find an algorithm that writes all that is needed, but not more. With needed I mean all information that mkgmap needs to correctly handle the ways and relations. See also Wolfgangs suggestions: http://gis.19327.n5.nabble.com/Problem-with-splitter-tp5555886p5573307.html I personally also don't like the idea of inventing points or ways, so I'd prefer a solution that simply doesn't write what isn't needed. Gerd
-Richard _______________________________________________ mkgmap-dev mailing list mkgmap-dev@lists.mkgmap.org.uk http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev