Everybody is invited to build ... an own map. This can be interesting for the following reasons:

  1. Be up-to-date:
    It's possible to build a map with the most recent data. For this the OSM-data has to be downloaded and the map has to be built. All necessary steps are managed by Perl-script "mt.pl".
  2. Content:
    To build a map from OSM-data means data reduction. Only objects "worth" displaying are shown on the map. These definitions, which objects are shown, can subject to change for nearly every object. These definitions are configured in three style-files"polygons", "lines" and "points". These are plain text files and can be edited with an ordinary text editor (like TextWrangler for OS X oder Notepad++ for Windows). Most definitions are well commented to give a little help.
  3. Design:
    The design is responsible for the visual appearence. Every appearence of nearly every object can be changed. For areas this means e. g. the colour, for lines it means e. g. thickness and for POIs it could mean the icon. Responsible for the design is a (binary) TYP-file. This TYP-file has to be edited with a special editor like TYPViewer for Windows.


For about 15,000 years ago: The Rhine Falls in Schaffhausen is by far the largest waterfall in Europe.
In the summer rush to 150 meters wide on average 600,000 liters of water per second 23 meters in the depth.

The last two aspects "content" and "design" are closely related. If a complete new type of object should be displayed it is necessary to define it regarding the two aspects.

Workflow for creating a Freizeitkarte:

The exact workflow depends on the type of map to be generated. Basically there are two types supported by the development environment::

  1. Maps based on existing OSM data extracts:
    There are existing extracts downloadable at GeoFabrik for this map type. Therefore the workflow looks simplified as follows:
    • One time completion of the development environment: downloading the boundaries into the development environment (bootstrap)
    • Downloading the OSM data and the according elevation data of the wished map (fetch_*)
    • Joining the downloaded OSM and elevation data (join)
    • Spliting the complete data into smaller junks, so called tiles (split)
    • Compiling the map (build)
    • Creating the different versions for GPS, BaseCamp, and so on (gmap, nsis, imagedir, gmapsupp)
    More details can be found here
  2. Maps for which we have to extract the wished region on our own:
    For this map type there are no existing extracts for the wished region downloadable from GeoFabrik, this is why we have to download a bigger region (containing our wished region, in most cases complete Europe) and extract the wished region inside the development environment on our own. The workflow looks simplified as follows:
    • One time completion of the development environment: downloading the boundaries into the development environment (bootstrap)
    • Downloading the OSM data of the bigger region containing the wished one, normally complete Europe (fetch_osm)
    • Extracting the wished region from the bigger one, e.g. DEU+ (extract_osm)
    • Downloading the elevation data directly for the wished region, e.g. DEU+ (fetch_ele)
    • Joining the extracted OSM data and the downloaded elevation data (join)
    • Spliting the complete data into smaller junks, so called tiles (split)
    • Compiling the map (build)
    • Creating the different versions for GPS, BaseCamp, and so on (gmap, nsis, imagedir, gmapsupp)
    More details can be found here

Overview regarding workflow for both type of maps:

Operation:

MapTool (mt.pl):
If you call the utility "mt.pl" (MapTool) with the argument -h, the following help text is displayed:

$ perl mt.pl -?

mt.pl - Map Tool for creating Garmin maps, 1.3.15 - 2019/03/02

Usage:
perl mt.pl [--ram=<value>] [--cores=<value>] [--ele=<value>] \
           [--typfile="<filename>"] [--style="<dirname>"] \
           [--language="<lang>"] [--unicode] [--ntl="<name-tag-list>"] \
           [--downloadbar] [--downloadspeed=<value>] [--continuedownload]\
           [--dempath=<path>]\
           <Action> <ID> | <Code> | <Map> [PPO] ... [PPO]
  or
perl mt.pl bootstrap [urls <url_bounds> <url_sea>]
perl mt.pl bootstrap list

  or for getting help:
perl mt.pl -? | -h


Examples:
perl mt.pl                              bootstrap
perl mt.pl                              build     Freizeitkarte_Hamburg
perl mt.pl  --ram=1536    --cores=2     build     Freizeitkarte_Hamburg
perl mt.pl  --ram=6000                  build     5815
perl mt.pl  --ram=6000    --cores=max   build     5815
perl mt.pl  --ram=6000    --cores=max   build     Freizeitkarte_Oesterreich  DEXTENDEDROUTING

Options:
--ram      = javaheapsize in MB (join, split, build) (default = 1536)
--cores    = max. number of CPU cores (build) (1, 2, ..., max; default = 2)
--ele      = equidistance of elevation lines (fetch_ele) (10, 20; default = 20)
--typfile  = filename of a valid typfile to be used (build, gmap, nsis, gmapsupp, imagedir, typ) (default = freizeit.TYP)
--style    = name of the style to be used, must be a directory below styles (default = fzk)
--language = overwrite the default language of a map (en=english, de=german);
             if you build a map for another language than the map's default language,
             this option needs to be set for all subcommands, else it swaps back to the default language and possibly fails.
--unicode  = Build the map in unicode (CP65001) instead of in the native codepage of the map language.
                --unicode
--ntl      = overwrite the default name-tag-list for the mkgmap run (name) with a specific list, e.g.
                --ntl="name:en,int_name,name"
             Please check mkgmap documentation for more information.
--downloadbar
           = Show a download progress bar during actions 'bootstrap', 'fetch_osm' and 'fetch_ele'.
                --downloadbar
--downloadspeed
           = Set speed limit for downloads during actions 'bootstrap', 'fetch_osm' and 'fetch_ele'.
             Setting speed limit in number of bytes:
                --downloadspeedlimit=15
             You can also set the speed limit in kilobytes (k), megabytes (m) or gigabytes (g) by using the correct character, e.g.:
                --downloadspeedlimit=15m
--continuedownload
           = try to continue interrupted downloads for actions 'fetch_osm' and 'fetch_ele'.
                --continuedownload
             Restrictions:
             - can only work if you don't use the 'create' action, which cleans out any files from the working directories
             - using this option on fully completed downloads will fail to download anything new.
             - not guaranteed to work always and might create data garbage, but worth a try on huge downloads
--dempath
           = specify a directory or ZIP file with HGT files used to add a Digital Elevation Model subfile to the map (build).
                --dempath=D:/fzk/hgtfiles
                --dempath=D:/fzk/hgtfiles/view3.zip
             N.B. On Windows, use forward slashes.
             Please check mkgmap documentation for more information.

--demtype
           = specify the resolution of the HGT file in arc seconds. Supported resolutions are 1 and 3.
             Used to define default demdist values.
                --demtype=1
                --demtype=3

--demdists
           = Define dem-dists values for mkgmap in case --demtype is not set.
                --demdists="9942,19884,29826,39768,49710,59652,69594,79536"
             Please check mkgmap documentation for more information.

PPO        = preprocessor options (multiple possible), to be invoked with D<option>

Arguments:
Action     = Action to be processed
ID         = ID of the to processed map
Code       = Code of the to processed map
Map        = Name of the to be processed map

Actions:
bootstrap  =     Complete the Environment with needed downloads (boundaries)
create     = 1.  (re)create all directories
fetch_osm  = 2a. fetch osm data from url
fetch_ele  = 2b. fetch elevation data from url
join       = 3.  join osm and elevation data
split      = 4.  split map data into tiles
build      = 5.  build map files (img, mdx, tdb)
gmap       = 6.  create gmap file (for BaseCamp OS X, Windows)
nsis       = 6.  create nsis installer (full installer for Windows)
gmapsupp   = 6.  create gmapsupp image (for GPS receiver)
imagedir   = 6.  create image directory (e.g. for QLandkarte)

ID = Code = Map  (default language):
5810 = BADEN-WUERTTEMBERG         = Freizeitkarte_BADEN-WUERTTEMBERG                  (de)
5811 = BAYERN                     = Freizeitkarte_BAYERN                              (de)
5812 = BERLIN                     = Freizeitkarte_BERLIN                              (de)
5813 = BRANDENBURG                = Freizeitkarte_BRANDENBURG                         (de)
5814 = BREMEN                     = Freizeitkarte_BREMEN                              (de)
5815 = HAMBURG                    = Freizeitkarte_HAMBURG                             (de)
5816 = HESSEN                     = Freizeitkarte_HESSEN                              (de)
5817 = MECKLENBURG-VORPOMMERN     = Freizeitkarte_MECKLENBURG-VORPOMMERN              (de)
5818 = NIEDERSACHSEN              = Freizeitkarte_NIEDERSACHSEN                       (de)
5819 = NORDRHEIN-WESTFALEN        = Freizeitkarte_NORDRHEIN-WESTFALEN                 (de)
5820 = RHEINLAND-PFALZ            = Freizeitkarte_RHEINLAND-PFALZ                     (de)
5821 = SAARLAND                   = Freizeitkarte_SAARLAND                            (de)
5822 = SACHSEN                    = Freizeitkarte_SACHSEN                             (de)
5823 = SACHSEN-ANHALT             = Freizeitkarte_SACHSEN-ANHALT                      (de)
5824 = SCHLESWIG-HOLSTEIN         = Freizeitkarte_SCHLESWIG-HOLSTEIN                  (de)
5825 = THUERINGEN                 = Freizeitkarte_THUERINGEN                          (de)
6040 = AUT                        = Freizeitkarte_AUT                                 (de)
6056 = BEL                        = Freizeitkarte_BEL                                 (fr)
6756 = CHE                        = Freizeitkarte_CHE                                 (de)
6203 = CZE                        = Freizeitkarte_CZE                                 (en)
6208 = DNK                        = Freizeitkarte_DNK                                 (en)
6276 = DEU                        = Freizeitkarte_DEU                                 (de)
6250 = FRA                        = Freizeitkarte_FRA                                 (fr)
6442 = LUX                        = Freizeitkarte_LUX                                 (fr)
6528 = NLD                        = Freizeitkarte_NLD                                 (nl)
6616 = POL                        = Freizeitkarte_POL                                 (pl)
6752 = SWE                        = Freizeitkarte_SWE                                 (en)

Terminal / command window:

Requirements:

Recommendations for generating a map for a State:

Recommendations for generating a map of Germany:

Note:

Options: There are options available to change the map style which can be activated:

Freizeitkarte development environment:

Download

Additional Information:
The downloadable development environment is hosted on github and has the filename fzk‑mde‑garmin‑LATEST.zip. Inside this file the well known directory Freizeitkarte‑Entwicklung is boxed in an additional directory with the name fzk‑mde‑garmin‑Latest.