Skip to content

Instantly share code, notes, and snippets.

@zedxxx
Last active September 25, 2020 16:58
Show Gist options
  • Save zedxxx/11221e187fc971720530b63535b7b47a to your computer and use it in GitHub Desktop.
Save zedxxx/11221e187fc971720530b63535b7b47a to your computer and use it in GitHub Desktop.
osmscout: Import routing data only
@echo off
SETLOCAL ENABLEEXTENSIONS
rem attion variable scope is lost when nesting if's
rem helpfull for string http://www.dostips.com/DtTipsStringManipulation.php
set arg1=%1
set dir=%1
set found=0
set search=%1
set scriptdir=%~dp0
if "%arg1%" == "" (
echo no sourcefile in commandline
set arg1=local
)
echo Command line parameter "%arg1%"
IF EXIST "%arg1%-latest.osm.pbf" (
set arg1=%arg1%-latest.osm.pbf
set found=1
goto checkdone
)
IF EXIST "%arg1%.osm.pbf" (
set arg1=%arg1%.osm.pbf
set found=1
goto checkdone
)
IF EXIST "%arg1%.pbf" (
set arg1=%arg1%.pbf
set found=1
goto checkdone
)
IF EXIST "%arg1%.osm" (
set arg1=%arg1%.osm
set found=1
goto checkdone
)
echo try substring from "%arg1%"
IF EXIST "%arg1%" (
echo file komplett in commandline
goto test1
)
:checkdone
if "%found%" == "0" (
echo import file not found
GOTO ExitNotFound
) else (
echo starting import with file %arg1% into %dir%
)
IF NOT EXIST "%dir%" (
mkdir %dir%
)
call %scriptdir%\bin\Import --typefile %scriptdir%\stylesheets\route.ost -e 17 --destinationDirectory %dir% %arg1%
call %scriptdir%\bin\Import --typefile %scriptdir%\stylesheets\route.ost -s 23 --delete-temporary-files true --delete-debugging-files true --delete-analysis-files true --delete-report-files true --destinationDirectory %dir% %arg1%
GOTO NoErrorExit
:test1
set search=%search:~-15%
echo Last 15 chars "%search%"
if "%search%" == "-latest.osm.pbf" (
set found=1
set dir=%dir:-latest.osm.pbf=%
goto checkdone
)
set search=%search:~-8%
echo Last 8 chars "%search%"
if "%search%" == ".osm.pbf" (
set found=1
set dir=%dir:.osm.pbf=%
goto checkdone
)
set search=%search:~-4%
echo Last 4 chars "%search%"
if "%search%" == ".pbf" (
set found=1
set dir=%dir:.pbf=%
goto checkdone
)
if "%search%" == ".osm" (
set found=1
set dir=%dir:.osm=%
goto checkdone
)
goto checkdone
:ExitNotFound
echo import source not found
:NoErrorExit
pause
OST
/*
Types:
A type can be support for any of the following types:
* NODE
* WAY: Ways automatically get assigned the following features: Layer
* AREA
* RELATION
Meaning of the different OPTIONS:
PATH[[FOOT] [BICYLCE] [CAR]]:
This way or area is a traversable path and possibly routable for the given vehicles.
See: http://wiki.openstreetmap.org/wiki/OSM_tags_for_routing/Access-Restrictions
If something is a path, the following features are automatically assigned:
* Width
* Grade
* Bridge
* Tunnel
* Roundabout
If something is routable, the following features are automatically assigned:
* Access
* MaxSpeed
OPTIMIZE_LOW_ZOOM:
Optimize this area or way for idplaying in low zoom by
reducing visible complexity
PIN_WAY:
This is a way, even if the path is closed
MULTIPOLYGON:
Type should be handled as multipolygon even if type is not set to multipolygon.
ADMIN_REGION:
The given area or node describes an administrate region
that should be part of the region tree for the city/street
index
POI:
The given area, way or node is a POI and should be indexed
by its name in relation to the enclosing region. If something is a POI and has the
feature "Name"
It automatically get the following features assigned:
* Location
* Address
* Website
* Phone
ADDRESS:
Objects should be indexed as address
It automatically get the following features assigned:
* Location
* Address
LOCATION:
The given way or area should be indexed as location.
MERGE_AREAS:
Areas of this type that "touch" each other and the same attribute values
will get merged.
IGNORESEALAND:
Ignore this type for calculation of land masses (because objects of this type can
occur on sea, too, and thus have no distinguishing character).
IGNORE:
Ignore objects of this type
*/
/*
List of max speeds aliases. Normally value for the tag "maxspeed" should always
have a numeric value and the source of the speed limit should be placed into
the value of the tag "source:maxspeed" containing an alias name.
In some country this is not (only) the case, the alias is also sometimes
placed into "maxspeed" itself. This table helps to resolve these aliases
to numeric values again.
https://wiki.openstreetmap.org/wiki/OSM_tags_for_routing/Maxspeed
https://wiki.openstreetmap.org/wiki/Speed_limits
*/
MAX SPEEDS
SPEED "CZ:urban" = 50 km/h
SPEED "CZ:rural" = 90 km/h
SPEED "CZ:motorway" = 130 km/h
SPEED "DE:living_street" = 10 km/h
SPEED "DE:urban" = 50 km/h
SPEED "DE:rural" = 100 km/h
SPEED "FR:walk" = 6 km/h
SPEED "FR:urban" = 50 km/h
SPEED "FR:rural" = 90 km/h
SPEED "FR:motorway" = 130 km/h
SPEED "SK:urban" = 50 km/h
SPEED "SK:rural" = 90 km/h
SPEED "SK:motorway" = 130 km/h
SPEED "IT:urban" = 50 km/h
SPEED "IT:rural" = 90 km/h
SPEED "IT:trunk" = 110 km/h
SPEED "IT:motorway" = 130 km/h
SPEED "RU:living_street" = 20 km/h
SPEED "RU:urban" = 60 km/h
SPEED "RU:rural" = 90 km/h
SPEED "RU:motorway" = 110 km/h
/*
Allows you to map surface descriptions to a grade value ([1-5]).
Grade 1 ist very well, grade 5 is very bad.
*/
GRADES
SURFACE GRADE 1 {
"paved"
"asphalt"
"cobblestone"
"cobblestone:flattened"
"concrete"
"concrete:lanes"
"concrete:plates"
"paving_stones"
"paving_stones:20"
"paving_stones:30"
"sett"
"tarred"
"tartan"
}
SURFACE GRADE 2 {
"ash"
"clay"
"compacted"
"compacted_gravel"
"fine_gravel"
"gravel"
"gravel;grass"
"grass_paver"
"metal"
"pebblestone"
"stone"
"wood"
}
SURFACE GRADE 3 {
"unpaved"
"dirt"
"dirt/sand"
"earth"
"grass"
"grass;earth"
"ground"
"mud"
"sand"
"soil"
}
SURFACE GRADE 4 {
"artificial_turf"
"bark_mulch"
}
FEATURES
FEATURE Address
DESC
en: "Address"
de: "Adresse"
FEATURE AdminLevel
DESC
en: "administrative level"
de: "Administrative Hierachie"
FEATURE Destination
DESC
en: "destination"
de: "Ziel"
FEATURE Name
DESC
en: "object name"
de: "Objektname"
FEATURE NameAlt
DESC
en: "object name"
de: "Objektname"
FEATURE Width
DESC
en: "width"
de: "Breite"
TYPES
//
// contour lines
//
TYPE elevation_contour_major IGNORE
= WAY ("contour"=="elevation" AND "contour_ext"=="elevation_major")
{Ele}
IGNORESEALAND PIN_WAY
TYPE elevation_contour_medium IGNORE
= WAY ("contour"=="elevation" AND "contour_ext"=="elevation_medium")
{Ele}
IGNORESEALAND PIN_WAY
TYPE elevation_contour_minor IGNORE
= WAY ("contour"=="elevation" AND "contour_ext"=="elevation_minor")
{Ele}
IGNORESEALAND PIN_WAY
//
// Motorways and motorways-like (only for cars)
//
TYPE highway_motorway
= WAY ("highway"=="motorway")
{Name, NameAlt, Ref, Destination}
PATH[CAR] LOCATION OPTIMIZE_LOW_ZOOM PIN_WAY LANES[2 2]
DESC
en: "motorway"
de: "Autobahn"
TYPE highway_motorway_trunk
= WAY ("highway"=="trunk" AND EXISTS "motorroad" AND !("motorroad" IN ["no","false","0"]))
{Name, NameAlt, Ref, Destination}
PATH[CAR] LOCATION OPTIMIZE_LOW_ZOOM PIN_WAY LANES[2 2]
DESC
en: "trunk"
de: "Schnellstraße"
TYPE highway_motorway_primary
= WAY ("highway"=="primary" AND EXISTS "motorroad" AND !("motorroad" IN ["no","false","0"]))
{Name, NameAlt, Ref, Destination}
PATH[CAR] LOCATION OPTIMIZE_LOW_ZOOM PIN_WAY LANES[2 1]
TYPE highway_motorway_link
= WAY ("highway"=="motorway_link")
{Name, NameAlt, Ref, Destination}
PATH[CAR] LOCATION OPTIMIZE_LOW_ZOOM PIN_WAY
// Other roads mainly for cars
TYPE highway_trunk
= WAY ("highway"=="trunk")
{Name, NameAlt, Ref, Destination}
PATH[FOOT BICYCLE CAR] LOCATION OPTIMIZE_LOW_ZOOM PIN_WAY
DESC
en: "trunk"
de: "Schnellstraße"
TYPE highway_trunk_link
= WAY ("highway"=="trunk_link")
{Name, NameAlt, Ref, Destination}
PATH[FOOT BICYCLE CAR] LOCATION OPTIMIZE_LOW_ZOOM PIN_WAY
TYPE highway_primary
= WAY ("highway"=="primary")
{Name, NameAlt, Ref, Sideway}
PATH[FOOT BICYCLE CAR] LOCATION OPTIMIZE_LOW_ZOOM PIN_WAY LANES[2 1]
TYPE highway_primary_link
= WAY ("highway"=="primary_link")
{Name, NameAlt, Ref, Sideway}
PATH[FOOT BICYCLE CAR] LOCATION PIN_WAY
TYPE highway_secondary
= WAY ("highway"=="secondary")
{Name, NameAlt, Ref, Sideway}
PATH[FOOT BICYCLE CAR] LOCATION OPTIMIZE_LOW_ZOOM PIN_WAY LANES[2 1]
TYPE highway_secondary_link
= WAY ("highway"=="secondary_link")
{Name, NameAlt, Ref, Sideway}
PATH[FOOT BICYCLE CAR] LOCATION PIN_WAY
TYPE highway_tertiary
= WAY ("highway"=="tertiary")
{Name, NameAlt, Ref, Sideway}
PATH[FOOT BICYCLE CAR] LOCATION OPTIMIZE_LOW_ZOOM PIN_WAY LANES[2 1]
TYPE highway_tertiary_link
= WAY ("highway"=="tertiary_link")
{Name, NameAlt, Ref, Sideway}
PATH[FOOT BICYCLE CAR] LOCATION PIN_WAY
TYPE highway_unclassified
= WAY AREA ("highway"=="unclassified")
{Name, NameAlt, Ref, Sideway}
PATH[FOOT BICYCLE CAR] LOCATION PIN_WAY
TYPE highway_road
= WAY ("highway"=="road")
{Name, NameAlt, Ref, Sideway}
PATH[FOOT BICYCLE CAR] LOCATION OPTIMIZE_LOW_ZOOM PIN_WAY
TYPE highway_residential
= WAY AREA ("highway"=="residential")
{Name, NameAlt, Ref, Sideway}
PATH[FOOT BICYCLE CAR] LOCATION LANES[2 1]
TYPE highway_area__residential IGNORE
= WAY AREA ("area:highway"=="residential")
{Name, NameAlt, Ref}
PATH[FOOT BICYCLE CAR] LOCATION
TYPE highway_living_street
= WAY AREA ("highway"=="living_street")
{Name, NameAlt, Sideway}
PATH[FOOT BICYCLE CAR] LOCATION PIN_WAY
DESC
en: "living street"
de: "Spielstraße"
TYPE highway_service
= WAY AREA ("highway"=="service")
{Name, NameAlt, Sideway}
PATH[FOOT BICYCLE CAR] LOCATION
DESC
en: "service"
de: "Erschließungsweg"
// Ways with main designation different to car
TYPE highway_track
= WAY AREA ("highway"=="track")
{Name, NameAlt, Sideway}
PATH[FOOT BICYCLE] LOCATION PIN_WAY
DESC
en: "track"
de: "Wirtschaftsweg"
TYPE highway_pedestrian
= WAY AREA ("highway"=="pedestrian")
{Name, NameAlt, Sideway}
PATH[FOOT] LOCATION PIN_WAY MERGE_AREAS
DESC
en: "pedestrian"
de: "Fußgängerzone"
TYPE highway_path
= WAY AREA ("highway"=="path")
{Name, NameAlt, Sideway}
PATH[FOOT BICYCLE] IGNORESEALAND PIN_WAY
DESC
en: "path"
de: "Merhzweckweg"
TYPE highway_cycleway
= WAY ("highway"=="cycleway")
{Name, NameAlt}
PATH[FOOT BICYCLE] PIN_WAY
DESC
en: "cycleway"
de: "Fahradweg"
TYPE highway_footway
= WAY AREA ("highway"=="footway") OR AREA ("area:highway"=="footway")
{Name, NameAlt}
PATH[FOOT] LOCATION PIN_WAY
DESC
en: "cycleway"
de: "Fußweg"
TYPE highway_via_ferrata_easy IGNORE
= WAY (("highway"=="via_ferrata") AND (("via_ferrata_scale"=="0") OR ("via_ferrata_scale"=="1")))
{Name, NameAlt}
TYPE highway_via_ferrata_moderate IGNORE
= WAY (("highway"=="via_ferrata") AND ("via_ferrata_scale"=="2"))
{Name, NameAlt}
TYPE highway_via_ferrata_difficult IGNORE
= WAY (("highway"=="via_ferrata") AND (("via_ferrata_scale"=="3") OR ("via_ferrata_scale"=="4")))
{Name, NameAlt}
TYPE highway_via_ferrata_extreme IGNORE
= WAY (("highway"=="via_ferrata") AND (("via_ferrata_scale"=="5") OR ("via_ferrata_scale"=="6")))
{Name, NameAlt}
TYPE highway_bridleway
= WAY AREA ("highway"=="bridleway")
{Name, NameAlt}
PATH PIN_WAY
TYPE highway_steps
= WAY ("highway"=="steps")
{Name, NameAlt}
PATH[FOOT]
TYPE highway_services IGNORE
= NODE AREA ("highway"=="services")
{Name, NameAlt}
ADDRESS
GROUP routingPOI
TYPE highway_bus_guideway
= WAY ("highway"=="bus_guideway")
{Name, NameAlt, Ref}
PATH
TYPE highway_mini_roundabout IGNORE
= NODE ("highway"=="mini_roundabout")
{Name, NameAlt}
TYPE highway_bus_stop IGNORE
= NODE ("highway"=="bus_stop" OR (!("bus" IN ["no", "false", "0"]) AND "public_transport"=="platform"))
{Name, NameAlt}
TYPE highway_turning_cycle IGNORE
= NODE ("highway"=="turning_cycle")
{Name, NameAlt}
TYPE highway_construction IGNORE
= WAY ("highway"=="construction")
{Name, NameAlt, Width}
TYPE highway_roundabout
= WAY AREA ("highway"=="roundabout")
{Name, NameAlt}
PATH[FOOT BICYCLE CAR] PIN_WAY
TYPE highway_motorway_junction
= NODE ("highway"=="motorway_junction")
{Name, NameAlt, Ref}
PATH[CAR]
TYPE highway_street_lamp
IGNORE // Too many for mobile offline map?
= NODE ("highway"=="street_lamp")
// Since rendering of speed cameras is not allowed everwhere, it is disabled by default
TYPE speed_camera
IGNORE
= NODE ("highway"=="speed_camera")
TYPE highway_traffic_signals
IGNORE // No visualisation yet
= NODE ("highway"=="traffic_signals")
//
// Waterways and assorted
//
TYPE waterway_stream IGNORE
= WAY ("waterway"=="stream")
{Name, NameAlt, Width}
OPTIMIZE_LOW_ZOOM IGNORESEALAND PIN_WAY
TYPE waterway_river IGNORE
= WAY ("waterway"=="river")
{Name, NameAlt, Width, Tunnel}
OPTIMIZE_LOW_ZOOM IGNORESEALAND PIN_WAY
TYPE waterway_riverbank IGNORE
= AREA ("waterway"=="riverbank" OR ("natural"=="water" AND "water"=="river"))
{Name, NameAlt, Width}
MERGE_AREAS
TYPE waterway_canal IGNORE
= WAY AREA ("waterway"=="canal")
{Name, NameAlt, Width}
OPTIMIZE_LOW_ZOOM IGNORESEALAND
TYPE waterway_ditch IGNORE
= WAY ("waterway"=="ditch")
{Name, NameAlt, Width}
OPTIMIZE_LOW_ZOOM IGNORESEALAND
TYPE waterway_drain IGNORE
= WAY ("waterway"=="drain")
{Name, NameAlt, Width}
OPTIMIZE_LOW_ZOOM IGNORESEALAND
TYPE waterway_dock IGNORE
= NODE AREA ("waterway"=="dock")
{Name, NameAlt, Width}
ADDRESS MERGE_AREAS
TYPE waterway_lock_gate IGNORE
= NODE ("waterway"=="lock_gate")
TYPE waterway_turning_point IGNORE
= NODE ("waterway"=="turning_point")
TYPE waterway_boatyard IGNORE
= NODE AREA ("waterway"=="boatyard")
{Name, NameAlt}
ADDRESS
TYPE waterway_weir IGNORE
= NODE WAY AREA ("waterway"=="weir")
{Name, NameAlt, Width}
IGNORESEALAND
TYPE waterway_dam IGNORE
= WAY AREA ("waterway"=="dam")
{Name, NameAlt, Width}
IGNORESEALAND
//
// Railways and assorted
//
TYPE railway_rail IGNORE
= WAY ("railway"=="rail")
{Bridge, Tunnel, Width}
OPTIMIZE_LOW_ZOOM
TYPE railway_tram IGNORE
= WAY ("railway"=="tram")
{Bridge, Tunnel, Width}
TYPE railway_light_rail IGNORE
= WAY ("railway"=="light_rail")
{Bridge, Tunnel, Width}
OPTIMIZE_LOW_ZOOM
TYPE railway_subway IGNORE
= WAY ("railway"=="subway")
{Name, Bridge, Tunnel, Width}
TYPE railway_preserved IGNORE
= WAY ("railway"=="preserved")
{Name, Bridge, Tunnel, Width}
OPTIMIZE_LOW_ZOOM
TYPE railway_disused IGNORE
= WAY ("railway"=="disused")
{Bridge, Tunnel, Width}
TYPE railway_abandoned IGNORE
= WAY ("railway"=="abandoned")
{Bridge, Tunnel, Width}
TYPE railway_narrow_gauge IGNORE
= WAY ("railway"=="narrow_gauge")
{Name, Bridge, Tunnel, Width}
OPTIMIZE_LOW_ZOOM
TYPE railway_monorail IGNORE
= WAY ("railway"=="monorail")
{Name, Bridge, Tunnel, Width}
TYPE railway_funicular IGNORE
= WAY ("railway"=="funicular")
{Name, Bridge, Tunnel, Width}
TYPE railway_station IGNORE
= NODE AREA ("railway"=="station")
{Name, NameAlt}
ADDRESS POI
GROUP routingPOI
TYPE railway_halt IGNORE
= NODE ("railway"=="halt")
{Name, NameAlt}
TYPE railway_tram_stop IGNORE
= NODE ("railway"=="tram_stop")
{Name, NameAlt}
TYPE railway_crossing IGNORE
= NODE ("railway"=="crossing")
TYPE railway_level_crossing IGNORE
= NODE ("railway"=="level_crossing")
TYPE railway_subway_entrance IGNORE
= NODE ("railway"=="subway_entrance")
{Name, NameAlt}
TYPE railway_turntable IGNORE
= NODE AREA ("railway"=="turntable")
{Bridge, Tunnel}
TYPE public_transport_platform
= WAY AREA ("public_transport"=="platform" OR
"railway"=="platform" OR
"highway"=="platform")
{Name, NameAlt}
PATH[FOOT]
//
// Aerialway (http://wiki.openstreetmap.org/wiki/Key:aerialway)
//
TYPE aerialway_gondola IGNORE
= WAY (("aerialway"=="gondola") OR ("aerialway"=="cable_car"))
{Name}
TYPE aerialway_chair_lift IGNORE
= WAY (("aerialway"=="chair_lift") OR ("aerialway"=="mixed_lift"))
{Name}
TYPE aerialway_drag_lift IGNORE
= WAY (("aerialway"=="drag_lift") OR ("aerialway"=="t-bar") OR ("aerialway"=="j-bar") OR ("aerialway"=="platter") OR ("aerialway"=="rope_tow") OR ("aerialway"=="magic_carpet"))
{Name}
//
// Winter sports
//
TYPE piste_downhill_easy IGNORE
= WAY AREA ("piste:type"=="downhill" AND "piste:difficulty"=="easy")
{Name}
TYPE piste_downhill_intermediate IGNORE
= WAY AREA ("piste:type"=="downhill" AND "piste:difficulty"=="intermediate")
{Name}
TYPE piste_downhill_advanced IGNORE
= WAY AREA ("piste:type"=="downhill" AND "piste:difficulty"=="advanced")
{Name}
//
// Water transport
//
TYPE route_ferry IGNORE
= WAY ("route"=="ferry")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM IGNORESEALAND
//
// air transport
//
TYPE aeroway_aerodrome IGNORE
= NODE AREA ("aeroway"=="aerodrome")
{Name, NameAlt}
ADDRESS POI
TYPE aeroway_terminal IGNORE
= NODE AREA ("aeroway"=="terminal")
{Name, NameAlt}
ADDRESS POI
TYPE aeroway_helipad IGNORE
= NODE AREA ("aeroway"=="helipad")
TYPE aeroway_runway IGNORE
= WAY AREA ("aeroway"=="runway") // Officially not AREA!
{Ref, Width}
TYPE aeroway_taxiway IGNORE
= WAY ("aeroway"=="taxiway")
{Ref, Width} PIN_WAY
TYPE aeroway_apron IGNORE
= AREA ("aeroway"=="apron")
{Ref}
TYPE aeroway_gate IGNORE
= NODE ("aeroway"=="gate")
{Name, NameAlt}
ADDRESS
//
// Landuses
//
TYPE landuse_allotments IGNORE
= NODE AREA ("landuse"=="allotments")
{Name, NameAlt}
MERGE_AREAS
GROUP landuse
TYPE landuse_basin IGNORE
= NODE AREA ("landuse"=="basin")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
GROUP landuse
TYPE landuse_brownfield IGNORE
= AREA ("landuse"=="brownfield")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
GROUP landuse
TYPE landuse_cemetery IGNORE
= AREA ("landuse"=="cemetery")
{Name, NameAlt}
GROUP landuse
TYPE landuse_cemetery_sea IGNORE
= AREA ("landuse"=="cemetery" AND "cemetery"=="sea")
{Name, NameAlt}
IGNORESEALAND
GROUP landuse
TYPE landuse_commercial IGNORE
= NODE AREA ("landuse"=="commercial")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
GROUP landuse
TYPE landuse_construction IGNORE
= NODE AREA ("landuse"=="construction")
{Name, NameAlt} MERGE_AREAS
GROUP landuse
TYPE landuse_farmland IGNORE
= AREA ("landuse"=="farmland")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
GROUP landuse
TYPE landuse_farmyard_building IGNORE
= AREA ("landuse"=="farmyard"AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
GROUP landuse
TYPE landuse_farmyard IGNORE
= AREA ("landuse"=="farmyard")
{Name, NameAlt} MERGE_AREAS
GROUP landuse
TYPE wood IGNORE
= NODE AREA ("landuse"=="forest" OR "natural"=="wood" OR "landcover"=="trees")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
GROUP landuse
TYPE landuse_garages IGNORE
= AREA ("landuse"=="garages")
{Name, NameAlt}
GROUP landuse
TYPE landuse_grass IGNORE
= NODE AREA ("landuse"=="grass")
{Name, NameAlt} MERGE_AREAS
GROUP landuse
TYPE landuse_greenfield IGNORE
= NODE AREA ("landuse"=="greenfield")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
GROUP landuse
TYPE landuse_greenhouse_horticulture IGNORE
= AREA ("landuse"=="greenhouse_horticulture")
{Name, NameAlt} MERGE_AREAS
GROUP landuse
TYPE landuse_industrial IGNORE
= NODE AREA ("landuse"=="industrial")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
GROUP landuse
TYPE landuse_landfill IGNORE
= NODE AREA ("landuse"=="landfill")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
GROUP landuse
TYPE landuse_meadow IGNORE
= NODE AREA ("landuse"=="meadow")
{Name, NameAlt} MERGE_AREAS
GROUP landuse
TYPE landuse_military IGNORE
= NODE AREA ("landuse"=="military")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
GROUP landuse
TYPE landuse_orchard IGNORE
= NODE AREA ("landuse"=="orchard")
{Name, NameAlt} MERGE_AREAS
GROUP landuse
TYPE landuse_piste IGNORE
= NODE AREA ("landuse"=="piste")
{Name, NameAlt} MERGE_AREAS
GROUP landuse
TYPE landuse_quarry IGNORE
= NODE AREA ("landuse"=="quarry")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
GROUP landuse
TYPE landuse_railway IGNORE
= AREA ("landuse"=="railway")
{Name, NameAlt} MERGE_AREAS
GROUP landuse
TYPE landuse_recreation_ground IGNORE
= NODE AREA ("landuse"=="recreation_ground")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
GROUP landuse
TYPE landuse_reservoir IGNORE
= NODE AREA ("landuse"=="reservoir")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
GROUP landuse
TYPE landuse_residential IGNORE
= NODE AREA ("landuse"=="residential")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
GROUP landuse
TYPE landuse_retail IGNORE
= NODE AREA ("landuse"=="retail")
MERGE_AREAS
GROUP landuse
TYPE landuse_salt_pond IGNORE
= AREA ("landuse"=="salt_pond")
{Name, NameAlt}
MERGE_AREAS
GROUP landuse
TYPE landuse_village_green IGNORE
= NODE AREA ("landuse"=="village_green")
{Name, NameAlt}
MERGE_AREAS
GROUP landuse
TYPE landuse_vineyard IGNORE
= AREA ("landuse"=="vineyard")
{Name, NameAlt}
MERGE_AREAS
GROUP landuse
//
// Natural
//
TYPE natural_bay IGNORE
= NODE AREA ("natural"=="bay")
{Name, NameAlt}
MERGE_AREAS
TYPE natural_beach IGNORE
= NODE AREA ("natural"=="beach")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
TYPE natural_bare_rock IGNORE
= NODE AREA ("natural"=="bare_rock")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
TYPE natural_cave_entrance IGNORE
= NODE AREA ("natural"=="cave_entrance")
{Name, NameAlt}
TYPE natural_cliff IGNORE
= NODE WAY AREA ("natural"=="cliff")
{Name, NameAlt, Width}
MERGE_AREAS
TYPE natural_fell IGNORE
= NODE AREA ("natural"=="fell")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
TYPE natural_glacier IGNORE
= NODE AREA ("natural"=="glacier")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
TYPE natural_grassland IGNORE
= AREA ("natural"=="grassland")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
TYPE natural_heath IGNORE
= NODE AREA ("natural"=="heath")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
TYPE natural_land IGNORE
= NODE AREA ("natural"=="land")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
TYPE natural_mud IGNORE
= AREA ("natural"=="mud")
{Name, NameAlt} MERGE_AREAS
TYPE natural_peak IGNORE
= NODE ("natural"=="peak")
{Name, NameAlt, Ele}
TYPE natural_sand IGNORE
= AREA ("natural"=="sand")
{Name, NameAlt} MERGE_AREAS
TYPE natural_scree IGNORE
= NODE AREA ("natural"=="scree")
{Name, NameAlt} MERGE_AREAS
TYPE natural_scrub IGNORE
= NODE AREA ("natural"=="scrub")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
TYPE natural_spring IGNORE
= NODE ("natural"=="spring")
{Name, NameAlt}
TYPE natural_tree
IGNORE // Too many for mobile?
= NODE ("natural"=="tree")
TYPE natural_volcano IGNORE
= NODE ("natural"=="volcano")
{Name, NameAlt}
TYPE natural_water IGNORE
= NODE AREA ("natural"=="water")
{Name, NameAlt}
IGNORESEALAND OPTIMIZE_LOW_ZOOM MERGE_AREAS
TYPE natural_wetland_marsh IGNORE
= NODE AREA ("natural"=="wetland" AND "wetland"=="marsh")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
TYPE natural_wetland_tidalflat IGNORE
= NODE AREA ("natural"=="wetland" AND "wetland"=="tidalflat")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
TYPE natural_wetland IGNORE
= NODE AREA ("natural"=="wetland")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
//
// Man made
//
TYPE man_made_bridge IGNORE
= AREA ("man_made"=="bridge")
{Name, NameAlt}
MERGE_AREAS
TYPE man_made_pier IGNORE
= WAY AREA ("man_made"=="pier")
{Name, NameAlt, Width}
MERGE_AREAS
TYPE man_made_wastewater_plant IGNORE
= NODE AREA ("man_made"=="wastewater_plant")
{Name, NameAlt}
MERGE_AREAS
//
// Leisure
//
TYPE leisure_building IGNORE
= AREA (EXISTS "leisure" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
POI
MERGE_AREAS
TYPE leisure_sports_centre IGNORE
= NODE AREA ("leisure"=="sports_centre")
{Name, NameAlt}
ADDRESS POI
GROUP routingPOI
TYPE leisure_stadium IGNORE
= NODE AREA ("leisure"=="stadium")
{Name, NameAlt}
ADDRESS POI
GROUP routingPOI
TYPE leisure_track
= NODE WAY AREA ("leisure"=="track")
{Name, NameAlt, Ref}
PATH[FOOT] PIN_WAY OPTIMIZE_LOW_ZOOM
TYPE leisure_pitch IGNORE
= NODE AREA ("leisure"=="pitch")
{Name, NameAlt}
ADDRESS OPTIMIZE_LOW_ZOOM
TYPE leisure_golf_course IGNORE
= NODE AREA ("leisure"=="golf_course")
{Name, NameAlt}
ADDRESS POI OPTIMIZE_LOW_ZOOM
TYPE leisure_water_park IGNORE
= NODE AREA ("leisure"=="water_park")
{Name, NameAlt}
ADDRESS OPTIMIZE_LOW_ZOOM POI
GROUP routingPOI
TYPE leisure_swimming_pool IGNORE
= NODE AREA ("leisure"=="swimming_pool" AND !("covered" IN ["yes"]) AND !("indoor" IN ["yes"]))
{Name, NameAlt}
ADDRESS OPTIMIZE_LOW_ZOOM POI
TYPE leisure_marina IGNORE
= NODE AREA ("leisure"=="marina")
{Name, NameAlt}
ADDRESS OPTIMIZE_LOW_ZOOM POI
TYPE leisure_slipway IGNORE
= NODE ("leisure"=="slipway")
{Name, NameAlt}
TYPE leisure_fishing IGNORE
= NODE AREA ("leisure"=="fishing")
{Name, NameAlt}
ADDRESS OPTIMIZE_LOW_ZOOM MERGE_AREAS
TYPE leisure_nature_reserve IGNORE
= NODE AREA ("leisure"=="nature_reserve")
{Name, NameAlt}
MERGE_AREAS
TYPE leisure_park IGNORE
= NODE AREA ("leisure"=="park")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM POI MERGE_AREAS
TYPE leisure_playground IGNORE
= NODE AREA ("leisure"=="playground")
{Name, NameAlt}
TYPE leisure_garden IGNORE
= NODE AREA ("leisure"=="garden")
{Name, NameAlt}
MERGE_AREAS
TYPE leisure_common IGNORE
= NODE AREA ("leisure"=="common")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM MERGE_AREAS
TYPE leisure_ice_rink IGNORE
= NODE AREA ("leisure"=="ice_rink")
{Name, NameAlt}
OPTIMIZE_LOW_ZOOM
//
// Amenity
//
// These are currently special-cased in the style file
TYPE amenity_atm IGNORE
= NODE AREA ("amenity"=="atm")
{Name, NameAlt}
GROUP amenity
TYPE amenity_bank_building IGNORE
= AREA ("amenity"=="bank" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
POI
GROUP amenity, building
TYPE amenity_bank IGNORE
= NODE AREA ("amenity"=="bank")
{Name, NameAlt}
ADDRESS POI
GROUP amenity, routingPOI
TYPE amenity_bicycle_parking_building IGNORE
= AREA ("amenity"=="bicycle_parking" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
GROUP amenity, building
TYPE amenity_bicycle_parking IGNORE
= NODE WAY AREA ("amenity"=="bicycle_parking")
{Name, NameAlt, Width}
GROUP amenity, building
TYPE amenity_bench
IGNORE // Too many for mobile?
= NODE ("amenity"=="bench")
GROUP amenity
TYPE amenity_brothel
IGNORE // Too many for mobile?
= NODE AREA ("amenity"=="brothel")
GROUP amenity, routingPOI
TYPE amenity_bus_station IGNORE
= NODE AREA ("amenity"=="bus_station")
{Name, NameAlt}
GROUP amenity
TYPE amenity_cafe_building IGNORE
= AREA ("amenity"=="cafe" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP amenity, building, routingPOI
TYPE amenity_cafe IGNORE
= NODE AREA ("amenity"=="cafe")
{Name, NameAlt}
ADDRESS POI
GROUP amenity, routingPOI
TYPE amenity_charging_station
IGNORE // No visualisation yet
= NODE ("amenity"=="charging_station")
GROUP amenity
TYPE amenity_clock
IGNORE // Too many for mobile?
= NODE ("amenity"=="clock")
GROUP amenity
TYPE amenity_drinking_water
IGNORE // No visualisation yet
= NODE ("amenity"=="drinking_water")
GROUP amenity
TYPE amenity_ev_charging
IGNORE // No visualisation yet
= NODE ("amenity"=="ev_charging")
GROUP amenity
TYPE amenity_fast_food_building IGNORE
= AREA ("amenity"=="fast_food" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP amenity, building, routingPOI
TYPE amenity_fast_food IGNORE
= NODE AREA ("amenity"=="fast_food")
{Name, NameAlt}
ADDRESS POI
GROUP amenity, routingPOI
TYPE amenity_fuel_building IGNORE
= AREA ("amenity"=="fuel" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP amenity, building, routingPOI
TYPE amenity_fuel IGNORE
= NODE ("amenity"=="fuel")
{Name, NameAlt}
ADDRESS POI
GROUP amenity, routingPOI
TYPE amenity_grave_yard IGNORE
= NODE AREA ("amenity"=="grave_yard")
{Name, NameAlt}
ADDRESS POI
GROUP amenity
TYPE amenity_grit_bin
IGNORE // No visualisation yet
= NODE ("amenity"=="grit_bin")
GROUP amenity
TYPE amenity_hospital_building IGNORE
= AREA ("amenity"=="hospital" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP amenity, building, routingPOI
TYPE amenity_hospital IGNORE
= NODE AREA ("amenity"=="hospital")
{Name, NameAlt}
ADDRESS POI
GROUP amenity, routingPOI
TYPE amenity_kindergarten_building IGNORE
= AREA ("amenity"=="kindergarten" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP amenity, building, routingPOI
TYPE amenity_kindergarten IGNORE
= NODE AREA ("amenity"=="kindergarten")
{Name, NameAlt}
ADDRESS POI
GROUP amenity, routingPOI
TYPE amenity_library_building IGNORE
= AREA ("amenity"=="library" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP amenity, routingPOI
TYPE amenity_library IGNORE
= NODE AREA ("amenity"=="library")
{Name, NameAlt}
ADDRESS POI
GROUP amenity, routingPOI
TYPE amenity_parking_building IGNORE
= AREA ("amenity"=="parking" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP amenity, building, routingPOI
TYPE amenity_parking_entrance
IGNORE // No visualisation yet
= NODE ("amenity"=="parking_entrance")
GROUP amenity
TYPE amenity_parking_space
IGNORE // No visualisation yet
= NODE AREA ("amenity"=="parking_space")
GROUP amenity
TYPE amenity_parking IGNORE
= NODE AREA ("amenity"=="parking")
{Name, NameAlt}
ADDRESS POI
GROUP amenity
TYPE amenity_pharmacy IGNORE
= NODE AREA ("amenity"=="pharmacy" OR "shop"=="pharmacy")
{Name, NameAlt}
ADDRESS POI
GROUP amenity, routingPOI
TYPE amenity_photo_booth
IGNORE // Too many for mobile?
= NODE ("amenity"=="photo_booth")
GROUP amenity
TYPE amenity_post_office_building IGNORE
= AREA ("amenity"=="post_office" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP amenity, building, routingPOI
TYPE amenity_post_office IGNORE
= NODE ("amenity"=="post_office")
{Name, NameAlt}
ADDRESS POI
GROUP amenity, routingPOI
TYPE amenity_post_box IGNORE
= NODE ("amenity"=="post_box")
GROUP amenity
TYPE amenity_restaurant_building IGNORE
= AREA ("amenity"=="restaurant" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP amenity, building, routingPOI
TYPE amenity_restaurant IGNORE
= NODE AREA ("amenity"=="restaurant")
{Name, NameAlt}
ADDRESS POI
GROUP amenity, routingPOI
TYPE amenity_recycling // there are a number of sub types, not yet defined here...
IGNORE
= NODE AREA ("amenity"=="recycling")
GROUP amenity
TYPE amenity_school_building IGNORE
= AREA ("amenity"=="school" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP amenity, building, routingPOI
TYPE amenity_school IGNORE
= NODE AREA ("amenity"=="school")
{Name, NameAlt}
ADDRESS POI
GROUP amenity, routingPOI
TYPE amenity_taxi IGNORE
= NODE AREA ("amenity"=="taxi")
GROUP amenity
TYPE amenity_toilets IGNORE
= NODE ("amenity"=="toilets")
GROUP amenity
TYPE amenity_vending_machine
IGNORE // Too many for mobile?
= NODE ("amenity"=="vending_machine")
{Name, NameAlt}
GROUP amenity
TYPE amenity_waste_disposal
IGNORE // Too many for mobile?
= NODE ("amenity"=="waste_disposal")
GROUP amenity
TYPE amenity_waste_basket
IGNORE // Too many for mobile?
= NODE ("amenity"=="waste_basket")
GROUP amenity
TYPE amenity_watering_place IGNORE
// Too many for mobile?
= NODE ("amenity"=="watering_place")
GROUP amenity
TYPE amenity_water_point
IGNORE // Too many for mobile?
= NODE ("amenity"=="water_point")
GROUP amenity
TYPE amenity_ferry_terminal IGNORE
= NODE AREA ("amenity"=="ferry_terminal")
{Name, NameAlt}
POI
GROUP amenity
// Churches
TYPE christian_church_building IGNORE
= AREA ("amenity"=="place_of_worship" AND
"religion"=="christian" AND
EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP routingPOI
TYPE christian_church IGNORE
= NODE ("amenity"=="place_of_worship" AND
"religion"=="christian")
{Name, NameAlt}
ADDRESS POI
GROUP routingPOI
// Everything else is just an 'amenity' for now
TYPE amenity_building IGNORE
= AREA (EXISTS "amenity" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS
GROUP amenity, building, routingPOI
TYPE amenity IGNORE
= NODE (EXISTS "amenity")
{Name, NameAlt}
ADDRESS
GROUP amenity
//
// Shops
//
// Everything else is just an 'amenity' for now
TYPE shop_building IGNORE
= AREA (EXISTS "shop" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS
GROUP amenity, building, routingPOI
// Currently all shops are the same...
TYPE shop IGNORE
= NODE AREA (EXISTS "shop")
{Name, NameAlt}
ADDRESS
GROUP amenity, routingPOI
//
// Tourism
//
TYPE tourism_aquarium IGNORE
= NODE AREA ("tourism"=="aquarium")
{Name, NameAlt}
ADDRESS POI
GROUP tourism, routingPOI
TYPE tourism_attraction_building IGNORE
= NODE AREA ("tourism"=="attraction" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP tourism, building, routingPOI
TYPE tourism_attraction IGNORE
= NODE AREA ("tourism"=="attraction")
{Name, NameAlt}
ADDRESS POI
GROUP tourism, routingPOI
TYPE tourism_artwork IGNORE
= NODE WAY AREA ("tourism"=="artwork")
{Name, NameAlt, Width, Grade, Bridge, Tunnel, Roundabout}
ADDRESS POI
GROUP tourism, routingPOI
TYPE tourism_camp_site IGNORE
= NODE AREA ("tourism"=="camp_site")
{Name, NameAlt}
ADDRESS POI
GROUP tourism, routingPOI
TYPE tourism_caravan_site IGNORE
= NODE AREA ("tourism"=="caravan_site")
{Name, NameAlt}
ADDRESS POI
GROUP tourism
TYPE tourism_picnic_site IGNORE
= NODE AREA ("tourism"=="picnic_site")
{Name, NameAlt}
ADDRESS POI
GROUP tourism
TYPE tourism_theme_park IGNORE
= NODE AREA ("tourism"=="theme_park")
{Name, NameAlt}
ADDRESS POI
GROUP tourism, routingPOI
TYPE tourism_viewpoint IGNORE
= NODE ("tourism"=="viewpoint")
{Name, NameAlt}
GROUP tourism
TYPE tourism_zoo IGNORE
= NODE AREA ("tourism"=="zoo")
{Name, NameAlt}
ADDRESS POI
GROUP tourism, routingPOI
TYPE tourism_alpine_hut_building IGNORE
= AREA ("tourism"=="alpine_hut" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS
GROUP tourism, building
TYPE tourism_alpine_hut IGNORE
= NODE AREA ("tourism"=="alpine_hut")
{Name, NameAlt}
ADDRESS
GROUP tourism
TYPE tourism_chalet_building IGNORE
= AREA ("tourism"=="chalet" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP tourism, building
TYPE tourism_chalet IGNORE
= NODE AREA ("tourism"=="chalet")
{Name, NameAlt}
ADDRESS POI
GROUP tourism
TYPE tourism_guest_house_building IGNORE
= AREA ("tourism"=="guest_house" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP tourism, building
TYPE tourism_guest_house IGNORE
= NODE AREA ("tourism"=="guest_house")
{Name, NameAlt}
ADDRESS POI
GROUP tourism
TYPE tourism_hostel_building IGNORE
= AREA ("tourism"=="hostel" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP tourism, building, routingPOI
TYPE tourism_hostel IGNORE
= NODE AREA ("tourism"=="hostel")
{Name, NameAlt}
ADDRESS POI
GROUP tourism, routingPOI
TYPE tourism_hotel_building IGNORE
= AREA ("tourism"=="hotel" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP tourism, building, routingPOI
TYPE tourism_hotel IGNORE
= NODE AREA ("tourism"=="hotel")
{Name, NameAlt}
ADDRESS POI
GROUP tourism, routingPOI
TYPE tourism_information_building IGNORE
= AREA ("tourism"=="information" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP tourism, building
TYPE tourism_information IGNORE
= NODE AREA ("tourism"=="information")
{Name, NameAlt}
ADDRESS POI
GROUP tourism
TYPE tourism_motel_building IGNORE
= AREA ("tourism"=="motel" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP tourism, building, routingPOI
TYPE tourism_motel IGNORE
= NODE AREA ("tourism"=="motel")
{Name, NameAlt}
ADDRESS POI
GROUP tourism, routingPOI
TYPE tourism_museum_building IGNORE
= AREA ("tourism"=="museum" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP tourism, building, routingPOI
TYPE tourism_museum IGNORE
= NODE AREA ("tourism"=="museum")
{Name, NameAlt}
ADDRESS POI
GROUP tourism, routingPOI
TYPE tourism_building IGNORE
= AREA (EXISTS "tourism" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP tourism, building, routingPOI
TYPE tourism IGNORE
= NODE AREA (EXISTS "tourism")
{Name, NameAlt}
ADDRESS POI
GROUP tourism, routingPOI
//
// Historic
//
TYPE historic_castle_building IGNORE
= AREA ("historic"=="castle" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP historic, building, routingPOI
TYPE historic_castle IGNORE
= NODE AREA ("historic"=="castle")
{Name, NameAlt}
ADDRESS POI
GROUP historic, routingPOI
TYPE historic_manor_building IGNORE
= AREA ("historic"=="manor" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP historic, building, routingPOI
TYPE historic_manor IGNORE
= NODE AREA ("historic"=="manor")
{Name, NameAlt}
ADDRESS POI
GROUP historic, routingPOI
TYPE historic_monument_building IGNORE
= AREA ("historic"=="monument" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP historic, building, routingPOI
TYPE historic_monument IGNORE
= NODE AREA ("historic"=="monument")
{Name, NameAlt}
ADDRESS POI
GROUP historic, routingPOI
TYPE historic_memorial_stolperstein
IGNORE // only for "theme" maps?
= NODE ("historic"=="memorial" AND "memorial:type"=="stolperstein")
{Name, NameAlt}
GROUP historic
TYPE historic_memorial_building IGNORE
= AREA ("historic"=="memorial" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP historic, building, routingPOI
TYPE historic_memorial IGNORE
= NODE AREA ("historic"=="memorial")
{Name, NameAlt}
ADDRESS POI
GROUP historic, routingPOI
TYPE historic_ruins_building IGNORE
= AREA ("historic"=="ruins" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP historic, building, routingPOI
TYPE historic_ruins IGNORE
= NODE WAY AREA ("historic"=="ruins")
{Name, NameAlt, Width, Grade, Bridge, Tunnel, Roundabout}
ADDRESS POI
GROUP historic, routingPOI
TYPE historic_archaeological_site IGNORE
= NODE WAY AREA ("historic"=="archaeological_site")
{Name, NameAlt, Width, Grade, Bridge, Tunnel, Roundabout}
ADDRESS POI
GROUP historic
TYPE historic_battlefield IGNORE
= NODE AREA ("historic"=="battlefield")
{Name, NameAlt}
ADDRESS POI MERGE_AREAS
GROUP historic
TYPE historic_wreck IGNORE
= NODE AREA ("historic"=="wreck")
{Name, NameAlt}
ADDRESS POI
GROUP historic
TYPE historic_building IGNORE
= AREA (EXISTS "historic" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS POI
GROUP historic, building, routingPOI
TYPE historic IGNORE
= NODE AREA (EXISTS "historic" AND !("historic" IN ["citywalls"]))
{Name, NameAlt}
ADDRESS POI
GROUP historic
//
// Military
//
TYPE military_airfield IGNORE
= NODE AREA ("military"=="airfield")
{Name, NameAlt}
ADDRESS
TYPE military_bunker_building IGNORE
= NODE AREA ("military"=="bunker" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS
TYPE military_bunker IGNORE
= NODE AREA ("military"=="bunker")
{Name, NameAlt}
ADDRESS
TYPE military_barracks IGNORE
= NODE AREA ("military"=="barracks")
{Name, NameAlt}
ADDRESS
TYPE military_danger_area IGNORE
= NODE AREA ("military"=="danger_area")
{Name, NameAlt}
MERGE_AREAS
TYPE military_range IGNORE
= NODE AREA ("military"=="range")
{Name, NameAlt}
MERGE_AREAS
TYPE military_naval_base IGNORE
= NODE AREA ("military"=="naval_base")
{Name, NameAlt}
ADDRESS
//
// Sport
// INFO: We expect that only the "node" variant will appear, since the area version should be
// handled by "building", "pitch" or similar areas.
// See http://wiki.openstreetmap.org/wiki/Key:sport
//
TYPE sport_building IGNORE
= AREA (EXISTS "sport" AND EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS
TYPE sport_9pin IGNORE
= NODE AREA ("sport"=="9pin")
{Name, NameAlt}
ADDRESS
TYPE sport_10pin IGNORE
= NODE AREA ("sport"=="10pin")
{Name, NameAlt}
ADDRESS
TYPE sport_archery IGNORE
= NODE AREA ("sport"=="archery")
{Name, NameAlt}
ADDRESS
TYPE sport_athletics IGNORE
= NODE AREA ("sport"=="athletics")
{Name, NameAlt}
ADDRESS
TYPE sport_australian_football IGNORE
= NODE AREA ("sport"=="australian_football")
{Name, NameAlt}
ADDRESS
TYPE sport_baseball IGNORE
= NODE AREA ("sport"=="baseball")
{Name, NameAlt}
ADDRESS
TYPE sport_basketball IGNORE
= NODE AREA ("sport"=="basketball")
{Name, NameAlt}
ADDRESS
TYPE sport_beachvolleyball IGNORE
= NODE AREA ("sport"=="beachvolleyball")
{Name, NameAlt}
ADDRESS
TYPE sport_boules IGNORE
= NODE AREA ("sport"=="boules")
{Name, NameAlt}
ADDRESS
TYPE sport_bowls IGNORE
= NODE AREA ("sport"=="bowls")
{Name, NameAlt}
ADDRESS
TYPE sport_canoe IGNORE
= NODE AREA ("sport"=="canoe")
{Name, NameAlt}
ADDRESS
TYPE sport_chess IGNORE
= NODE AREA ("sport"=="chess")
{Name, NameAlt}
ADDRESS
TYPE sport_climbing IGNORE
= NODE AREA ("sport"=="climbing")
{Name, NameAlt}
ADDRESS
TYPE sport_cricket IGNORE
= NODE AREA ("sport"=="cricket")
{Name, NameAlt}
ADDRESS
TYPE sport_cricket_nets IGNORE
= NODE AREA ("sport"=="cricket_nets")
{Name, NameAlt}
ADDRESS
TYPE sport_croquet IGNORE
= NODE AREA ("sport"=="croquet")
{Name, NameAlt}
ADDRESS
TYPE sport_cycling IGNORE
= NODE AREA ("sport"=="cycling")
{Name, NameAlt}
ADDRESS
TYPE sport_dog_racing IGNORE
= NODE AREA ("sport"=="dog_racing")
{Name, NameAlt}
ADDRESS
TYPE sport_equestrian IGNORE
= NODE AREA ("sport"=="equestrian")
{Name, NameAlt}
ADDRESS
TYPE sport_football IGNORE
= NODE AREA ("sport"=="football")
{Name, NameAlt}
ADDRESS
TYPE sport_golf IGNORE
= NODE AREA ("sport"=="golf")
{Name, NameAlt}
ADDRESS
TYPE sport_gymnastics IGNORE
= NODE AREA ("sport"=="gymnastics")
{Name, NameAlt}
ADDRESS
TYPE sport_hockey IGNORE
= NODE AREA ("sport"=="hockey")
{Name, NameAlt}
ADDRESS
TYPE sport_horse_racing IGNORE
= NODE AREA ("sport"=="horse_racing")
{Name, NameAlt}
ADDRESS
TYPE sport_motor IGNORE
= NODE AREA ("sport"=="motor")
{Name, NameAlt}
ADDRESS
TYPE sport_multi IGNORE
= NODE AREA ("sport"=="multi")
{Name, NameAlt}
ADDRESS
TYPE sport_orienteering IGNORE
= NODE AREA ("sport"=="orienteering")
{Name, NameAlt}
ADDRESS
TYPE sport_paddle_tennis IGNORE
= NODE AREA ("sport"=="paddle_tennis")
{Name, NameAlt}
ADDRESS
TYPE sport_pelota IGNORE
= NODE AREA ("sport"=="pelota")
{Name, NameAlt}
ADDRESS
TYPE sport_raquet IGNORE
= NODE AREA ("sport"=="raquet")
{Name, NameAlt}
ADDRESS
TYPE sport_rowing IGNORE
= NODE AREA ("sport"=="rowing")
{Name, NameAlt}
ADDRESS
TYPE sport_rugby IGNORE
= NODE AREA ("sport"=="rugby")
{Name, NameAlt}
ADDRESS
TYPE sport_shooting IGNORE
= NODE AREA ("sport"=="shooting")
{Name, NameAlt}
ADDRESS
TYPE sport_skating IGNORE
= NODE AREA ("sport"=="skating")
{Name, NameAlt}
ADDRESS
TYPE sport_skateboard IGNORE
= NODE AREA ("sport"=="skateboard")
{Name, NameAlt}
ADDRESS
TYPE sport_skiing IGNORE
= NODE AREA ("sport"=="skiing")
{Name, NameAlt}
ADDRESS
TYPE sport_soccer IGNORE
= NODE AREA ("sport"=="soccer")
{Name, NameAlt}
ADDRESS
TYPE sport_swimming IGNORE
= NODE AREA ("sport"=="swimming")
{Name, NameAlt}
ADDRESS
TYPE sport_table_tenis IGNORE
= NODE AREA ("sport"=="table_tenis")
{Name, NameAlt}
ADDRESS
TYPE sport_team_handball IGNORE
= NODE AREA ("sport"=="team_handball")
{Name, NameAlt}
ADDRESS
TYPE sport_tennis IGNORE
= NODE AREA ("sport"=="tennis")
{Name, NameAlt}
ADDRESS
TYPE sport_volleyball IGNORE
= NODE AREA ("sport"=="volleyball")
{Name, NameAlt}
ADDRESS
TYPE sport IGNORE
= NODE AREA (EXISTS "sport")
{Name, NameAlt}
ADDRESS
//
// Power
//
TYPE power_tower IGNORE
= NODE ("power"=="tower")
TYPE power_pole IGNORE
= NODE ("power"=="pole")
TYPE power_line IGNORE
= WAY ("power"=="line") IGNORESEALAND
TYPE power_minor_line IGNORE
= WAY ("power"=="minor_line")
// See http://wiki.openstreetmap.org/wiki/Tag:power%3Dstation
TYPE power_sub_station IGNORE
= NODE AREA ("power"=="station" OR "power"=="sub_station")
{Name, NameAlt}
ADDRESS
TYPE power_generator IGNORE
= NODE AREA ("power"=="generator")
ADDRESS
// TODO: power_plant, see: http://wiki.openstreetmap.org/wiki/Tag:power%3Dplant
//
// Regions, locations, cities stuff
//
// Do not delete the following type, they are required by the GenLocation import step
TYPE boundary_country IGNORE
= WAY AREA ("boundary"=="administrative" AND "admin_level"=="2") OR
RELATION ("type"=="boundary" AND "boundary"=="administrative" AND "admin_level"=="2")
{Name, NameAlt, AdminLevel}
MULTIPOLYGON IGNORESEALAND
TYPE boundary_state IGNORE
= WAY AREA ("boundary"=="administrative" AND "admin_level"=="4") OR
RELATION ("type"=="boundary" AND "boundary"=="administrative" AND "admin_level"=="4")
{Name, NameAlt, AdminLevel}
MULTIPOLYGON IGNORESEALAND
TYPE boundary_county IGNORE
= WAY AREA ("boundary"=="administrative" AND "admin_level"=="6") OR
RELATION ("type"=="boundary" AND "boundary"=="administrative" AND "admin_level"=="6")
{Name, NameAlt, AdminLevel}
MULTIPOLYGON IGNORESEALAND
TYPE boundary_administrative IGNORE
= WAY AREA ("boundary"=="administrative") OR
RELATION ("type"=="boundary" AND "boundary"=="administrative")
{Name, NameAlt, AdminLevel}
MULTIPOLYGON IGNORESEALAND
TYPE place_continent IGNORE
= NODE AREA ("place"=="continent")
{Name, NameAlt, IsIn}
// Not part of the administrative boundary hierachy?
TYPE place_peninsula IGNORE
= NODE AREA ("place"=="peninsula")
{Name, NameAlt}
TYPE place_country IGNORE
= NODE ("place"=="country")
{Name, NameAlt, IsIn}
TYPE place_state IGNORE
= NODE AREA ("place"=="state")
{Name, NameAlt, IsIn}
TYPE place_region IGNORE
= NODE AREA ("place"=="region")
{Name, NameAlt, IsIn}
TYPE place_county IGNORE
= NODE AREA ("place"=="county")
{Name, NameAlt, IsIn}
// Do not delete the following types, they are required by the GenCityStreet import step
TYPE place_millioncity IGNORE
= NODE AREA ("place"=="city" AND EXISTS "population" AND "population">1000000)
{Name, NameAlt, IsIn}
ADMIN_REGION
TYPE place_bigcity IGNORE
= NODE AREA ("place"=="city" AND EXISTS "population" AND "population">100000)
{Name, NameAlt, IsIn}
ADMIN_REGION
TYPE place_city IGNORE
= NODE AREA ("place"=="city")
{Name, NameAlt, IsIn}
ADMIN_REGION
TYPE place_town IGNORE
= NODE AREA ("place"=="town")
{Name, NameAlt, IsIn}
ADMIN_REGION
TYPE place_village IGNORE
= NODE AREA ("place"=="village")
{Name, NameAlt, IsIn}
ADMIN_REGION
TYPE place_hamlet IGNORE
= NODE AREA ("place"=="hamlet")
{Name, NameAlt, IsIn}
ADMIN_REGION
TYPE place_suburb IGNORE
= NODE AREA ("place"=="suburb")
{Name, NameAlt, IsIn}
ADMIN_REGION
TYPE place_locality IGNORE
= NODE AREA ("place"=="locality")
{Name, NameAlt, IsIn}
POI
TYPE place_island IGNORE
= NODE AREA ("place"=="island")
{Name, NameAlt, IsIn}
TYPE place_islet IGNORE
= NODE AREA ("place"=="islet")
{Name, NameAlt, IsIn}
//
// Buildings
//
TYPE building_garage IGNORE
= AREA ("building"=="garage")
TYPE building IGNORE
= AREA (EXISTS "building" AND !("building" IN ["no","false","0"]))
{Name, NameAlt}
ADDRESS
// Addresses
TYPE address IGNORE
= NODE AREA ((EXISTS "addr:street" OR EXISTS "addr:place") AND EXISTS "addr:housenumber")
ADDRESS
//
//
// Barriers
// Currently not supported by stylesheet
TYPE barrier_hedge
IGNORE
= WAY AREA ("barrier"=="hedge")
TYPE barrier_fence IGNORE
= WAY AREA ("barrier"=="fence")
IGNORESEALAND
TYPE barrier_wall IGNORE
= WAY AREA ("barrier"=="wall")
TYPE barrier_ditch
IGNORE
= WAY AREA ("barrier"=="ditch")
TYPE barrier_retaining_wall
IGNORE
= WAY AREA ("barrier"=="retaining_wall")
IGNORESEALAND
TYPE barrier_city_wall IGNORE
= WAY AREA ("barrier"=="city_wall" OR "historic"=="citywalls")
{Name, NameAlt, Width}
TYPE barrier_bollard
IGNORE
= NODE WAY ("barrier"=="bollard")
TYPE barrier_cycle_barrier
IGNORE
= NODE ("barrier"=="cycle_barrier")
TYPE barrier_block
IGNORE
= NODE ("barrier"=="block")
TYPE barrier_cattle_grid
IGNORE
= NODE ("barrier"=="cattle_grid")
TYPE barrier_toll_booth
IGNORE
= NODE ("barrier"=="toll_booth")
TYPE barrier_entrance
IGNORE
= NODE ("barrier"=="entrance")
TYPE barrier_gate
IGNORE
= NODE WAY ("barrier"=="gate")
TYPE barrier_lift_gate
IGNORE
= NODE ("barrier"=="lift_gate")
TYPE barrier_stile
IGNORE
= NODE ("barrier"=="stile")
TYPE barrier_sally_port
IGNORE
= NODE ("barrier"=="sally_port")
TYPE barrier_kent_carriage_gate
IGNORE
= NODE ("barrier"=="kent_carriage_gate")
// Types we currently ignore
// This does increase the size of nodes data too much
TYPE building_entrance IGNORE
= NODE ("building"=="entrance" OR EXISTS "entrance")
TYPE street_any IGNORE
= RELATION ("type"=="street")
TYPE tunnel_any IGNORE
= RELATION ("type"=="tunnel")
TYPE bridge_any IGNORE
= RELATION ("type"=="bridge")
TYPE dual_carriageway_any IGNORE
= RELATION ("type"=="dual_carriageway")
TYPE waterway_any IGNORE
= RELATION ("type"=="waterway")
TYPE wayparts_any IGNORE
= RELATION ("type"=="wayparts")
TYPE associated_street_any IGNORE
= RELATION ("type"=="associatedStreet")
TYPE enforcement_any IGNORE
= RELATION ("type"=="enforcement")
TYPE roadAccess_any IGNORE
= RELATION ("type"=="roadAccess")
TYPE junction_any IGNORE
= RELATION ("type"=="junction")
TYPE label_any IGNORE
= RELATION ("type"=="label")
TYPE composite_Attribute_any IGNORE
= RELATION ("type"=="composite_Attribute")
TYPE segmented_tag_any IGNORE
= RELATION ("type"=="segmented_tag")
TYPE building_any IGNORE
= RELATION ("type"=="building")
TYPE related_building_any IGNORE
= RELATION ("type"=="relatedBuilding")
TYPE site_any IGNORE
= RELATION ("type"=="site")
TYPE station_any IGNORE
= RELATION ("type"=="station")
TYPE railway_halt_any IGNORE
= RELATION ("type"=="railway_halt")
TYPE line_any IGNORE
= RELATION ("type"=="line")
TYPE public_transport_any IGNORE
= RELATION ("type"=="public_transport")
TYPE public_transport_stop_area_group IGNORE
= RELATION ("public_transport"=="stop_area_group")
TYPE collection_any IGNORE
= RELATION ("type"=="collection")
TYPE network_any IGNORE
= RELATION ("type"=="network")
TYPE route_any IGNORE
= RELATION ("type"=="route")
TYPE routemaster_any IGNORE
= RELATION ("type"=="route_master")
TYPE superroute_any IGNORE
= RELATION ("type"=="superroute")
TYPE netzwolf_route_any IGNORE
= RELATION ("type"=="netzwolf-route")
TYPE netzwolf_routemaster_any IGNORE
= RELATION ("type"=="netzwolf:route_master")
TYPE address IGNORE
= RELATION ("type"=="address")
TYPE border IGNORE
= AREA RELATION ("type"=="border")
TYPE postal_code IGNORE
= AREA RELATION ("type"=="postal_code")
TYPE organization IGNORE
= AREA RELATION ("type"=="organization")
TYPE boundary_civil IGNORE
= AREA ("boundary"=="civil")
TYPE boundary_national_park IGNORE
= WAY AREA RELATION ("boundary"=="national_park")
TYPE boundary_maritime IGNORE
= AREA RELATION ("boundary"=="maritime")
TYPE boundary_political IGNORE
= AREA ("boundary"=="political")
TYPE boundary_postal_code IGNORE
= AREA RELATION ("boundary"=="postal_code")
TYPE place_any IGNORE
= RELATION ("type"=="place")
TYPE amt_any IGNORE
= RELATION ("type"=="amt")
TYPE suburb_any IGNORE
= RELATION ("type"=="suburb")
TYPE city_any IGNORE
= RELATION ("type"=="city")
TYPE town_any IGNORE
= RELATION ("type"=="town")
TYPE municipality_any IGNORE
= RELATION ("type"=="municipality")
TYPE district_any IGNORE
= RELATION ("type"=="district")
TYPE county_any IGNORE
= RELATION ("type"=="county")
TYPE state_any IGNORE
= RELATION ("type"=="state")
TYPE tmc_any IGNORE
= AREA (EXISTS "TMC:cid_58:tabcd_1:Class") OR RELATION ("type"=="tmc" OR "type"=="TMC")
TYPE lez_any IGNORE
= RELATION ("type"=="LEZ")
TYPE group_any IGNORE
= RELATION ("type"=="group")
TYPE set_any IGNORE
= RELATION ("type"=="set")
TYPE compound_any IGNORE
= RELATION ("type"=="compound")
END
@zedxxx
Copy link
Author

zedxxx commented Sep 25, 2020

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment