Prior to the rendering process with the Mapsforge writer some preprocessing is essential:

  • to work arround bugs with Mapsforge
  • to simplify osm-structure (unifying sac:scale,dav:scale;via_ferrata eg)
  • eliminating mass tagging (remove trees except under certain conditions)
  • remove some redundant tags (cycle nodes with additional tags covering the basic information)
  • aso…

The tool for this task: tag-transform

Its cappable to transform NODES, WAYS and RELATIONS (it cannot RESOLVE Relations in any way) in a most powerfull way.
The possibilitys of this tool are endless, however its not that easy to understand how it works and to ride this horse propper.

Here are my settings for Tag-Transform:




For maps from 10th of  October 2018:

added some transforms for cycleway lanes/tracks



For maps from 29th of  July 2018:

handle cycle lanes and tracks on oneway=yes
oneway=yes and oneway:bicycle=no will still result in cw_lane_both | cw_track_both
oneway=yes w/o oneway:bicycle=no will result in cw_lane_oneway | cw_track_oneway = NEW TAGS !!


For maps from 3rd of  January 2018:

Bugfix: generator:source=* again in maps


For maps from 26th of  December 2017:

value:permit was transformed from key:foot|bicycle to key:access so far
NEW: value:permit stays with key:foot|bicycle|access and have to be handled in theme seperate.


new tagmapping for key:foot|bicycle|access



For maps from 3rd of  December 2017:

allow numeric values for:

(+ some additional values for safety_rope)

<!– tags_alpine –>
<osm-tag key=‘safety_rope’ value=‘sr_yes’ equivalent-values=’yes’ zoom-appear=’15’ />
<osm-tag key=‘ladder’ value=‘ld_yes’ equivalent-values=’yes’ zoom-appear=’15’ />
<osm-tag key=‘rungs’ value=‘rn_yes’ equivalent-values=’yes’ zoom-appear=’15’ />




For maps from 19th of  November 2017:

added mines (Tag= „adit“) and military=bunker , both ways and nodes
with special focus at abandoned/disused ones
Please take a look at TagTransform page for rules

<osm-tag key=’military‘ value=’bunker‘ zoom-appear=’15‘ />
<osm-tag key=’military‘ value=’bunker_disused‘ zoom-appear=’15‘ />
<osm-tag key=’man_made‘ value=’adit‘ zoom-appear=’15‘ />
<osm-tag key=’man_made‘ value=’adit_disused‘ zoom-appear=’15‘ />

TagTRansform rules for identifiying the disused adits/mines/bunkers



For maps from 6th of October:

transform name:zh_pinyin=* TO name:zhp=*
‚cause Mapsforge language switcher does’nt work with „zh_pinyin“


For maps from 24th of September:


place=island, place=islet and place=archipelago: for these areas (Multipolys) the center is calculated an a Node with the name/label ist created and set at the center of the MP. This is a huge improvement for maps with lots of islands. Thanks to @JohnPercy for this idea.


Clear abandoned:landuse=* to landuse=* PLUS abandoned=yes
Reason: eg. quarrys and cemetrys will exist for many centurys even when disuses/abandoned.

Transform disused:building=* to building=yes cause these buildings still exist.

Removed raw_sac_scale
Removed class:bicycle:*=*
Removed noexit
Removed incline_dir
Reason: Only 15 Tags are allowed for one object in Mapsforge – if exeeded the object is skipped and the whole map tile where this object resists too!

### Changed rule:

no longer force

Force of „via_ferrata_flag=yes“ stays at it is.

So new rule is:
Note: via_ferrata_scale=0 does’nt force via_ferrata_flag=set



For maps from 1st of August:

There are important changes in both tagmapping and tagtransform concerning sac_scale (click)


For maps from 1st of  July 2017:

removed sac_scale from ways tagged as highway=track
sac_scale on tracks doesnt add much information for users and occuopies 1 slot in limited tagspace for objects.


For maps from 1st of  June 2017:

Cleanup for more efficient seach in POI places (Citys, towns,…)

move opengeodb:population und :post_codes to approbriate OSM-Tags
delete opengeodb:* tags
delete „is_in“ Tag (you never find a major city of a district/county with this tag cause all villages within the county will have the capital in the is_in tag)

transformed landuse=wood to natural=wood


For maps from 4th of  March 2017:

access=permit + access=licence + foot=permit
transformed to access=permit


For maps from 20th of  December 2016:

Changes for cycleway track/lanes
.. cause there are roads with a cycleway=track PLUS cycleway=lane

  • cycleway:right=track transformed to cycleway_track=cw_track_right
  • cycleway:left=track transformed to cycleway_track=cw_track_left
  • cycleway=track now transformed to cycleway_track=cw_track_both
  • cycleway:right=lane transformed to cycleway_lane=cw_lane_right
  • cycleway:left=lane transformed to cycleway_lane=cw_lane_left
  • cycleway=lane now transformed to cycleway_lane=cw_lane_both


For maps from 1st of  December 2016:


  • cycleway:right=track transformed to cycleway=cw_track_right
  • cycleway:left=track transformed to cycleway=cw_track_left

Changed Tag:

  • cycleway=track now transformed to cycleway=cw_track_both


For maps from 11th of  November 2016:


  • cycleway:right=lane transformed to cycleway=cw_lane_right
  • cycleway:left=lane transformed to cycleway=cw_lane_left

Changed Tag:

  • cycleway=lane now transformed to cycleway=cw_lane_both


For maps from 10th of Oktober 2016:

Abreviations for streetnames for improved rendering on device
(Names in mapsforge are only rendered if street name fit straight way segment so: the shorter the name the more likely its rendered on screen)
Thanks to John Percy for this great idea!

#Platz -> Pl.
#Strasse -> Str.
#Straße – > Str.
#.*gasse -> g.

#Boulevard -> Bvd
#Highway -> Hwy
#Square -> Sq
#Street -> St
#Drive -> Dr
#Avenue -> Av
#Road ->
#Close -> Cl
#Court -> Ct
#East -> E
#West -> W
#North -> N
#South -> S
#Lane -> Ln

#Avenida -> Av.
#Camino -> Cno.
#Carretera -> Ctra.
#Plaza -> Pl.
#Calle -> C/
#Carrer -> c/

#Allée -> All.
#Avenue -> Av.
#Boulevard -> Bd.
#Place -> Pl.
#Ruelle -> RLE

#Straat -> str.


For maps from 8th of July 2016:

seperate hot_springs from natural=spring: