Skip to content

Instantly share code, notes, and snippets.

@stevengorrell
Last active January 29, 2021 14:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stevengorrell/b5221b6a74070b323c6345b78445d9d9 to your computer and use it in GitHub Desktop.
Save stevengorrell/b5221b6a74070b323c6345b78445d9d9 to your computer and use it in GitHub Desktop.
mkgmap points style file.
# -------------------------------------------------------------------
# This is the default mkgmap style file for converting OSM ways
# into Garmin lines.
# Any line prefaced with # is a comment and will not be applied.
# Each line is a rule, of the generalised format:
# OSM_tag(s)_to_match [Garmin_type_code resolution]
# See http://wiki.openstreetmap.org/wiki/Mkgmap/help/style_rules
# and http://wiki.openstreetmap.org/wiki/Mkgmap/help/Custom_styles
# for more information.
addr:housenumber=* {set mkgmap:execute_finalize_rules=true}
abandoned=yes {deletealltags} # old, depreciated, ambiguous, method of handling abandoned
# do these as lines regardless of being closed unless explicity marked as area. continue in case also a highway
aeroway=runway & area!=yes {name '${ref}'} [0x27 resolution 20 continue]
(aeroway=taxiway | aeroway=taxilane) & area!=yes {name '${ref}'} [0x27 resolution 24 continue]
# Assign the street name for house number search
highway=* & name=* {set mkgmap:street='${name:en}' | '${name}'}
# Mark highways with the toll flag
highway=* & (toll=yes | toll=true) {set mkgmap:toll=yes}
# Hide proposed ways
highway=proposed | highway=proposal | highway=planned | highway~'.*proposed.*' {delete highway; delete junction}
# Hide removed ways
highway=razed | highway=dismantled | highway=disused | highway=demolished {delete highway; delete junction}
# Hide abandoned ways. Abandoned highways have some evidence of their former existence but are no longer used. These
# abandoned highways could be useful in topographical maps.
# https://wiki.openstreetmap.org/wiki/Key:abandoned:
(abandoned:highway=* & (highway!=* | highway=yes)) | highway=abandoned {delete highway; delete junction}
# Hide other non-existent ways
highway=unbuilt | highway=neverbuilt | highway=rejected | highway~'x-.*' {delete highway; delete junction}
# Remove highway tag from ways which are not suitable for routing
highway=traffic_signals | highway=junction | highway=island | highway=centre_line | highway=traffic_island | highway=stopline |
highway=bus_stop | highway=bus_guideway | highway=emergency_access_point | highway=ohm:military:Trench
{delete highway}
highway=via_ferrata {delete highway} # this shouldn't show as routable on default map: path only for specialists
highway=piste | highway=ski {delete highway}
highway=no | highway=none {delete highway}
# Disable dead-end-checks for unaccessible oneways
highway=* & oneway=yes & (access=private | access=no) {add mkgmap:dead-end-check=false}
# Validation-like checks (uncomment to enable)
#highway=motorway_link & oneway!=yes & oneway!=no {echo "motorway_link lacks oneway"}
highway=motorway | highway=motorway_link {add oneway=yes; add mkgmap:numbers=false}
# start of rules for process-exits and process-destination options
# which may add info to a part of these highway=*_link roads:
# motorway_link, trunk_link, primary_link, secondary_link, tertiary_link
# build destination hint
mkgmap:dest_hint=* {
set tmp:dest_hint='${destination:ref|subst: =>} ${mkgmap:dest_hint|subst:;=> |subst:/=> }' |
'${ref|subst: =>} ${mkgmap:dest_hint|subst:;=> |subst:/=> }' |
'${mkgmap:dest_hint|subst:;=> |subst:/=> }';
}
# build exit hint
mkgmap:exit_hint=true {
set tmp:exit_hint='Exit ${mkgmap:exit_hint_ref} ${mkgmap:exit_hint_name}' |
'Exit ${mkgmap:exit_hint_ref} ${mkgmap:exit_hint_exit_to}' |
'Exit ${mkgmap:exit_hint_exit_to}' |
'Exit ${mkgmap:exit_hint_name}' |
'Exit ${mkgmap:exit_hint_ref}';
}
# use destination hint and/or exit hint to build name
mkgmap:exit_hint=true | mkgmap:dest_hint=* {name '${tmp:exit_hint} ${tmp:dest_hint}' | '${tmp:dest_hint}' | '${tmp:exit_hint}'}
# end of rules for process-exits and process-destination options
# Flag paved roads
highway=* & (surface=asphalt | surface=paved | surface=sett |
surface=concrete | surface=concrete:lanes | surface=concrete:plates |
surface=paving_stones | surface=cobblestone |
surface=cobblestone:flattened | surface=metal | surface=wood)
{set mkgmap:unpaved=0}
highway=* & tracktype=grade1 & surface!=* {set mkgmap:unpaved=0}
# Flag unpaved roads.
highway=* & mkgmap:unpaved!=0 & (
surface=* |
mtb:scale=* |
tracktype~'grade[2-6]')
{add mkgmap:unpaved=1}
highway=* & (
mtb:scale~'[2-6].' |
sac_scale~'.*(mountain|alpine)_hiking' |
sport=via_ferrata)
{set mkgmap:unpaved=1}
(highway=bridleway | highway=path | highway=track) & mkgmap:unpaved!=0 {add mkgmap:unpaved=1}
(highway=unsurfaced | highway=via_ferrata) {set mkgmap:unpaved=1}
highway=* & mkgmap:unpaved!=1 & smoothness~'.*(bad|horrible|impassable)' {add mkgmap:road-speed=-2}
# Good ways without relation
highway=* & mkgmap:fast_road!=* & (int_ref=* | network=e-road | network=AH | network=TAH | network=US:I | network=US:US)
{add mkgmap:fast_road=yes}
# Not best for car routing
highway=* & (access=hov | hov=designated | oneway=reversible)
{set mkgmap:road-class=-2; set mkgmap:road-speed=-2; delete mkgmap:fast_road}
# convert some specific to generic with restrictions (platform is in a bus station)
highway=steps | highway=corridor | highway=stepping_stones | highway=elevator | highway=escalator | highway=platform
{set highway=footway; add bicycle=no}
# virtual seems to be a way across a pedestrian area
highway=crossing | highway=virtual
{set highway=path} # following logic may change
# Convert generic path to most specific
highway=path & (designation=permissive_bridleway | designation=public_bridleway)
{set highway=bridleway; add foot=yes}
highway=path & (designation=permissive_footpath | designation=public_footpath)
{set highway=footway; add foot=designated}
highway=path & snowplowing!=no & (bicycle=designated | bicycle=permissive | bicycle=official | cycleway=lane)
{set highway=cycleway; add foot=yes}
highway=path & foot=designated
{set highway=footway}
leisure=track & area!=yes {name '${name} (${sport})' | '${sport}'} [0x30 resolution 22]
man_made=pier | man_made=piste:halfpipe {add highway=footway; name '${ref} ${name}' | '${ref}' | '${name}'}
man_made=breakwater & is_closed()=false & mkgmap:mp_created!=true [0x17 resolution 22 default_name 'Breakwater']
# Roundabouts
junction=roundabout & (highway=trunk | highway=trunk_link) [0x0c road_class=4 road_speed=2 resolution 24 continue]
junction=roundabout & (highway=trunk | highway=trunk_link) [0x10801 resolution 18]
junction=roundabout & (highway=primary | highway=primary_link) & mkgmap:fast_road=yes [0x0c road_class=4 road_speed=2 resolution 24 continue]
junction=roundabout & (highway=primary | highway=primary_link) & mkgmap:fast_road=yes [0x10802 resolution 19]
junction=roundabout & (highway=primary | highway=primary_link) [0x0c road_class=3 road_speed=2 resolution 24 continue]
junction=roundabout & (highway=primary | highway=primary_link) [0x10802 resolution 19]
junction=roundabout & (highway=secondary | highway=secondary_link) & mkgmap:fast_road=yes [0x0c road_class=3 road_speed=2 resolution 24 continue]
junction=roundabout & (highway=secondary | highway=secondary_link) & mkgmap:fast_road=yes [0x10803 resolution 20]
junction=roundabout & (highway=secondary | highway=secondary_link) [0x0c road_class=2 road_speed=2 resolution 24 continue]
junction=roundabout & (highway=secondary | highway=secondary_link) [0x10803 resolution 20]
junction=roundabout & (highway=tertiary | highway=tertiary_link) [0x0c road_class=1 road_speed=1 resolution 24 continue]
junction=roundabout & (highway=tertiary | highway=tertiary_link) [0x10804 resolution 21]
junction=roundabout & (highway=unclassified | highway=minor) [0x0c road_class=1 road_speed=1 resolution 21]
junction=roundabout & highway=* [0x0c road_class=0 road_speed=1 resolution 22]
# Ways that may or may not be useable
# Treat ways under construction almost as highway=path, see also extra rule in inc/access
highway=construction {add mkgmap:dead-end-check=false} [0x16 road_class=0 road_speed=0 resolution 23]
# Lower the road speed of ways under some construction.
highway=* & construction=* & maxspeed!=* {add mkgmap:road-speed='-1'}
# Lower the road speed of disused ways.
highway=* & disused=yes & maxspeed!=* {add mkgmap:road-speed='-2'}
# Ways sorted roughly by descending order of class
highway=motorway & mkgmap:fast_road=yes [0x01 road_class=4 road_speed=7 resolution 14]
highway=motorway [0x01 road_class=4 road_speed=7 resolution 15]
highway=motorway_link & (mkgmap:exit_hint=true | mkgmap:dest_hint=*) [0x0b road_class=4 road_speed=2 resolution 20]
highway=motorway_link [0x09 road_class=4 road_speed=2 resolution 20]
highway=trunk & mkgmap:fast_road=yes [0x02 road_class=4 road_speed=5 resolution 15]
highway=trunk [0x02 road_class=4 road_speed=5 resolution 18]
highway=trunk_link & (mkgmap:exit_hint=true | mkgmap:dest_hint=*) [0x0b road_class=4 road_speed=2 resolution 20]
highway=trunk_link [0x09 road_class=4 road_speed=2 resolution 20]
highway=* & motorroad=yes [0x02 road_class=4 road_speed=4 resolution 18]
highway=primary & mkgmap:fast_road=yes [0x03 road_class=4 road_speed=4 resolution 17]
highway=primary [0x03 road_class=3 road_speed=4 resolution 19]
highway=primary_link & (mkgmap:exit_hint=true | mkgmap:dest_hint=*) & mkgmap:fast_road=yes [0x0b road_class=4 road_speed=1 resolution 21]
highway=primary_link & (mkgmap:exit_hint=true | mkgmap:dest_hint=*) [0x0b road_class=3 road_speed=1 resolution 21]
highway=primary_link & mkgmap:fast_road=yes [0x08 road_class=4 road_speed=1 resolution 21]
highway=primary_link [0x08 road_class=3 road_speed=1 resolution 21]
highway=secondary & mkgmap:fast_road=yes [0x04 road_class=3 road_speed=3 resolution 18]
highway=secondary [0x04 road_class=2 road_speed=3 resolution 20]
highway=secondary_link & mkgmap:fast_road=yes [0x08 road_class=3 road_speed=1 resolution 22]
highway=secondary_link [0x08 road_class=2 road_speed=1 resolution 22]
highway=tertiary [0x05 road_class=1 road_speed=3 resolution 20]
highway=tertiary_link [0x08 road_class=1 road_speed=1 resolution 22]
highway=minor [0x06 road_class=1 road_speed=3 resolution 21]
highway=unclassified [0x06 road_class=0 road_speed=3 resolution 21]
highway=yes {set highway=footway} # fix common bad tagging - little bits of path to join other routable ways
# Some countries allow, others disallow bicycling on pedestrian streets. See inc/access_country
# highway=pedestrian could be closed polygon to represent a 'square', add route regardless and continue for polygon processing
highway=pedestrian {set tmp:stopMopUp=yes} [0x16 road_class=0 road_speed=0 resolution 22 continue with_actions]
highway=living_street [0x06 road_class=0 road_speed=1 resolution 22]
highway=residential [0x06 road_class=0 road_speed=2 resolution 22]
highway=bridleway [0x07 road_class=0 road_speed=0 resolution 23]
highway=byway [0x16 road_class=0 road_speed=0 resolution 23]
highway=driveway {set highway=service; add service=driveway} # fix common bad tagging
highway=access {set highway=service} # fix common bad tagging
highway=access_ramp {set highway=footway} # proposed
highway=service & service=parking_aisle [0x07 road_class=0 road_speed=1 resolution 24]
highway=service & (service=alley | service=driveway) [0x07 road_class=0 road_speed=0 resolution 23]
highway=service [0x07 road_class=0 road_speed=2 resolution 22]
highway=cycleway [0x11 road_class=0 road_speed=1 resolution 23]
# highway=footway is often an area as well, continue for polygon processing
highway=footway {set tmp:stopMopUp=yes} [0x16 road_class=0 road_speed=0 resolution 23 continue with_actions]
highway=trail {set highway=path; add bicycle=no} # fix common bad tagging
highway=path [0x16 road_class=0 road_speed=0 resolution 23]
highway=track [0x0a road_class=0 road_speed=1 resolution 22]
highway=unsurfaced [0x0a road_class=0 road_speed=1 resolution 22]
highway=road {add mkgmap:dead-end-check=false} [0x06 road_class=0 road_speed=1 resolution 22]
# handle some rarer bits of road. Do just in case joining paths or bits of one-way roads
highway=turning_loop | highway=turning_circle | highway=layby | highway=escape | highway=emergency_bay
[0x07 road_class=0 road_speed=0 resolution 24]
# These are too specialized to have routing, so shouldn't drop into the mop-up, but, maybe needing TYP, can be shown on the map
highway=raceway | highway=gallop {add name='${highway}'} [0x30 resolution 23]
# Don't have routable for either of these:
# most 'rest_area' don't connect to the main road
# 'services' is normally a big area that covers the whole complex
highway=rest_area | highway=services {set tmp:stopMopUp=yes}
# Mop up any unrecognised highway types
#highway=* & tmp:stopMopUp!=yes {echotags 'mop-up highway'} # mostly actual road names
# It is considered best not to process unrecognised highway types
#highway=* & area!=yes & tmp:stopMopUp!=yes [0x07 road_class=0 road_speed=0 resolution 23]
natural=coastline [0x15 resolution 12]
power=line [0x29 resolution 21]
railway=platform [0x16 road_class=0 road_speed=0 resolution 23]
# Railway lines, note that many devices display type 0x14 only at resolution 24
(railway=rail | railway=tram | railway=disused | railway=subway | railway=narrow_gauge | railway=light_rail | railway=preserved) & !(tunnel=yes)
[0x14 resolution 22]
(man_made=cable | (man_made=* & man_made~'.*pipe.*')) & area!=yes & tunnel!=yes & location!=underground
{name '${name} (${operator})' | '${name}' | '${operator}'} [0x28 resolution 23]
# The following boundary styles are after the highway rules because ways
# are frequently tagged with both and we want the highway to take priority.
boundary=administrative {name '${mkgmap:boundary_name}'}
boundary=administrative & admin_level<3 [0x1e resolution 12]
boundary=administrative & admin_level<5 [0x1d resolution 19]
boundary=administrative & admin_level<7 [0x1c resolution 21]
boundary=administrative & admin_level<9 [0x1c resolution 22]
boundary=administrative [0x1c resolution 22]
boundary=national [0x1e resolution 17]
boundary=political [0x1c resolution 19]
barrier=wall | barrier=fence | barrier=hedge | barrier=ditch {add name='${barrier|subst:"_=> "}'} [0x17 resolution 24]
route=ferry & (toll=no | toll=false) {set mkgmap:toll=no}
route=ferry {set mkgmap:numbers=false; set mkgmap:ferry=1; add mkgmap:toll=yes}
route=ferry & (motorcar=no | motor_vehicle=no) [0x1b road_class=0 road_speed=0 resolution 23]
route=ferry [0x1a road_class=3 road_speed=0 resolution 19]
(waterway=river | waterway=canal) & intermittent=yes [0x26 resolution 20]
(waterway=stream | waterway=drain) & intermittent=yes [0x26 resolution 22]
waterway=canal [0x1f resolution 21]
waterway=river [0x1f resolution 18]
waterway=rapids|waterway=waterfall [0x1f resolution 22]
waterway=stream | waterway=drain [0x18 resolution 22]
# mop up any remaining water lines
waterway=* & waterway!=no & (area=no | (is_closed()=false & mkgmap:mp_created!=true))
{add name='${waterway|subst:"_=> "}'} [0x26 resolution 24]
include 'inc/contour_lines';
<finalize>
# The finalizer section is executed for each element when a rule with an element type matches
include 'inc/address';
# calculate the road speed based on maxspeed tag
include 'inc/roadspeed';
# calculate the access rules
include 'inc/access';
#limit artificial cycleways to resolution 24
mkgmap:synthesised=yes & mkgmap:bicycle=yes {set mkgmap:highest-resolution-only=true}
# don't add house numbers to unnamed or artifical bicycle ways
mkgmap:bicycle=yes & (mkgmap:foot=no & mkgmap:car=no & mkgmap:street!=* | mkgmap:synthesised=yes) {set mkgmap:numbers=false}
# Display highway shield for mayor roads if they have a ref and make them searchable by their name
(highway=motorway | highway=trunk) & ref=* {name '${ref|highway-symbol:hbox}'; addlabel '${name}'}
highway=primary & ref=* {name '${ref|highway-symbol:box}' ; addlabel '${name}'}
(highway=secondary | highway=tertiary) & ref=* {name '${ref|highway-symbol:oval}'; addlabel '${name}'}
name=* {name '${name:en}' | '${name}'}
highway=* & ref=* & highway!=motorway & highway!=trunk & highway!=primary & highway!=secondary & highway!=tertiary
{addlabel '${ref}'}
highway=* & int_ref=* {addlabel '${int_ref}'}
highway=* & nat_ref=* {addlabel '${nat_ref}'}
highway=* & reg_ref=* {addlabel '${reg_ref}'}
# -------------------------------------------------------------------
# This is the default mkgmap style file for converting OSM nodes
# into Garmin POIs.
# Any line prefaced with # is a comment and will not be applied.
# Each line is a rule, of the generalised format:
# OSM_tag(s)_to_match [Garmin_type_code resolution]
# See http://wiki.openstreetmap.org/wiki/Mkgmap/help/style_rules
# and http://wiki.openstreetmap.org/wiki/Mkgmap/help/Custom_styles
# for more information.
addr:housenumber=* {set mkgmap:execute_finalize_rules=true}
# impose routing/speed restrictions due to access/barrier. See option --link-pois-to-ways
vehicle=* {
add bicycle='${vehicle}';
add motor_vehicle='${vehicle}';
}
motor_vehicle=* {
add motorcar='${motor_vehicle}';
add goods='${motor_vehicle}';
add hgv='${motor_vehicle}';
add psv='${motor_vehicle}';
add emergency='${motor_vehicle}';
}
psv=* {
add taxi='${psv}';
add bus='${psv}';
}
barrier=* & bicycle=* {set mkgmap:bicycle = '${bicycle|subst:private=>no}'}
barrier=* & foot=* {set mkgmap:foot = '${foot|subst:private=>no}'}
barrier=* & hgv=* {set mkgmap:truck = '${hgv|subst:private=>no}'}
barrier=* & motorcar=* {set mkgmap:car = '${motorcar|subst:private=>no}'}
barrier=* & bus=* {set mkgmap:bus = '${bus|subst:private=>no}'}
barrier=* & taxi=* {set mkgmap:taxi = '${taxi|subst:private=>no}'}
barrier=* & emergency=* {set mkgmap:emergency='${emergency|subst:private=>no}'}
barrier=* & goods=* {set mkgmap:delivery = '${goods|subst:private=>no}'}
barrier=bollard | barrier=block {
add mkgmap:car=no;
add mkgmap:delivery=no;
add mkgmap:truck=no;
add mkgmap:bus=no;
add mkgmap:taxi=no;
add mkgmap:emergency=no;
}
barrier=cycle_barrier | barrier=kissing_gate | barrier=stile {
add mkgmap:bicycle=no;
add mkgmap:car=no;
add mkgmap:delivery=no;
add mkgmap:truck=no;
add mkgmap:bus=no;
add mkgmap:taxi=no;
add mkgmap:emergency=no;
set mkgmap:road-speed=0;
}
barrier=bus_trap {
add mkgmap:car=no;
add mkgmap:delivery=no;
add mkgmap:truck=no;
add mkgmap:taxi=no;
}
barrier=gate | barrier=lift_gate | barrier=swing_gate {
set mkgmap:road-speed=0;
}
barrier=* {add mkgmap:road-speed=1}
barrier=* & access=* {addaccess '${access|subst:private=>no}'}
internet_access=yes {name 'Internet ${name}' | 'Internet'} [0x2f12 resolution 24 continue]
internet_access=* & internet_access!=no & internet_access!=yes
{name 'Internet(${internet_access}) ${name}' | 'Internet(${internet_access})'} [0x2f12 resolution 24 continue]
(public_transport=platform | highway=bus_stop | railway=tram_stop | railway=halt | railway=station)
& (ref=* | route_ref=*)
{set ref='${ref|def:}(${route_ref})'}
(public_transport=platform | highway=bus_stop | railway=tram_stop | railway=halt | railway=station)
& lit=yes & (shelter=yes | covered=yes)
{set ref='${ref|def:}*'}
(public_transport=platform | highway=bus_stop | railway=tram_stop | railway=halt | railway=station)
& lit!=yes & (shelter=yes | covered=yes)
{set ref='${ref|def:}+'}
(public_transport=platform | highway=bus_stop | railway=tram_stop | railway=halt | railway=station)
& (shelter=no | covered=no)
{set ref='${ref|def:}-'}
include 'inc/name';
place=city & population > 999999 & name=* [0x0100 resolution 12]
place=city & population > 799999 & name=* [0x0200 resolution 14]
place=city & population > 399999 & name=* [0x0300 resolution 15]
place=city & population > 299999 & name=* [0x0400 resolution 16]
place=city & population > 199999 & name=* [0x0500 resolution 16]
place=city & population > 99999 & name=* [0x0600 resolution 17]
place=city & population > 49999 & name=* [0x0700 resolution 17]
place=city & population > 9999 & name=* [0x0800 resolution 18]
place=city & population > 0 & name=* [0x0800 resolution 18]
place=city & name=* [0x0700 resolution 18]
place=town & population > 69999 & name=* [0x0600 resolution 17]
place=town & population > 19999 & name=* [0x0700 resolution 18]
place=town & population > 9999 & name=* [0x0800 resolution 19]
place=town & population > 4999 & name=* [0x0900 resolution 19]
place=town & population > 999 & name=* [0x0a00 resolution 19]
place=town & population > 0 & name=* [0x0b00 resolution 20]
place=town & name=* [0x0800 resolution 19]
place=village & name=* [0x0900 resolution 22]
place=suburb & name=* [0x0a00 resolution 22]
place=hamlet & name=* [0x0b00 resolution 24]
place=island & name=* [0x650c resolution 20]
place=islet & name=* [0x650c resolution 22]
#aeroway=airport [0x5900 resolution 22]
aeroway=airport [0x2f04 resolution 22]
aeroway=aerodrome [0x2f04 resolution 22]
aeroway=helipad [0x5904 resolution 23]
aeroway=terminal [0x2f04 resolution 24]
amenity=atm [0x2f06 resolution 24 continue]
amenity=arts_centre [0x2c04 resolution 24]
amenity=bank [0x2f06 resolution 24]
amenity=bar [0x2d02 resolution 24 continue]
amenity=bench [0x6605 resolution 24 continue]
amenity=biergarten [0x2d02 resolution 24]
amenity=border_control | barrier=border_control [0x3006 resolution 20]
amenity=bus_station [0x2f08 resolution 23]
amenity=cafe {delete cuisine} [0x2a0e resolution 24 continue with_actions]
#amenity=car_club [0x2f0d resolution 24]
#amenity=car_rental [0x2f02 resolution 24]
#amenity=car_sharing [0x2f02 resolution 24]
#amenity=car_wash [0x2f0e resolution 24]
#amenity=casino [0x2d04 resolution 24]
#amenity=charging_station [0x2f01 resolution 24 default_name 'Car charging']
#amenity=cinema [0x2d03 resolution 24]
#amenity=college [0x2c05 resolution 24]
#amenity=concert_hall [0x2c09 resolution 24]
#amenity=conference_centre [0x2c09 resolution 24]
#amenity=convention_center [0x2c09 resolution 24]
amenity=community_centre [0x3005 resolution 24]
amenity=community_center [0x3005 resolution 24]
#amenity=courthouse [0x3004 resolution 24]
amenity=drinking_water [0x5000 resolution 24 default_name 'Water']
amenity=embassy & country=* {set name='${country} ${name|def:Embassy}'} [0x3003 resolution 24]
amenity=embassy & country!=* [0x3003 resolution 24 default_name 'Embassy']
amenity=emergency_phone [0x2f12 resolution 24 default_name 'Emergency Phone']
amenity=ferry_terminal [0x2f08 resolution 22]
# handle amenity=fast_food rules later in file
amenity=fire_station [0x3008 resolution 24]
amenity=food_court [0x2a13 resolution 24]
#amenity=fuel & fuel:HGV_diesel=yes [0x2f16 resolution 23]
amenity=fuel & shop=convenience [0x2e06 resolution 24]
#amenity=fuel [0x2f01 resolution 24]
amenity=grave_yard [0x6403 resolution 24]
#amenity=kindergarten [0x2c05 resolution 24]
amenity=library [0x2c03 resolution 24]
amenity=nightclub [0x2d02 resolution 24]
#amenity=nursing_home [0x2f14 resolution 24]
(amenity=parking | amenity=parking_entrance) & access!=private & access!=no {add name='${access} parking'| 'Parking'} [0x2f0b resolution 24]
amenity=pharmacy [0x2e05 resolution 24]
amenity=place_of_worship [0x2c0b resolution 24]
amenity=police [0x3001 resolution 24]
#amenity=post_box [0x2f15 resolution 24 default_name 'Post box']
amenity=post_office [0x2f05 resolution 24]
#amenity=prison [0x3007 resolution 24 default_name 'Prison']
amenity=pub [0x2d02 resolution 24]
amenity=public_building [0x3007 resolution 24]
#amenity=recycling [0x2f15 resolution 24 default_name 'Recycling']
# handle amenity=restaurant rules later in file
#amenity=school [0x2c05 resolution 24]
# amenity=shelter is ambiguous; when possible, consider using other tags:
# tourism=lean_to or tourism=picnic_site
# shelter=yes on highway=bus_stop or highway=tram_stop or railway=halt
#amenity=shelter & shelter_type=basic_hut [0x2b06 resolution 24 default_name 'Shelter']
# amenity=supermarket is superceded by shop=supermarket
amenity=supermarket [0x2e02 resolution 24]
amenity=taxi [0x2f17 resolution 24]
amenity=telephone [0x2f12 resolution 24 default_name 'Telephone']
#amenity=theatre [0x2d01 resolution 24]
amenity=toilets [0x2f0c resolution 24 default_name 'Toilets']
amenity=townhall [0x3003 resolution 24]
#amenity=university [0x2c05 resolution 24]
# amenity=zoo is superceded by tourism=zoo
amenity=zoo [0x2c07 resolution 24]
landuse=military [0x640b resolution 24]
landuse=village_green & name=* [0x2c06 resolution 24]
healthcare=hospital | amenity=hospital | amenity=clinic {name '${name:en}' | '${name}'} [0x3002 resolution 22]
healthcare=* | amenity=dentist | amenity=doctors {name '${name:en}' | '${name}' }[0x3002 resolution 24]
highway=motorway_junction & exit:road_ref=* {add exit:to='${exit_to}' | '${destination}'} [0x2000 resolution 24]
highway=services {add exit:facility="0x02,I,0x47,Features"} [0x230f resolution 20 default_name 'Services']
historic=museum [0x2c02 resolution 24]
historic=archaeological_site | historic=ruins [0x2c02 resolution 24]
historic=memorial [0x2c02 resolution 24]
leisure=common & name=* [0x2c06 resolution 24]
leisure=garden & name=* [0x2c06 resolution 24]
leisure=golf_course [0x2d05 resolution 24]
leisure=ice_rink [0x2d08 resolution 24]
leisure=marina [0x2f09 resolution 24]
leisure=nature_reserve [0x6612 resolution 24]
leisure=park {name '${name:en}' | '${name} Park'} [0x2c06 resolution 24]
leisure=pitch & (name=* | sport=*) {name '${name} (${sport})' | '${sport}'} [0x2c08 resolution 24]
leisure=playground [0x2c06 resolution 24 default_name 'Playground']
leisure=recreation_ground [0x2c08 resolution 24 default_name 'Rec.']
leisure=sports_center | leisure=sports_centre {name '${name} (${sport})' | '${sport}'} [0x2d0a resolution 24]
leisure=stadium {name '${name} (${sport})' | '${sport}'} [0x2c08 resolution 24]
(leisure=swimming_pool | amenity=swimming_pool) & access!=private & access!=no [0x2d09 resolution 24]
leisure=track {name '${name} (${sport})' | '${sport}'} [0x2c08 resolution 24]
leisure=water_park [0x2d09 resolution 24]
man_made=tower {name '${name:en}' | '${name} Tower' } [0x6411 resolution 24]
#man_made=mast | landmark=chimney [0x6411 resolution 24]
# Edge 705 displays 0x650a,0x6511,0x6512,0x6513,0x6603,0x6614 as hollow white circles, no menu
natural=cave_entrance [0x6601 resolution 24]
natural=cape [0x6606 resolution 24]
natural=cliff & name=* [0x6607 resolution 24]
natural=peak {name '${name|def:}${ele|height:m=>ft|def:}'} [0x6616 resolution 24]
natural=rock [0x6614 resolution 24]
natural=volcano [0x2c0c resolution 24]
natural=bay & name=* [0x6503 resolution 20]
railway=station [0x2f08 resolution 22]
railway=halt [0x2f08 resolution 23]
# if option --add-pois-to-lines in effect, add just 1 POI
(railway=platform | (public_transport=platform & railway=*)) & (mkgmap:line2poi!=true | mkgmap:line2poitype=mid) [0x2f08 resolution 23]
public_transport=platform & (mkgmap:line2poi!=true | mkgmap:line2poitype=mid) [0x2f17 resolution 24]
highway=bus_stop | railway=tram_stop [0x2f17 resolution 24]
shop=* & name!=* & shop!=yes & shop!=no & shop!=none & shop!=vacant {set name='${shop|subst:"_=> "}'}
# Uncomment the following lines to enable these extra POI that some devices support
#shop=convenience [0x2e0e resolution 24]
#shop=florist [0x2e0f resolution 24]
#shop=gift | shop=art | shop=antiques [0x2e10 resolution 24]
#shop=music [0x2e11 resolution 24]
#shop=sports [0x2e12 resolution 24]
#shop=wine | shop=alcohol [0x2e13 resolution 24]
#shop=books [0x2e14 resolution 24]
# to here
shop=bakers [0x2e02 resolution 24]
shop=bakery [0x2e02 resolution 24]
#shop=beauty [0x2f10 resolution 24]
shop=bicycle [0x2f13 resolution 24]
#shop=boat [0x2f09 resolution 24]
#shop=butcher [0x2e0c resolution 24]
#shop=car [0x2f07 resolution 24]
#shop=car_dealer [0x2f07 resolution 24]
#shop=car_parts [0x2f07 resolution 24]
#shop=car_rental [0x2f02 resolution 24]
#shop=car_repair [0x2f03 resolution 24]
#shop=car_wrecker [0x2f0a resolution 24]
shop=chemist [0x2e05 resolution 24]
shop=clothes [0x2e07 resolution 24]
shop=computer [0x2e0b resolution 24]
shop=convenience [0x2e02 resolution 24]
shop=department_store [0x2e01 resolution 24]
#shop=doityourself [0x2e09 resolution 24]
#shop=fashion [0x2e07 resolution 24]
#shop=furniture [0x2e09 resolution 24]
#shop=garden_centre [0x2e08 resolution 24]
#shop=garden_center [0x2e08 resolution 24]
shop=general [0x2e03 resolution 24]
shop=hardware [0x2e09 resolution 24]
#shop=hairdresser [0x2f10 resolution 24]
shop=mall [0x2e04 resolution 24]
shop=organic [0x2e0a resolution 24]
shop=outdoor [0x2e08 resolution 24]
shop=shoes [0x2e07 resolution 24]
shop=supermarket [0x2e02 resolution 24]
#shop=tires [0x2f07 resolution 24]
#shop=tyres [0x2f07 resolution 24]
shop=* & name=* {name '${name:en}' | '${name}'} [0x2e0c resolution 24]
#sport=9pin [0x2d07 resolution 24]
#sport=10pin | leisure=bowling_alley [0x2d07 resolution 24]
#sport=airport [0x2d0b resolution 24]
#sport=multi [0x2d0a resolution 24]
#sport=skating [0x2d08 resolution 24]
#sport=skiing [0x2d06 resolution 24]
#sport=swimming [0x2d09 resolution 24]
tourism=alpine_hut [0x2b02 resolution 24]
tourism=attraction & historic=* [0x2c02 resolution 24]
tourism=attraction [0x2c04 resolution 24]
tourism=artwork [0x2c04 resolution 24]
tourism=aquarium [0x2c07 resolution 24]
tourism=bed_and_breakfast [0x2b02 resolution 24]
# NB: different devices use different codes for camp/caravan_site, have both!
tourism=camp_site [0x2b03 resolution 24] [0x2b05 resolution 24]
tourism=caravan_site [0x2b03 resolution 24] [0x2b05 resolution 24]
tourism=chalet [0x2b02 resolution 24]
tourism=guest_house [0x2b02 resolution 24]
tourism=hostel [0x2b02 resolution 24]
# Have both hotel &| restaurant POIs
tourism=hotel | tourism=motel {set tmp:stopMopUp=yes} [0x2b01 resolution 24 continue with_actions]
tourism=information [0x4c00 resolution 24]
# tourism=lean_to replaces some uses of amenity=shelter
tourism=lean_to [0x2b05 resolution 24 default_name 'lean-to']
tourism=wilderness_hut [0x2b07 resolution 24 default_name 'wilderness hut']
tourism=museum [0x2c02 resolution 24]
tourism=picnic_site [0x4a00 resolution 24]
tourism=resort [0x2b04 resolution 24]
tourism=theme_park [0x2c01 resolution 24]
tourism=viewpoint {name '${name} - ${description}' | '${name}'} [0x2c04 resolution 24]
tourism=wine_cellar [0x2c0a resolution 24]
tourism=zoo [0x2c07 resolution 24]
tourism=* & name!=* & tourism!=yes & tourism!=no {set name='${tourism|subst:"_=> "}'}
tourism=* & tourism!=no & tmp:stopMopUp!=yes [0x2c0d resolution 24]
# amenity=restaurant/fast_food/cafe/pub and shop=* can use cuisine, so have cuisine section later than where the others
# should take precedence
# Have the following 2 lines here rather than after cuisine=... so that, for amenity=fast_food, cuisine is ignored
amenity=fast_food & cuisine=* {add name='${cuisine|subst:"_=> "}'} [0x2a07 resolution 24]
amenity=fast_food [0x2a07 resolution 24]
# "Food & Drink" Search has categories as follows, corresponding to 0x2a00 - 0x2a13:
# All, American, Asian, Barbeque, Chinese, Deli/Bakery, International, Fast Food, Italian, Mexican, Pizza,
# Seafood, Steak/Grill, Bagel/Donut, Cafe/Diner, French, German, British Isles, Speciality Food Products, Other
amenity=restaurant & cuisine!=*
[0x2a00 resolution 24]
cuisine=american | cuisine=burger
[0x2a01 resolution 24]
cuisine=asian | cuisine=japanese | cuisine=indian | cuisine=curry | cuisine=thai | cuisine=sushi | cuisine=korean
[0x2a02 resolution 24]
cuisine=barbecue | cuisine=bbq | cuisine=kebab | cuisine=chicken
[0x2a03 resolution 24]
cuisine=chinese | cuisine=vietnamese
[0x2a04 resolution 24]
cuisine=deli | cuisine=sandwich
[0x2a05 resolution 24]
cuisine=international
[0x2a06 resolution 24]
cuisine=fast_food
[0x2a07 resolution 24]
cuisine=italian | cuisine=pasta
[0x2a08 resolution 24]
cuisine=mexican | cuisine=spanish | cuisine=tapas
[0x2a09 resolution 24]
cuisine~'.*pizza.*'
[0x2a0a resolution 24]
cuisine=seafood | cuisine=sea_food | cuisine=fish
[0x2a0b resolution 24]
cuisine=steak | cuisine=grill | cuisine=steak_house
[0x2a0c resolution 24]
cuisine=bagel | cuisine=donut
[0x2a0d resolution 24]
cuisine=cafe | cuisine=diner | cuisine=coffee_shop
[0x2a0e resolution 24]
cuisine=french
[0x2a0f resolution 24]
cuisine=german | cuisine=bavarian
[0x2a10 resolution 24]
cuisine=british | cuisine=fish_and_chips
[0x2a11 resolution 24]
cuisine=speciality | cuisine=local | cuisine=regional
[0x2a12 resolution 24]
amenity=restaurant {add name='${cuisine|subst:"_=> "}'}
[0x2a13 resolution 24]
#common ones not handled:
# ice_cream,greek,turkish,noodle,portugese,pasties,lebanese,brazilian,mediterranean,oriental,caribbean,vegetarian
# Have the following 2 lines here rather than before cuisine=... so that, for amenity=fast_food, cuisine is respected
#amenity=fast_food & cuisine=* {add name='${cuisine|subst:"_=> "}'} [0x2a07 resolution 24]
#amenity=fast_food [0x2a07 resolution 24]
barrier=bollard | barrier=bus_trap | barrier=gate | barrier=block | barrier=cycle_barrier |
barrier=stile | barrier=kissing_gate | barrier=lift_gate | barrier=swing_gate
{add name='${barrier|subst:"_=> "}'} [0x3200 resolution 24]
landuse=basin [0x6603 resolution 24]
landuse=reservoir | water=reservoir [0x650f resolution 22]
natural=beach [0x6604 resolution 24]
natural=glacier [0x650a resolution 24]
natural=spring [0x6511 resolution 24]
natural=stream [0x6512 resolution 24]
natural=water & (water=canal | water=lock) & name=* [0x6505 resolution 24]
(water=lake | water=pond) & name=* [0x650d resolution 24]
natural=water & name=* [0x6603 resolution 24]
natural=waterfall | waterway=waterfall [0x6508 resolution 24]
natural=wetland & name=* [0x6513 resolution 24]
landuse=cemetery | landuse=cemetary | amenity=grave_yard [0x6403 resolution 24]
(landuse=wood | landuse=forest | natural=wood) & name=* {name '${name:en}' | '${name}' }[0x6618 resolution 24]
<finalize>
# The finalizer section is executed for each element when a rule with an element type matches
name=* {name '${name:en}' | '${name}'}
include 'inc/address';
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment