logo separator

[mkgmap-dev] Sea generation

From Charlie Ferrero charlie at cferrero.net on Sun Nov 14 15:07:50 GMT 2010

On 14/11/2010 04:40, Adrian wrote:
> On 5/11/2010, Charlie Ferrero wrote:
>> One improvement would be for the --generate-sea:mp version to imitate
>> the non-mp version in that a land polygon is generated to overwrite
>> the ugly Garmin yellow base colour.
>> This is the only issue stopping me from switching to --generate-sea:mp
> I have produced a modification for mkgmap. It creates a land polygon
> covering each tile, when you are using the option
> --generate-sea=multipolygon. The tag of the land polygon is set in the
> same way as for the no-mp option. Note: Felix has reported that doing
> this, slows down redrawing of the screen. For that reason, he recommends
> against this approach. I was not sure whether you wanted a land polygon
> over the whole tile, or only over the actual land area. The latter would
> be more difficult, and I'm not a Java programmer. Perhaps my
> modification will do as a temporary fix. If you do not specify a land
> polygon type in the style file, the modification should have no effect.
> I will go into more detail than you may need, in the hope that it will
> be helpful to less expert readers.
> Download the source, e.g. mkgmap-r1728.src.tar.gz
> Unpack the file, to produce the directory, e.g. mkgmap-r1728
> Use a text editor to open the file
> mkgmap-r1728/src/uk/me/parabola/mkgmap/reader/osm/SeaGenerator.java
> After line 148, [Coord se = new Coord(maxLat, maxLong);] insert
> if (generateSeaUsingMP) {
> /*
> * Add a land polygon covering the tile
> */
> long landId = FakeIdGenerator.makeFakeId();
> Way land = new Way(landId);
> land.addPoint(nw);
> land.addPoint(sw);
> land.addPoint(se);
> land.addPoint(ne);
> land.addPoint(nw);
> land.addTag(landTag[0], landTag[1]);
> saver.addWay(land);
> }
> I have seen strange things happen to text in e-mails, such as tabs being
> converted to spaces, and leading blanks being suppressed. Each of the
> lines above starts with either two tabs or three tabs. So I have also
> attached a file containing the same block of code. (But the last time I
> sent a text attachment, it appeared on the mailing list web site with a
> .pl extension and with all the line-endings removed!) If your text
> editor cannot handle Unix line-endings, you may need to use unix2dos and
> dos2unix.
> Having saved the file, change to the directory mkgmap-r1728, and compile
> mkgmap by entering
> ant dist
> at the command line.
> (Note for Mac OS 10.5 Leopard. You need 64-bit Intel hardware to run
> Apple's Java v1.6. To get ant to use Java v1.6, change the symbolic link
> CurrentJDK in /System/Library/Frameworks/JavaVM.framework/Versions to
> point to 1.6 instead of 1.5. Changing the preferred version of Java in
> the Java Preferences utility will not do the trick. You may need to redo
> the change to the symbolic link after a Java update.)
> If you need to rerun the compilation after fixing a problem, sometimes
> it will not succeed unless you first issue the command
> ant clean
> The directory mkgmap-r1728/dist will contain what you would normally
> download as mkgmap-r1728.zip or mkgmap-r1728.tar.gz. The jar file will
> be at mkgmap-r1728/dist/mkgmap.jar
> I discovered while testing, that the restriction on short option names
> in the configuration (.args) file, also applies to input files. If you
> just put a file name in the .args file, it will be silently ignored. You
> have to put e.g. input-file:white.TYP
> I would have liked to make this work also when you are not using
> --generate-sea, but I could not see how, because method end() of class
> SeaGenerator is not invoked when you are not using --generate-sea. If
> you try to insert similar code into method init(...), which *is* always
> invoked, you find that saver.getBoundingBox returns default values - it
> has not yet been set up to correspond to the map. As a workaround for a
> land-only map, you could use my modified version of mkgmap, with
> --generate-sea=multipolygon, and use a custom style with the line
> natural=sea [0x32 resolution 10]
> removed from the polygons file, in order to avoid any possible problems
> with flooding. For a map with a coastline, this workaround will not give
> you a coastline way drawn on a white background.
> To get a white background, you need to use a custom style and a custom
> .TYP file. The style needs to contain a line such as
> natural=land [0x010100 resolution 16]
> in the polygons file. The .TYP file needs to specify the colour of
> polygon type 0x010100 (or whatever you have chosen). There is a good
> description of how to construct a .TYP file in the cGPSmapper manual
> http://cgpsmapper.com/download/cGPSmapper-UsrMan-v02.5.pdf
> There is a good online .TYP file creator/editor at
> http://ati.land.cz/gps/typdecomp/editor.cgi
> You will not need this for making a white background, but details of the
> Garmin colour palette are here
> http://www.mkgmap.org.uk/pipermail/mkgmap-dev/2010q1/007419.html
> Details of what you need to do for certain, particularly recalcitrant
> GPS receivers, are here
> http://www.mkgmap.org.uk/pipermail/mkgmap-dev/2010q1/006929.html
> Pay attention to the drawing order, to placeholders; make sure that the
> family-id in your .TYP file matches the family-id of your map. The land
> should be at drawing order 1 and the sea at drawing order 2. To include
> the .TYP file in your map, add it to the list of input files to mkgmap.

Hi, thanks for your patch.  Unfortunately it doesn't work well for me.

1. Compiled with mkgmap r1724, using 
generate-sea:no-mp,no-sea-sectors,extend-sea-sectors,close-gaps=1000 (my 
normal compile)
Sea correct, land polygon present

2. Compiled with mkgmap r1724, using: 
Sea correct, no land polygon

3. Compiled with mkgmap r1728 with your patch, using: 
No sea, entire map is land


More information about the mkgmap-dev mailing list