Topographic OSM map of Macedonia for Garmin devices

Hello all!

I have just built my first topographical OSM map file for Macedonia (spacing of contour lines = 20m) for direct downloading to Garmin devices - and I learned a lot by doing so :slight_smile: ! If anyone has a Garmin GPS (I use the eTrex Legend HCx here) and is interested to try it out, you can download it from here.

I finally ended up building this map myself, after having searched but not found anything similar available for downloading. If you are aware of any other such source, I would appreciate if you could let me know.

Поздрав, Heinz

Hi Heinz,

I loaded the map in Garmin Mobile XT (Symbian OS) and it is beautiful. Unfortunately it is not routable. Some street names appear with abbreviated capital letters (I’ve seen this problem before, without --code-page option) however, place names (towns) appear OK even with lower-case letters (which never worked for me).

Can you please share the mkgmap options (and/or style-file) you used to create the topo map. I was trying to create multi-layer gmapsupp.img with topo+routing layer but I always seem to get a big yellow box as result for the topo-layer. These days srtm2osm does not collect data (NASA changed SRTM server) any more, so i used GroundTruth to create contour.osm but all examples I found for creating topo-layer are with srtm2osm data.


Hi Ivan,

Yes indeed my Garmin maps are not routable. But to be honest, I don’t think that, given the Macedonian state of the map, routing should yet be used for navigation. However, it’s an excellent tool for finding problems, such as missing connection and wrong classifications/speeds in the current data. For this, I found to be an excellent source to obtain routable Garmin maps. I selected the tiles 63240138.img, 63240148.img and 63240149.img, put in my email and within an hour I got the links to download the corresponing Garmin maps. It also includes installers for MapSource, so I don’t use the routing on the GPS itself, but just on the PC - which gives a very convenient way for checking the connectivity and consistency of the OSM data.

As for my topographical map, I will try to document the steps I used incl. my style and type files when I get some time. Could you please give me an example of what you mean exactly with: Some street names appear with abbreviated capital letters… My transliteration is just a “quick&dirty” shell script, so when I know what goes wrong chances are that I can correct it.

As for srtm2osm, indeed I had this problem with the changed server. I looked at GroundTruth but preferred to stay with srtm2osm. So I resorted to the following trick: I downloaded the necessary * files from the new server with wget and put them into the corresponding directory of my local ftp server. Then I put a “cheat” entry “ localhost into my /etc/hosts file, so that srtm2osm could access the “old” server via ftp… (see also the discussion in the german subforum)

Поздрав, Heinz

Hi Heinz,

The Macedonian part of the map is actually quite routable. For some time now, I am downloading fresh data and make my own routable map with mkgmap. I install it in MapSource and do route testing and fix any error I can find. For Skopje, I also drive test it frequently. Sometimes it produces weird routes (i.e. not the normal route I would chose myself based on experience) but I think that is limit of Garmin sw (i.e. does not take into account number of traffic lights, speed bumps, etc…). Other OSM members have also worked on fixing the routability problems. The current state of map for MK can be used for navigation, at least on major roads. This does not mean that there are no errors etc, but as OSM, that is work in progress.

The maps at the source you pointed (and also on or seem to lag and contain errors that were fixed some time ago, compared to i.e. data i can download via OSM server side scripts. Therefore I preffer making my own garmin maps with mkgmap.

What I can’t do so far is topo-map. I found some tips how to make multy-layer garmin map, i.e. unroutable topo layer over separate routable layer (invisible, etc…), see: and further messages in the thread. So currently I am playing with this, but I would appreciate help with the topo-layer.

As for the capital letters abbreviations. On my unit (i.e. Garmin software on top of symbian) street names are shown as ‘B3MB’ ('Bulevar 3ta Makedonska Brigada) or BI (Bulevar Ilinden). If you specify i.e. --code-page=1250 to mkgmap, than all street/POI names show with capital letters (but than built-in mkgmap transliteration does not work). I am wondering if this is specific to Garmin Mobile XT.


Hello Ivan!

I am glad to hear that the routability of the Macedonian map has made such big progress. Encouraged by your news, I have rebuilt my maps today with the routable feature activated. But as I am in Switzerland, I cannot actually test the navigation feature of these maps on my eTrex - but I hope it will work…

At the same time I corrected a little problem in my transliteration script, the cyrillic “J” and “j” were not transliterated.

As for the abbreviations of the street names you mentioned, I checked and both “Bulevar 3ta Makedonska Brigada” and “Bulevar Ilinden” appear correctly and in full length on my eTrex Vista HCx.

I have now also put on my ggbs-OSM page the links to my style and type files.The changes from the default style are essentially for the contour lines, the rail (to allow showing railways also on larges scales, type 0x18 seems to be handled specially by Garmin), and the ski- and chairlifts. In the type file, the changes are mainly to have the areas semi-transparent so that the contourlines from a lower level can still be seen, plus the changes that correspond to the changes in the style files.

As for the calls to mkgmap, here are the shell scripts I use:

  1. mkmap-mk to create the filess 38910000.img, 38910001.img, 38910000.tdb and gmappsup-mk-YYMMDD.img from the OSM input file mk-YYMMDD.osm:
#  shell script mkmap-mk 
java -Xmx512M -jar ../mkgmap/mkgmap.jar \
-n 38910001 \
--overview-mapname=38910000 \
-description=$1:r \
--country-name=Macedonia \
--country-abbr=MK  \
--style-file=./style \
--style=heinz \
--family-id=389  \
--net \
--route \
--product-id=1  \
--family-name=OSM-MK  \
--ignore-osm-bounds  \
--tdbfile  \
--transparent  \
--name-tag-list=name:en,int_name,name  \
../gmt/gmt -w -e 38910000 38910000.img
../gmt/gmt -j -f 389,1 -m $1:r -o gmapsupp-{$1:r}.img ../heinz389.typ 3891000[01].img
../gmt/gmt -i gmapsupp-routable-{$1:r}.img
  1. mktopo-mk to build the topomaps 53276xxx.img from the corresponding 53276xxx.osm files that were generated with srtm2osm:
foreach i ($*)
java -Xmx1266M -jar ../mkgmap/mkgmap.jar \
--mapname=$i:r \
--description={$i:r} \
--country-name=Macedonia \
--country-abbr=MK  \
--family-id=388  \
--product-id=1  \
--family-name=TOPO-MK  \
--ignore-osm-bounds  \
--style-file=./style \
--style=heinz \
--transparent  \
--name-tag-list=name:en,int_name,name  \
  1. Finally the commands I use to combine the two maps into a singe multilayer map:
cp ../../heinz389.typ heinz388.typ
../../gmt/gmt -w -y 388,1 heinz388.typ
../../gmt/gmt -j -o gmappsup-mk-topo-$1.img -m topo-mk -f 388,1 heinz388.typ ../../heinz389.typ 53276*img ../gmapsupp-mk-$1.img
../../gmt/gmt -i gmappsup-mk-topo-$1.img

I admit that I also had quite some problems creating combined maps at first. Using the gmt tool was very helpful to me. Not just that it allows me to do everything in Linux, but using the “-i” option to analyze gmapsupp.img files helped me a lot to understand how the combined maps work. As it turns out, a lot of my problems were related to wrong product and family ids.

Note that I copy my scripts here not with the intention that they can be used as such (they cannot, there are too many dependencies on my system and my paths here!), but rather to show you exactly how I use mkgmap and gmt to generate and combine the maps.

Поздрав, Heinz

Hi Heinz, Ivan,

Heinz, thanks for putting this nice map together! I just downloaded it and installed it on my Vista HCx. Since I have the same GPS as Heinz, I can’t really help in getting some more insight on the “abbreviated road name” problem since they are showing up OK in the Vista HCx.
However, I have a new problem. I previously used the routable maps offered by OSM User Lambertus (those are the routable maps you can get by marking tiles mentioned in the third post by Heinz) and the unroutable maps by OSM User Computerteddy. Now on Heinz’s map I have the problem that the base map still shows together with the features of the installed map. That never happed with the other two maps mentioned above. This might be a setup problem, but I could not find any way to disable displaying the basemap.

Does any of you have any clues?


Hallo Martin!

The problem you observe is most likely due du to the fact that I defined both mapset (mk-YYMMDD and topo-mk) to be transparent, which allows me to
superimpose one or the other, depending on the draw-priority I define for the mapsets. Therefore, whatever mapset is underneath and “shown” will
be visible as well.

Have you tried to “hide” the basemap? I do this on my eTrex Vista in the same way as I show/hide the contour lines on the map, i.e.

  • go to the map display page
  • press menu button
  • select “setup map” → enter
  • go to the “(i)” tab
  • press menu button again
  • now you have a menu allowing to show/hide the different mapset individually
  • so to disable the basemap, just select “hide basemap” → enter
    At least for me that works.

Hiding the basemap this way (instead of drawing it and then overpainting it with an non-transparent mapset gives probably also a faster map display.

Gruss, Heinz

PS: I just have updated the firmware of my Vista HCx to 3.00, Auto calibration of the altimeter now seems to work fine (had always problems before)

Hi Heinz,

thanks for the guide to the basemap hiding feature. I did not find that before. The menu structure of the Vista is not really straight forward. Nor is the manual. Now I have your map without the basemap showing.

Thanks and Gruss,


I just uploaded an updated version of my Macedonian OSM Garmin maps to our website.

Поздрав, Heinz

Hello Heinz,

I’ve just updated my Garmin eTrex Legend Cx with your newest gmapsupp.img based on OSM data from 2009-08-07 – routable! I will have now what to explore. Certainly, it will be very interesting to check the routability of this map. There are so much new objects and streets, but the most interesting thing certainly is the topographic feature of the map. I am very curious to make some experiments on the terrain. Thank you very much!

?. ???

Hi Heinz, All,

After some time toying with style/TYP files, i finally made mz multi-layer map, including topo-layer. I am trying to further improve what is already excellent map that you provide. Thank you for the assistance with topo maps, especialy the link to the german thread where somebody posted a newer version of srtm2osm which finally solved my problems. Trying to trick old srtm2osm by providing local ftp servers happened to be quite challenging task as finding suitable ftp server to serve the data on windows host ended up me having to build linux virtal pc just for this purpose.

Anyway, i have built six-layers
1 - Invisible routing layer. Custom style-file to tweak routing from OSM information (i.e. maxspeed) without altering appearance of the map.
2 - Non-transparent Base layer, land features… (farm, forest, water…)
3 - SRTM contours - topo layer, transparent. 10m step, 400/100 major/medium contours (Thanks for your help with this one Heinz)
4 - Roads and other areas layer (i.e. buildings), transparent, that go over topo-layer with modified Style/TYP file

  • Some modification from you TYP file include connector roads (0x0B) which i use for motorway_link, primary roads are now red (i.e. mapnik style), trunks green… etc… Style file maps OSM roads to these Garmin types
    5 - Bridges layer, transparent, with custom Style/TYP files, only draws ways with bridge=yes with black side lines
    6 - Arrows layer, transparent, with custom Style/TYP files which draws one way arrows over one-way roads (i.e. motorways).

Layers 5 and 6 are purely cosmetic but I personally find one way arrows useful and nice on the map.

Some screenshots from Garmin Mobile XT:

All is packaged in gmapsupp.img (arround 60MB) with ‘gmt’ tool at the end. I am willing to share all these modified style and TYP files but I dont host a website. So if you are interested, i can send you all files and build commands. This is derived work based on Heinz’s original files on his web page. TYP files were edited with this online tool:

Of course there is still work to determine resolutin at which some features appear improve like additional layers for i.e. tunnels (complicatied), fixing one-way arrows over bridges, etc… But i would like to hear what kind if tweaks you would find nice/usefull/etc…


Hello to you all,

I would be glad to help with hosting space. I have couple of mine websites where I can create subdomain for MK mapping purposes. Please let me know if there is a need.



Hello Ivan,

Your map looks really good! And yes, of course, I am curious to find out how you did it … and try it out “on the field” when I come to Macedonia the next time!

As for web space, if you wish, I can well include your gmapsupp.img and the corresponding style/type files on a separate page of my site. If yes, just send me a personal message via, then we can arrange the details.

Поздрав, Heinz

Hi All,

Thanks to Goran and Heinz, here is the map (~60MB, OSM data from 19-08-2009, 09h)

GGBS: gmapsupp.img,,, gmapsupp.img,,,

And few night mode screenshots from the latest ‘build’

I tried to include tunnels (under SRTM layer) fix arrows over bridges.

Routable/POI search layer (which is not visible) is done with name:en, int_name, name tag preference, since I don’t know a way to enter non ASCII characters for search on my device. However, the visible layers are done with “name:mk, name” name tag peference ans should show Cyrillic names in the map view.

Hope to hear your feedback (wether it works as it should on various devices, does it draw OK, etc…). Thanks!


Hello to you all!

This morning I have installed ivank newest map (OSM data from 19-08-2009) on Garmin Nuvi 200 and have given it a try from Kriva Palanka trough Kumanovo to Skopje.

First impressions are:

Topo layer was not showing at all, I don’t know if it was from the device itself or from the map, maybe I need to turn off some layer, but didn’t have time to try and test).

Routing was correct, at least for the destination I have chosen (Vlae).

There are some inconsistencies with the road, or some parts are missing (Almost nothing is routed in Kumanovo and I will be uploading some .gpx soon, old road from Kumanovo to Skopje trough Aracinovo was not showed on the map, again I will post .gpx and draw some of it).

For street names in Cyrillic letters I get only ??? instead. I know that my Garmin is showing Cyrillic letters correctly because originally it was preloaded with Russian (Moscow) map and there everything is showing correctly.

Overall, I think that the map is quite good regarding commercial one’s (primarily AdriaRoute as main competition for MK) and hopefully soon enough we’ll have the best map for MK)

I’ll give it more testing this days so if anything new appear, I’ll post here.

Best regards,



I had some feedback recently that my OSM Macedonian maps had problems with lowercase letters on certain devices using Garmin XT, displaying ??? instead of the lowercase letters that appear on the eTrex. After some experimenting this seems to be a very strange problem (which Ivan struggled with as well and had even some exchanges in the mkgmap-dev forum). In order to solve the problem I added an explicit lower- to uppercase conversion to my transliteration script, hoping that this would solve the problem. It didn’t, since even if all the input only contains uppercase, the mkgmap or garmin software seems to reconvert for some items all but the first character of each word back to lowercase.

Now I think that I found a way around these problem, strangely by using the mkgmap option “lowercase=yes” - which seems counter-intuitive given that we want to avoid all lowercase. But using the additional options “–latin1 --code-page=1250 --lowercase=yes” seems to do the trick - no more lowercase on the eTrex and no more ??? on Garmin XT. You can find the corresponding gmapsupp.img files as always here.

Поздрав, Heinz

Hi Heinz,

In the meantime I found a way of displaying lowercase characters on Garmin Mobile XT, by using only --latin1 (same as --code-page=1252) and --lowercase=yes. In short, it appears that you must specify some code page in the mkgmap command line to correctly display on all devices. In your case, --code-page=1250 overrides previous --latin1 so you get all uppercase (In cp1250, only uppercase is allowed on Garmin). If nothing is specified, mkgmap defauls to cp1250 but does not correct lowercase characters (which seems to be a bug).

Kind regards,

Hello All,

I uploaded updated combined Topo/Route map for Macedonia for Garmin device on A lot has changed since the last version, most importantly the quality of OSM data for Macedonia. This map has 2 layers, route&search layer (invisible, Latin characters) and visible layer with Cyrillic characters (where available in OSM). The latin information is there for search purposes as on some devices it is impossible to enter Cyrillic character to search (i.e. Скопје). Topo information (generated now by GroundTruth) is integrated in visible layer so it is unfortunately not possible to turn it off. The upside is that now it does not draw over everything so roads are still visible even at lower zoom and the ‘pink routing line’ goes on top of roads, contours, etc…

The new map from 18.10.2009: gmapsupp.img

Please let me know if you test it on various device and how it works (appearance, performance, etc…). Thanks.


Hi guys,

I like the arrows for one-way streets.

I like to arrange that I see such arrows in the OSM map I downloaded from here:

This comes with a MASTER.TYP which I like - except missing one-way direction indications. I looked into the editor but do not know how what to do so that roads tagged ‘oneway = yes’ get a different look (with an arrow) than other roads without that tag.

I downloaded the from an above post in this thread and tried all the .typ files in there, i.e. I used mapsetToolkit.exe to uninstall DE:All_in_one_Garmin_Map with master.typ than installed the map with other .typ file(s).

No success: I looked in MapSource (not in the GPS unit). Strange enough, at some zoom levels map shows ALL roads with arrows, but only sometimes.

Thus, can somebody please help me to change MASTER.TYP getting one-way street arrows at zoom level 500m (and more detailed)? Or accomplish this somehow without .TYP file editing?

Thanks in advance!!!

Здраво mtb,

There are several ways to draw one-way arrow over streets, but all will require you to build multi-layer mapset. Issue is that Garmin has highest draw priority for ‘road’ lines, i.e. motorway will be drawn over (on top of) everything else, so if you try to add one-way arrow line via i.e. overlays it will be drawn below the road, probably not what you want. One approach around it, as uses by, is to draw arrows parallel to the road line which can work even in single layer. There are samples (style/typ, look for ‘legend’ map) on the site how they do it.

Another way is to do multi-layer map (like i like to do it) where you have base routing layer, in which you can freely use the 0x01-0x07 routable lines and separate ‘cosmetic’ layer on top of it where you can draw things (like one way arrows). See some previous message in this thread where I have shared samples of style/typ combo how you can do this. My last effort does a lot of pre-processing of OSM data (with small custom Delphi app) to reduce the number of layers, but you will still need at least two.

Fist thing to do is decide how complex would you like your map to be. Simplest is to draw arrows parallel to the roads.