
On Sun, Jan 30, 2011 at 9:42 PM, Marko Mäkelä <marko.makela@iki.fi> wrote:
On Sun, Jan 30, 2011 at 08:53:09PM +0100, Ben Konrath wrote:
I've run into a strange problem with --generate-sea while generating a map of Canada. Here's a screenshot of the problem I'm seeing:
http://bagu.org/scratch/generate-sea-problem-lake-ontario.bmp
You seem to have have a vertical band of inverted land/sea west from Oakville. I would guess that the NW or NE corner of the inverted box is at a tile border. I would suspect some error at the spot where one of the vertical lines intersects with the real coastline.
Hmm, I was almost going to believe that the ocean starts right south of Canada, but then I remembered that there is some piece of land called the United States in between. :-)
You can't really see the U.S. across the lake from Toronto it's easy to pretend it's not there :-).
I would guess two possible causes for your problem. Either your tile boundaries are chosen badly, so that some multipolygons are severed by them, or the input data is bad. splitter.jar will leave some 'safety margin' around the tiles, but it may not be enough. When the Lake Päijänne in Finland was defined in a single multipolygon (it used to be natural=coastline), I got some errors that I fixed by moving my tile boundaries so that the entire lake fits in a single tile.
The actual coastline seem fine around where the problem flooded land hits the lake. I think it probably has something to do with the multipolygon that makes up the North shore of Lake Ontario. I'm using my own Canada polygon cut from the planet so I might be cutting off the parts of the multipolygon. I'll look into this when I have some time.
If you want generate-sea to work on a non-rectangular map extract (and if the Great Lakes have been defined as natural=coastline), you may have to apply some black magic when choosing the tile borders. For my Finland map, I extracted the natural=coastline from the Geofabrik finland.osm.pbf with Osmosis, and loaded the result in JOSM. Then I figured out how to choose the tile borders so that the missing sections of natural=coastline would be outside the tile borders. Only in the north, I had to use extend-sea-sectors to augment a missing bit, because I did not want to create lots of tiny tiles near the Swedish/Finnish land border.
Thanks, this is really useful information.
I'm using mkgmap version r1783 with these options:
java -Xmx400M -Dlog.config=/home/ben/osm/mkgmap/resources/logging.properties
400M could be a bit scarce, but probably not causing this. I run with -Xmx1024m. If your logging.properties is like the one I have at http://www.polkupyoraily.net/osm/, you should have some mkgmap.log.* files. The most recent one should be mkgmap.log.0.
Does anybody know what's going on? What's the best way to debug a problem like this?
Search mkgmap.log.0 for 'MultiPolygon' or 'coastline'. Or, if you are ambitious, take and adapt my logging.ignore, and grep -vf logging.ignore mkgmap.log.0, and fix all errors. That is doable for a small country, such as Finland. I update my public map only when there are no serious errors (such as multipolygon issues or dead-end oneways other than some driveway).
Again, great information. Thanks! I'll check how Canada is doing on the error front. For now I'm relying on people who download my map to let me know if something's broken but it's would be better to add some error checking like you do. Cheers, Ben