[mkgmap-dev] Problem with splitter
From Richard Hansen rhansen at bbn.com on Sun Mar 18 22:15:47 GMT 2012
On 2012-03-18 04:59, Gerd Petermann wrote: > Hi Richard, > > generally I think an OSM element is "touching" a tile when it would > change the output of mkgmap if we simply remove it. I agree with that definition. > So, splittter should not remove something that "touches" a tile > without adding something else that allows to produce the same > result. Yes. Figuring out the best way to add something else is the hard part. > Maybe it would be better to say "has influence on" instead of > "touches". Yes, I like "influence" better. > I have to find out how the algorithms that are triggered with > parameters like --add-pois-to-lines or --location-autofill=nearest > are affected. So a city node influences a tile if there is a point in the tile where --location=autofill=nearest would choose that city. Tricky! If splitter tries to handle these mkgmap options, the line between splitter and mkgmap becomes blurred. That makes me a bit uncomfortable. Would it be better for mkgmap to handle these cases on its own by making multiple passes over the input tiles? >> If relation 148838 was included in the tile but none of its members >> were included, mkgmap would not know what part(s) of the tile were >> covered by the relation. That information would have to be >> communicated somehow. > > For that case I would like to write the relation id, its OSM tags > plus one special tag like > mkgmap:covers_tile=y > and nothing else (assuming that no point or way or sub-relation > "touches" the tile) I like this idea; special tags avoid aux files and can be easily processed with existing code and manipulated with existing tools. I'd prefer 'splitter:*' instead of 'mkgmap:*' because other tools besides mkgmap might use the tiles. mkgmap:covers_tile may not be sufficiently expressive. Maybe something like: splitter:tile_coverage=complete_tile Or, for single area partial coverage (where the area contains the point 42.390,-71.148 and its border is defined by the tile bounding box and ways 1234 and 5678): splitter:tile_coverage={(42.390,-71.148),1234,5678} Multiple area partial coverage could be expressed as a comma-separated list of single area definitions. >> I don't know enough about the OSM data format to know if option #2 is >> palatable. Creating fictitious OSM objects is not a good idea. Perhaps >> each tile's .pbf file can be accompanied by an .aux file indicating what >> parts of the tile are covered by each incomplete way or relation >> mentioned in the .pbf file. > > Well, I already suggested one additional file containing all > multi-tile-elements (all nodes of all ways that are touching multiple > tiles, plus all multi-tile-relations with all referenced nodes and > ways). Thorsten did not like that idea, see > http://gis.19327.n5.nabble.com/Problem-with-splitter-tp5555886p5560250.html > > I don't know if he would also complain about one *.aux file for each *.pbf ? I think your idea of special tags should work just fine; no need for *.aux files. > My proposal for an algorithm to select required nodes for one tile looks > like this: > [snip] > > I see no open problem besides runtime. I may be wrong, but I don't think this algorithm will work efficiently in all cases. For example: o------------------------------o | | (millions of nodes going north) | \ | o | \ +--------+ | #5 o-+-o #4 | | | \ | (tile) | | o #3 | | | / | | #1 o-+-o #2 | | / +--------+ | o | / | (millions of nodes going south) | | | o------------------------------o In this case, the algorithm marks nodes #2 through #4 (step 1a), then marks #1 and #5 (step a2). It then marks millions of nodes, one at a time, via step c2. Even if step c2 picks a different node (e.g., random or the node in the middle of the largest sequence of unmarked nodes), I think it will always be possible to come up with a scenario where all nodes will be marked before the algorithm terminates. Why not mark nodes #1 through #5 and use a special tag to indicate which side of that path is covered by the multi-tile polygon? -Richard
- Previous message: [mkgmap-dev] Problem with splitter
- Next message: [mkgmap-dev] BoundaryCoverageUtil
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the mkgmap-dev mailing list