diff --git a/doc/buildings.svg b/doc/buildings.svg
index b1f5a0c..12dec6c 100644
--- a/doc/buildings.svg
+++ b/doc/buildings.svg
@@ -1,2 +1,2 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/doc/colors.svg b/doc/colors.svg
index 9753f93..4a6af1d 100644
--- a/doc/colors.svg
+++ b/doc/colors.svg
@@ -1,2 +1,2 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/doc/fitness.svg b/doc/fitness.svg
index 9d4ad8b..f1f53b7 100644
--- a/doc/fitness.svg
+++ b/doc/fitness.svg
@@ -1,2 +1,2 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/doc/lanes.svg b/doc/lanes.svg
index 5d18eff..23f19df 100644
--- a/doc/lanes.svg
+++ b/doc/lanes.svg
@@ -1,2 +1,2 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/doc/playground.svg b/doc/playground.svg
index 4ca91f8..a1db8f4 100644
--- a/doc/playground.svg
+++ b/doc/playground.svg
@@ -1,2 +1,2 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/doc/power.svg b/doc/power.svg
index f370522..1324bf5 100644
--- a/doc/power.svg
+++ b/doc/power.svg
@@ -1,2 +1,2 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/doc/surveillance.svg b/doc/surveillance.svg
index a4f8552..ae74e7b 100644
--- a/doc/surveillance.svg
+++ b/doc/surveillance.svg
@@ -1,2 +1,2 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/doc/trees.svg b/doc/trees.svg
index e7791e3..31f39af 100644
--- a/doc/trees.svg
+++ b/doc/trees.svg
@@ -1,2 +1,2 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/doc/viewpoints.svg b/doc/viewpoints.svg
index 961e86a..8484eef 100644
--- a/doc/viewpoints.svg
+++ b/doc/viewpoints.svg
@@ -1,2 +1,2 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/map_machine/constructor.py b/map_machine/constructor.py
index 6bec3d2..144afa5 100644
--- a/map_machine/constructor.py
+++ b/map_machine/constructor.py
@@ -21,7 +21,12 @@
from map_machine.figure import StyledFigure
from map_machine.geometry.coastline import WaterPolygon, _point_in_polygon
from map_machine.geometry.crop import crop_multipolygon, crop_way
-from map_machine.map_configuration import DrawingMode, MapConfiguration
+from map_machine.map_configuration import (
+ BuildingMode,
+ DrawingMode,
+ MapConfiguration,
+ RoadMode,
+)
from map_machine.osm.osm_reader import (
OSMData,
OSMNode,
@@ -35,7 +40,6 @@
from map_machine.pictogram.point import Point
from map_machine.scheme import LineStyle, RoadMatcher, Scheme
from map_machine.text import Label, TextConstructor
-from map_machine.ui.cli import BuildingMode, RoadMode
from map_machine.util import MinMax
if TYPE_CHECKING:
diff --git a/map_machine/doc/preview.py b/map_machine/doc/preview.py
index 3ff5e4f..83c33ea 100755
--- a/map_machine/doc/preview.py
+++ b/map_machine/doc/preview.py
@@ -25,6 +25,8 @@
from map_machine.scheme import Scheme
from map_machine.workspace import workspace
+logger: logging.Logger = logging.getLogger(__name__)
+
doc_path: Path = Path("doc")
cache: Path = Path("cache")
@@ -101,6 +103,7 @@ def main(id_: str | None) -> None:
be drawn.
"""
if REMOVED and (id_ is None or id_ == "fitness"):
+ logger.info("fitness")
draw_around_point(
np.array((55.75277, 37.40856)),
"fitness",
@@ -109,6 +112,7 @@ def main(id_: str | None) -> None:
)
if id_ is None or id_ == "power":
+ logger.info("power")
draw_around_point(
np.array((52.5622, 12.94)),
"power",
@@ -116,6 +120,7 @@ def main(id_: str | None) -> None:
)
if REMOVED and (id_ is None or id_ == "playground"):
+ logger.info("playground")
draw_around_point(
np.array((52.47388, 13.43826)),
"playground",
@@ -127,6 +132,7 @@ def main(id_: str | None) -> None:
# - Berlin: (52.47604/13.43701), (52.47388/13.43826)*,
if id_ is None or id_ == "surveillance":
+ logger.info("surveillance")
draw_around_point(
np.array((52.50892, 13.3244)),
"surveillance",
@@ -138,6 +144,7 @@ def main(id_: str | None) -> None:
)
if id_ is None or id_ == "viewpoints":
+ logger.info("viewpoints")
draw_around_point(
np.array((52.421, 13.101)),
"viewpoints",
@@ -150,6 +157,7 @@ def main(id_: str | None) -> None:
)
if id_ is None or id_ == "buildings":
+ logger.info("buildings")
draw_around_point(
np.array((-26.19049, 28.05605)),
"buildings",
@@ -157,6 +165,7 @@ def main(id_: str | None) -> None:
)
if id_ is None or id_ == "trees":
+ logger.info("trees")
draw_around_point(
np.array((55.751, 37.628)),
"trees",
@@ -167,6 +176,7 @@ def main(id_: str | None) -> None:
)
if id_ is None or id_ == "time":
+ logger.info("time")
draw_around_point(
np.array((55.7655, 37.6055)),
"time",
@@ -179,6 +189,7 @@ def main(id_: str | None) -> None:
)
if id_ is None or id_ == "author":
+ logger.info("author")
draw_around_point(
np.array((55.7655, 37.6055)),
"author",
@@ -192,6 +203,7 @@ def main(id_: str | None) -> None:
)
if id_ is None or id_ == "colors":
+ logger.info("colors")
draw_around_point(
np.array((48.87422, 2.377)),
"colors",
@@ -204,9 +216,11 @@ def main(id_: str | None) -> None:
)
if id_ is None or id_ == "lanes":
+ logger.info("lanes")
draw_around_point(np.array((47.61224, -122.33866)), "lanes")
if id_ is None or id_ == "indoor":
+ logger.info("indoor")
draw_around_point(
np.array((4.5978, -74.07507)),
"indoor",
diff --git a/map_machine/doc/taginfo.py b/map_machine/doc/taginfo.py
index c0beec9..4d5fa31 100644
--- a/map_machine/doc/taginfo.py
+++ b/map_machine/doc/taginfo.py
@@ -59,6 +59,7 @@ def __init__(self, path: Path, scheme: Scheme) -> None:
ids: list[str] = [
(shape if isinstance(shape, str) else shape["shape"])
for shape in matcher.shapes
+ if isinstance(shape, str) or "shape" in shape
]
icon_id: str = "___".join(ids)
if value == "*":
diff --git a/map_machine/feature/building.py b/map_machine/feature/building.py
index 1ae2e15..579000c 100644
--- a/map_machine/feature/building.py
+++ b/map_machine/feature/building.py
@@ -46,13 +46,13 @@ def __init__(
self.default_fill: Color
self.default_stroke: Color
if self.is_construction:
- self.default_fill = scheme.get_color("building_construction_color")
+ self.default_fill = scheme.get_color("$building_construction_color")
self.default_stroke = scheme.get_color(
- "building_construction_border_color"
+ "$building_construction_border_color"
)
else:
- self.default_fill = scheme.get_color("building_color")
- self.default_stroke = scheme.get_color("building_border_color")
+ self.default_fill = scheme.get_color("$building_color")
+ self.default_stroke = scheme.get_color("$building_border_color")
self.fill: Color
self.stroke: Color
@@ -61,8 +61,8 @@ def __init__(
self.stroke = Color(self.fill)
self.stroke.set_luminance(self.fill.get_luminance() * 0.85)
else:
- self.fill = scheme.get_color("building_color")
- self.stroke = scheme.get_color("building_border_color")
+ self.fill = scheme.get_color("$building_color")
+ self.stroke = scheme.get_color("$building_border_color")
self.parts: list[Segment] = []
@@ -80,15 +80,15 @@ def __init__(
self.wall_default_color: Color
if self.is_construction:
self.wall_default_color = scheme.get_color(
- "wall_construction_color"
+ "$wall_construction_color"
)
else:
- self.wall_default_color = scheme.get_color("wall_color")
+ self.wall_default_color = scheme.get_color("$wall_color")
self.wall_color: Color = self.wall_default_color
material: str | None = tags.get("building:material")
- if material and material in scheme.material_colors:
- self.wall_color = Color(scheme.material_colors[material])
+ if material and material in scheme.variables:
+ self.wall_color = scheme.get_color(f"${material}")
if color := tags.get("building:colour"):
self.wall_color = scheme.get_color(color)
if color := tags.get("colour"):
diff --git a/map_machine/feature/direction.py b/map_machine/feature/direction.py
index 017f214..955b46b 100644
--- a/map_machine/feature/direction.py
+++ b/map_machine/feature/direction.py
@@ -203,7 +203,7 @@ def draw(self, svg: Drawing, scheme: Scheme) -> None:
except (ValueError, TypeError):
pass
direction_radius = 50.0
- direction_color = scheme.get_color("direction_camera_color")
+ direction_color = scheme.get_color("$direction_camera_color")
elif self.get_tag("traffic_sign") == "stop":
direction = self.get_tag("direction")
direction_radius = 25.0
@@ -211,7 +211,7 @@ def draw(self, svg: Drawing, scheme: Scheme) -> None:
else:
direction = self.get_tag("direction")
direction_radius = 50.0
- direction_color = scheme.get_color("direction_view_color")
+ direction_color = scheme.get_color("$direction_view_color")
is_revert_gradient = True
if not direction:
diff --git a/map_machine/feature/road.py b/map_machine/feature/road.py
index 757a654..d94eb2c 100644
--- a/map_machine/feature/road.py
+++ b/map_machine/feature/road.py
@@ -592,11 +592,11 @@ def get_border_color(self) -> Color:
message: str = "Road border color is not set."
raise ValueError(message)
if self.tags.get("bridge") == "yes":
- color = self.scheme.get_color("bridge_color")
+ color = self.scheme.get_color("$bridge_color")
if self.tags.get("ford") == "yes":
- color = self.scheme.get_color("ford_color")
+ color = self.scheme.get_color("$ford_color")
if self.tags.get("embankment") == "yes":
- color = self.scheme.get_color("embankment_color")
+ color = self.scheme.get_color("$embankment_color")
return color
def draw_lanes(self, svg: Drawing, color: Color | None = None) -> None:
diff --git a/map_machine/feature/tree.py b/map_machine/feature/tree.py
index 9900533..c54f738 100644
--- a/map_machine/feature/tree.py
+++ b/map_machine/feature/tree.py
@@ -37,12 +37,14 @@ def draw(self, svg: Drawing, flinger: Flinger, scheme: Scheme) -> None:
else:
radius = 2.0
- color: Color = scheme.get_color("evergreen_color")
+ color: Color = scheme.get_color("$evergreen_color")
svg.add(svg.circle(self.point, radius * scale, fill=color, opacity=0.3))
if (circumference := self.get_float("circumference")) is not None:
radius = circumference / 2.0 / np.pi
circle = svg.circle(
- self.point, radius * scale, fill=scheme.get_color("trunk_color")
+ self.point,
+ radius * scale,
+ fill=scheme.get_color("$trunk_color"),
)
svg.add(circle)
diff --git a/map_machine/map_configuration.py b/map_machine/map_configuration.py
index b951f4d..e8d6c0b 100644
--- a/map_machine/map_configuration.py
+++ b/map_machine/map_configuration.py
@@ -90,13 +90,29 @@ class MapConfiguration:
def from_options(
cls, scheme: Scheme, options: argparse.Namespace, zoom_level: float
) -> MapConfiguration:
- """Initialize from command-line options."""
+ """Initialize from command-line options.
+
+ Scheme YAML values are the defaults. CLI options override them
+ when explicitly provided (i.e. not `None`).
+ """
+
+ def _resolve(
+ cli_value: Any, # noqa: ANN401
+ scheme_value: Any, # noqa: ANN401
+ enum_cls: type[Enum] | None = None,
+ ) -> Any: # noqa: ANN401
+ if cli_value is None:
+ return scheme_value
+ if enum_cls is not None:
+ return enum_cls(cli_value)
+ return cli_value
+
return cls(
scheme,
- DrawingMode(options.mode),
- BuildingMode(options.buildings),
- RoadMode(options.roads),
- LabelMode(options.label_mode),
+ _resolve(options.mode, scheme.drawing_mode, DrawingMode),
+ _resolve(options.buildings, scheme.building_mode, BuildingMode),
+ _resolve(options.roads, scheme.road_mode, RoadMode),
+ _resolve(options.label_mode, scheme.label_mode, LabelMode),
zoom_level,
options.overlap,
options.level,
@@ -104,11 +120,11 @@ def from_options(
options.tooltips,
options.country,
options.ignore_level_matching,
- options.roofs,
- options.building_colors,
+ _resolve(options.roofs, scheme.roofs),
+ _resolve(options.building_colors, scheme.building_colors),
options.show_overlapped,
show_credit=not options.hide_credit,
- draw_background=options.background,
+ draw_background=_resolve(options.background, scheme.background),
crop_ways=options.crop,
crop_margin=options.crop_margin,
)
diff --git a/map_machine/mapper.py b/map_machine/mapper.py
index dc6fbd4..7cd7ebb 100644
--- a/map_machine/mapper.py
+++ b/map_machine/mapper.py
@@ -27,7 +27,12 @@
)
from map_machine.geometry.flinger import Flinger, MercatorFlinger
from map_machine.geometry.vector import Polyline
-from map_machine.map_configuration import LabelMode, MapConfiguration
+from map_machine.map_configuration import (
+ BuildingMode,
+ LabelMode,
+ MapConfiguration,
+ RoadMode,
+)
from map_machine.osm.osm_getter import (
NetworkError,
find_incomplete_relations,
@@ -38,7 +43,6 @@
from map_machine.osm.osm_reader import OSMData, OSMNode
from map_machine.pictogram.point import Occupied, Point
from map_machine.scheme import Scheme
-from map_machine.ui.cli import BuildingMode, RoadMode
from map_machine.workspace import workspace
if TYPE_CHECKING:
@@ -75,7 +79,9 @@ def __init__(
self.scheme: Scheme = configuration.scheme
self.configuration: MapConfiguration = configuration
- self.background_color: Color = self.scheme.get_color("background_color")
+ self.background_color: Color = self.scheme.get_color(
+ "$background_color"
+ )
if color := self.configuration.background_color():
self.background_color = color
@@ -136,27 +142,24 @@ def draw(self, constructor: Constructor) -> None:
path.update(figure.line_style.style)
self.svg.add(path)
- if self.scheme.draw_trees:
+ if self.scheme.trees:
for tree in constructor.trees:
tree.draw(self.svg, self.flinger, self.scheme)
- if self.scheme.draw_craters:
+ if self.scheme.craters:
for crater in constructor.craters:
crater.draw(self.svg, self.flinger)
- if self.scheme.draw_buildings:
- self.draw_buildings(
- constructor,
- use_building_colors=self.configuration.use_building_colors,
- )
+ if self.configuration.building_mode != BuildingMode.NO:
+ self.draw_buildings(constructor)
- if self.scheme.draw_directions:
+ if self.scheme.directions:
for direction_sector in constructor.direction_sectors:
direction_sector.draw(self.svg, self.scheme)
# All other points
- if self.scheme.draw_nodes:
+ if self.scheme.nodes:
occupied: Occupied | None
if self.configuration.overlap == 0:
occupied = None
@@ -191,12 +194,11 @@ def draw(self, constructor: Constructor) -> None:
if self.configuration.show_credit:
self.draw_credits(constructor.flinger.size)
- def draw_buildings(
- self, constructor: Constructor, *, use_building_colors: bool
- ) -> None:
+ def draw_buildings(self, constructor: Constructor) -> None:
"""Draw buildings: shade, walls, and roof."""
if self.configuration.building_mode == BuildingMode.NO:
return
+ use_building_colors: bool = self.configuration.use_building_colors
if self.configuration.building_mode == BuildingMode.FLAT:
for building in constructor.buildings:
building.draw(
@@ -346,7 +348,9 @@ def render_map(arguments: argparse.Namespace) -> None:
fatal(f"Scheme `{arguments.scheme}` not found.")
sys.exit(1)
else:
- scheme: Scheme = Scheme.from_file(scheme_path)
+ scheme: Scheme = Scheme.from_file(
+ scheme_path, workspace.find_scheme_path
+ )
if scheme is None:
fatal(f"Failed to load scheme from `{arguments.scheme}`.")
sys.exit(1)
diff --git a/map_machine/osm/osm_reader.py b/map_machine/osm/osm_reader.py
index e2bbf78..0adcbce 100644
--- a/map_machine/osm/osm_reader.py
+++ b/map_machine/osm/osm_reader.py
@@ -115,12 +115,17 @@ def verify(self) -> bool:
"""Check key and value types."""
is_well_formed: bool = True
- for value, key in self.tags.items():
+ for key, value in self.tags.items():
if not isinstance(key, str):
- logger.warning("Not string key %s.", key)
+ logger.warning("Non-string key `%s`.", key)
is_well_formed = False
- if not isinstance(value, str):
- logger.warning("Not string value %s.", value)
+ if isinstance(value, list):
+ for value_element in value:
+ if not isinstance(value_element, str):
+ logger.warning("Non-string value `%s`.", value)
+ is_well_formed = False
+ elif not isinstance(value, str):
+ logger.warning("Non-string value `%s`.", value)
is_well_formed = False
return is_well_formed
diff --git a/map_machine/pictogram/icon_collection.py b/map_machine/pictogram/icon_collection.py
index d677cd4..c5d68d5 100644
--- a/map_machine/pictogram/icon_collection.py
+++ b/map_machine/pictogram/icon_collection.py
@@ -64,8 +64,11 @@ def add(current_set: list[dict[str, str]]) -> None:
"""Construct icon and add it to the list."""
specifications: list[ShapeSpecification] = []
for shape_specification in current_set:
- if "#" in shape_specification["shape"]:
- return
+ if (
+ "shape" not in shape_specification
+ or "#" in shape_specification["shape"]
+ ):
+ continue
specifications.append(
scheme.get_shape_specification(shape_specification)
)
diff --git a/map_machine/scheme.py b/map_machine/scheme.py
index 2d4e9cf..7cda987 100644
--- a/map_machine/scheme.py
+++ b/map_machine/scheme.py
@@ -14,6 +14,12 @@
from roentgen.icon import IconSpecification, ShapeSpecification
from map_machine.feature.direction import DirectionSet
+from map_machine.map_configuration import (
+ BuildingMode,
+ DrawingMode,
+ LabelMode,
+ RoadMode,
+)
from map_machine.osm.osm_reader import Tagged, Tags
from map_machine.pictogram.icon import (
DEFAULT_SHAPE_ID,
@@ -22,6 +28,7 @@
)
if TYPE_CHECKING:
+ from collections.abc import Callable
from pathlib import Path
__author__ = "Sergey Vartanov"
@@ -71,6 +78,11 @@ def is_matched_tag(
return MatchingType.MATCHED_BY_WILDCARD, []
if tags[matcher_tag_key] == matcher_tag_value:
return MatchingType.MATCHED, []
+ if (
+ isinstance(matcher_tag_value, list)
+ and tags[matcher_tag_key] in matcher_tag_value
+ ):
+ return MatchingType.MATCHED, []
if isinstance(matcher_tag_value, str) and matcher_tag_value.startswith("^"):
matcher: re.Match | None = re.match(
matcher_tag_value, tags[matcher_tag_key]
@@ -256,7 +268,7 @@ def get_clean_shapes(self) -> list[str] | None:
"""Get list of shape identifiers for shapes."""
if not self.shapes:
return None
- return [x["shape"] for x in self.shapes]
+ return [x["shape"] for x in self.shapes if "shape" in x]
@dataclass
@@ -280,12 +292,18 @@ def from_structure(
if "style" in structure:
style: dict[str, Any] = structure["style"]
for key, value in style.items():
- if str(value).endswith("_color"):
- way_matcher.style[key] = scheme.get_color(value).hex.upper()
+ if str(value).startswith("$"):
+ if key in ("fill", "stroke"):
+ way_matcher.style[key] = scheme.get_color(
+ value
+ ).hex.upper()
+ else:
+ way_matcher.style[key] = scheme.get_variable(value)
else:
way_matcher.style[key] = value
- way_matcher.priority = structure.get("priority", 0.0)
+ priority = structure.get("priority", 0.0)
+ way_matcher.priority = scheme.get_value(priority)
way_matcher.parallel_offset = structure.get("parallel_offset", 0.0)
return way_matcher
@@ -316,7 +334,7 @@ def from_structure(
road_matcher.border_color = Color(
scheme.get_color(structure["border_color"])
)
- road_matcher.color = scheme.get_color("road_color")
+ road_matcher.color = scheme.get_color("$road_color")
if "color" in structure:
road_matcher.color = Color(scheme.get_color(structure["color"]))
road_matcher.default_width = structure["default_width"]
@@ -333,6 +351,78 @@ def get_priority(self, tags: Tags) -> float:
return 1000.0 * layer + self.priority
+def _merge_contents(
+ base: dict[str, Any], overlay: dict[str, Any]
+) -> dict[str, Any]:
+ """Merge two scheme content dicts.
+
+ Lists are concatenated, dicts are merged (overlay wins on key
+ conflicts), and scalar values are overridden by the overlay.
+ """
+ merged: dict[str, Any] = {}
+ for key in set(base) | set(overlay):
+ if key not in overlay:
+ merged[key] = base[key]
+ elif key not in base:
+ merged[key] = overlay[key]
+ elif isinstance(base[key], list) and isinstance(overlay[key], list):
+ merged[key] = base[key] + overlay[key]
+ elif isinstance(base[key], dict) and isinstance(overlay[key], dict):
+ merged[key] = {**base[key], **overlay[key]}
+ else:
+ merged[key] = overlay[key]
+ return merged
+
+
+def _load_with_includes(
+ file_name: Path,
+ find_scheme_path: Callable[[str], Path | None] | None = None,
+) -> dict[str, Any]:
+ """Load a scheme YAML file, recursively resolving `include`.
+
+ :param file_name: path to the YAML scheme file.
+ :param find_scheme_path: callback that resolves a scheme identifier
+ (e.g. `"default"`) to a file path.
+ """
+ with file_name.open(encoding="utf-8") as input_file:
+ content: dict[str, Any] = yaml.safe_load(input_file.read())
+ if not content:
+ message: str = f"Scheme file {file_name} is empty."
+ raise ValueError(message)
+
+ includes: list[str] = content.pop("include", [])
+ if isinstance(includes, str):
+ includes = [includes]
+
+ base: dict[str, Any] = {}
+ for identifier in includes:
+ path: Path | None = None
+ if find_scheme_path is not None:
+ path = find_scheme_path(identifier)
+ if path is None:
+ path = file_name.parent / f"{identifier}.yml"
+ if not path.is_file():
+ message = f"Included scheme `{identifier}` not found."
+ raise FileNotFoundError(message)
+ base = _merge_contents(
+ base, _load_with_includes(path, find_scheme_path)
+ )
+
+ return _merge_contents(base, content)
+
+
+def _yaml_str(value: bool | str | float) -> str: # noqa: FBT001
+ """Convert a YAML value to string.
+
+ YAML parses bare `no` as `False` and `yes` as `True`. This function converts
+ booleans back to their string representation so that they can be used with
+ `Enum(value)` constructors.
+ """
+ if isinstance(value, bool):
+ return "yes" if value else "no"
+ return str(value)
+
+
class Scheme:
"""Map style.
@@ -341,8 +431,8 @@ class Scheme:
def __init__(self, content: dict[str, Any]) -> None:
self.node_matchers: list[NodeMatcher] = []
- if "node_icons" in content:
- for group in content["node_icons"]:
+ if "nodes" in content:
+ for group in content["nodes"]:
for element in group["tags"]:
self.node_matchers.append(
NodeMatcher.from_structure(element, group)
@@ -350,18 +440,30 @@ def __init__(self, content: dict[str, Any]) -> None:
options = content.get("options", {})
- self.draw_nodes: bool = options.get("draw_nodes", False)
+ self.nodes: bool = options.get("nodes", False)
+ self.trees: bool = options.get("trees", False)
+ self.craters: bool = options.get("craters", False)
+ self.directions: bool = options.get("directions", False)
- # Map features.
- self.draw_buildings: bool = options.get("draw_buildings", False)
- self.draw_trees: bool = options.get("draw_trees", False)
- self.draw_craters: bool = options.get("draw_craters", False)
- self.draw_directions: bool = options.get("draw_directions", False)
-
- self.colors: dict[str, str] = content.get("colors", {})
- self.material_colors: dict[str, str] = content.get(
- "material_colors", {}
+ self.building_mode: BuildingMode = BuildingMode(
+ _yaml_str(options.get("buildings", "flat"))
+ )
+ self.road_mode: RoadMode = RoadMode(
+ _yaml_str(options.get("roads", "simple"))
)
+ self.drawing_mode: DrawingMode = DrawingMode(
+ _yaml_str(options.get("mode", "normal"))
+ )
+ self.label_mode: LabelMode = LabelMode(
+ _yaml_str(options.get("labels", "main"))
+ )
+
+ self.roofs: bool = options.get("roofs", True)
+ self.building_colors: bool = options.get("building_colors", False)
+ self.background: bool = options.get("background", True)
+
+ self.variables: dict[str, str] = content.get("variables", {})
+ self.variables.update(content.get("material_colors", {}))
self.way_matchers: list[WayMatcher] = (
[WayMatcher.from_structure(x, self) for x in content["ways"]]
@@ -388,64 +490,78 @@ def __init__(self, content: dict[str, Any]) -> None:
self.cache: dict[str, tuple[IconSet, int]] = {}
@classmethod
- def from_file(cls, file_name: Path) -> Scheme:
+ def from_file(
+ cls,
+ file_name: Path,
+ find_scheme_path: Callable[[str], Path | None] | None = None,
+ ) -> Scheme:
"""Get scheme from file.
- :param file_name: name of the scheme file with tags, colors, and tag key
- specification
+ :param file_name: name of the scheme file with tags, variables, and
+ tag key specification
+ :param find_scheme_path: optional callback that resolves a scheme
+ identifier to a file path (used to resolve `include`
+ entries)
"""
- with file_name.open(encoding="utf-8") as input_file:
- content: dict[str, Any] = yaml.safe_load(input_file.read())
- if not content:
- message: str = "Scheme file is empty."
- raise ValueError(message)
- return cls(content)
-
- def get_color(self, color_string: str) -> Color:
+ content = _load_with_includes(file_name, find_scheme_path)
+ return cls(content)
+
+ def get_value(self, value: Any) -> Any: # noqa: ANN401
+ """Resolve variables."""
+ if isinstance(value, str) and value[0] == "$":
+ return self.get_value(self.get_variable(value))
+ return value
+
+ def get_variable(self, variable_name: str) -> Any: # noqa: ANN401
+ """Get variable value."""
+ return self.variables[variable_name[1:]]
+
+ def get_color(self, color_specification: str | dict) -> Color:
"""Get any color.
- Return color if the color is in scheme, otherwise return default color.
+ If `color_string` starts with `$`, strip the prefix and look up the
+ name in :pyattr:`variables`. Otherwise treat it as a literal color
+ (CSS name or hexidecimal value).
:param color_string: input color string representation
:return: color specification
"""
- if color_string in self.colors:
- specification: str | dict = self.colors[color_string]
- if isinstance(specification, str):
- return Color(self.colors[color_string])
-
- color: Color = self.get_color(specification["color"])
- if "darken" in specification:
- percent: float = float(specification["darken"])
+ if isinstance(color_specification, dict):
+ color: Color = self.get_color(color_specification["color"])
+ if "darken" in color_specification:
+ percent: float = float(color_specification["darken"])
color.set_luminance(color.get_luminance() * (1 - percent))
+ if "lighten" in color_specification:
+ percent: float = float(color_specification["lighten"])
+ color.set_luminance(color.get_luminance() * (1 + percent))
return color
- if color_string.lower() in self.colors:
- return Color(self.colors[color_string.lower()])
+ if color_specification.startswith("$"):
+ name: str = color_specification[1:]
+ if name in self.variables:
+ specification: str | dict = self.variables[name]
+ return self.get_color(specification)
try:
- return Color(color_string)
+ return Color(color_specification)
except (ValueError, AttributeError):
- logger.debug("Unknown color `%s`.", color_string)
- if "default" in self.colors:
- return Color(self.colors["default"])
+ logger.debug("Unknown color `%s`.", color_specification)
+ if "default" in self.variables:
+ return Color(self.variables["default"])
return DEFAULT_COLOR
def get_default_color(self) -> Color:
"""Get default color for a main icon."""
- return self.get_color("default")
+ return self.get_color("$default")
def get_extra_color(self) -> Color:
"""Get default color for an extra icon."""
- return self.get_color("extra")
+ return self.get_color("$extra")
def get(self, variable_name: str) -> str | float:
- """Get value of variable.
-
- FIXME: colors should be variables.
- """
- if variable_name in self.colors:
- return self.colors[variable_name]
+ """Get value of variable."""
+ if variable_name in self.variables:
+ return self.variables[variable_name]
return 0.0
def is_no_drawable(self, key: str, value: str) -> bool:
@@ -569,8 +685,8 @@ def get_icon(
if "material" in tags:
value: str = tags["material"]
- if value in self.material_colors:
- color = self.get_color(self.material_colors[value])
+ if value in self.variables:
+ color = self.get_color(f"${value}")
processed.add("material")
for tag_key, tag_value in tags.items():
@@ -585,7 +701,7 @@ def get_icon(
if not main_icon:
dot_spec: ShapeSpecification = ShapeSpecification(
- DEFAULT_SHAPE_ID, color=self.get_color("default")
+ DEFAULT_SHAPE_ID, color=self.get_color("$default")
)
main_icon = IconSpecification("", [dot_spec], "")
@@ -596,7 +712,7 @@ def get_icon(
if show_overlapped:
small_dot_spec: ShapeSpecification = ShapeSpecification(
DEFAULT_SMALL_SHAPE_ID,
- color=color if color else self.get_color("default"),
+ color=color if color else self.get_color("$default"),
)
default_icon = IconSpecification("", [small_dot_spec], "")
@@ -667,14 +783,15 @@ def get_shape_specification(
The structure is just shape string identifier or dictionary with keys:
shape (required), color (optional), and offset (optional).
"""
- color = color if color is not None else Color(self.colors["default"])
+ color = color if color is not None else Color(self.variables["default"])
offset: tuple[float, float] = (0.0, 0.0)
flip_horizontally: bool = False
flip_vertically: bool = False
use_outline: bool = True
+ shape_id: str = DEFAULT_SHAPE_ID
if "shape" in structure:
- shape_id: str = structure["shape"]
+ shape_id = structure["shape"]
if groups:
for key in groups:
shape_id = shape_id.replace(key, groups[key])
diff --git a/map_machine/scheme/carto.yml b/map_machine/scheme/carto.yml
new file mode 100644
index 0000000..1f8198e
--- /dev/null
+++ b/map_machine/scheme/carto.yml
@@ -0,0 +1,267 @@
+include:
+
+ - nodes
+ - roads
+ - ways
+ - keys
+
+options:
+
+ nodes: yes
+ trees: yes
+ craters: yes
+ directions: yes
+
+ buildings: flat
+ roads: simple
+ mode: normal
+ labels: main
+
+ roofs: yes
+ building_colors: no
+ background: yes
+
+variables:
+
+ # Default colors for icons.
+ default: "#444444"
+ extra: "#888888"
+
+ # Direction sector colors.
+ direction_view_color: "#C8E8FF"
+ direction_camera_color: "#0088FF"
+
+ # Main colors.
+ background_color: "#f2efe9"
+ road_color: "#FFFFFF"
+ road_border_color: "#CCCCCC"
+ text_color: "#444444"
+ text_main_color: "#000000"
+ text_outline_color: "#FFFFFF"
+
+ # Natural land.
+ # wheat_color
+ # wheat_border_color
+ # wheat_dark_color
+ # rye_color
+ # rye_dark_color
+ # oat_color
+ # oat_dark_color
+ # barley_color
+ # barley_border_color
+ # barley_dark_color
+ # sunflower_dark_color
+
+ # Buildings.
+ building_border_color: {color: $building_color, darken: 0.15}
+ building_color: "#d9d0c9"
+ # building_construction_border_color
+ # building_construction_color
+ construction_color: "#c7c7b4"
+
+ # Roads.
+ aeroway_color: "#bbbbcc"
+ # bridge_color
+ cycle_border_color: white
+ cycle_noaccess_color: "#9999ff"
+ cycle_color: blue
+ cycle_dasharray: 3,3
+ # embankment_color
+ # ford_color
+ foot_border_color: white
+ foot_border_width: 3.0
+ foot_color-noaccess: "#bbbbbb"
+ foot_color: salmon
+ foot_dasharray: 3,3
+ motorway_border_color: "#dc2a67"
+ motorway_color: "#e892a2"
+ primary_border_color: "#a06b00"
+ primary_color: "#fcd6a4"
+ secondary_border_color: "#707d05"
+ secondary_color: "#f7fabf"
+ tertiary_border_color: "#8f8f8f"
+ tertiary_color: "#ffffff"
+
+ # Node colors.
+ amenity_brown_color: "#734a08"
+ eat_color: "#C77400"
+ evergreen_color: {color: "#add19e", darken: 0.1}
+ decidious_color: {color: "#add19e", darken: 0.1}
+ sell_color: "#ac39ac"
+ sell_text_color: "#993399"
+ craft_color: $default
+ memorials_color: "#734a08"
+
+ # Land cover.
+ cemetery_color: "#aacbaf"
+ cemetery_opacity: 1.0
+ commercial_border_color: "#d1b2b0"
+ commercial_border_width: 1.0
+ commercial_color: "#f2dad9"
+ commercial_opacity: 1.0
+ golf_course_color: $campsite_color
+ mud: {rgba: [203, 177, 154, 0.3]}
+ # place_of_worship_outline: darken(@place_of_worship, 30%);
+ # power-line: darken(@industrial-line, 5%);
+ # power: darken(@industrial, 5%);
+ # societal_amenities_color: "#ffffe5"
+ # track: @pitch;
+ # wastewater_plant_border_color: @industrial-line;
+ # wastewater_plant_color: @industrial;
+ # water_works-line: @industrial-line;
+ # water_works: @industrial;
+ apron_color: "#dadae0"
+ bare_ground_color: "#eee5dc"
+ beach_color: "#fff1ba"
+ campsite_color: "#def6c0"
+ farmland_border_color: "#c7c9ae"
+ farmland_color: "#eef0d5"
+ # farmland_darker_color
+ industrial_border_color: "#c6b3c3"
+ industrial_border_width: 1.0
+ industrial_color: "#ebdbe8"
+ industrial_opacity: 1.0
+ military_color: "#ff5555"
+ military_opacity: 1.0
+ aboriginal: "#82643a"
+ airtransport: "#8461C4"
+ # allotments_color
+ barrier_color: "#3f3f3f"
+ # boundary_color
+ bridleway_border_color: white
+ bridleway_color-noaccess: "#aaddaa"
+ bridleway_color: green
+ # desert_color
+ dog_park_color: $leisure_color
+ # emergency_color
+ farmyard_border_color: "#d1b48c"
+ farmyard_color: "#f5dcba"
+ garages_color: "#dfddce"
+ # ferry_terminal_color
+ # foot_area_border_color
+ # foor_area_color
+ grass_color: "#cdebb0"
+ grass_border_color: "#cdebb0"
+ health_color: "#bf0000"
+ heath_color: "#d6d99f"
+ # hidden_color
+ industrial_border_color: "#d1b2b0"
+ industrial_color: "#ebdbe8"
+ # indoor_border_color
+ # indoor_color
+ # indoor_column_color
+ kindergarten_color: "#ffffe5"
+ kindergarten_opacity: 1.0
+ landform_color: "#d08f55"
+ leisure_color: {color: $park_color, lighten: 0.05}
+ leisure_green_color: {color: "#c8facc", darken: 0.6}
+ living_street_border_color: "#bbbbbb"
+ living_street_color: "#ededed"
+ man_made_color: "#666666"
+ marina_text_color: "#576ddf"
+ # meadow_border_color
+ # meadow_color
+ military_color: "#ff5555"
+ office_color: "#4863A0"
+ # orchard_border_color
+ orchard_color: "#aedfa3"
+ # outline_color
+ park_color: "#c8facc"
+ parking_border_color: {color: "#eeeeee", saturate: 0.2, darken: 0.4}
+ parking_color: "#eeeeee"
+ parking_node_color: "#4090d4"
+ parking_opacity: 1.0
+ parking_stroke_width: 1.0
+ path_border_color: white
+ pedestrian_border_color: "#999999"
+ pedestrian_color: "#dddde8"
+ pitch_border_color: "#88e0be"
+ pitch_color: "#88e0be"
+ place_of_worship_color: "#d0d0d0"
+ # platform_border_color
+ platform_color: "#bbbbbb"
+ playground_border_color: {color: $leisure_color, darken: 0.6}
+ playground_border_width: 0.3
+ playground_color: $leisure_color
+ protected_area_color: "#008000"
+ quarry_color: "#c5c3c3"
+ raceway_color: "#ffc0cb"
+ railway_border_color: "#c6b3c3"
+ railway_border_width: 1.0
+ railway_color: "#ebdbe8"
+ railway_opacity: 1.0
+ residential_area_border_color: "#b9b9b9"
+ residential_area_border_width: 1.0
+ residential_area_color: "#e0dfdf"
+ residential_area_opacity: 1.0
+ residential_border_color: "#bbbbbb"
+ residential_color: "#ffffff"
+ rest_area_color: "#efc8c8"
+ retail_border_color: "#d99c95"
+ retail_border_width: 0.5
+ retail_color: "#ffd6d1"
+ retail_opacity: 1.0
+ # ridge_color
+ road_border_color: "#bbbbbb"
+ # rock_color
+ # route_color
+ # runway_border_color
+ # runway_color
+ sand_color: "#f5e9c6"
+ school_color: "#ffffe5"
+ school_opacity: 1.0
+ # scree_color
+ service_border_color: "#bbbbbb"
+ service_color: "#ffffff"
+ steps_border_color: white
+ steps_noaccess_color: "#bbbbbb"
+ steps_color: salmon
+ # swimming_area_color
+ tourism_color: "#660033"
+ # taxiway_border_color
+ # taxiway_color
+ track_border_color: white
+ track_noaccess_color: "#e2c5bb"
+ track_color: "#996600"
+ track_grade_2_dasharray: 11,4
+ track_grade_3_dasharray: 7,5
+ track_grade_4_dasharray: 4,6
+ track_grade_5_dasharray: 2,8
+ track_grade_no_dasharray: 5,4,2,4
+ transportation_area_color: "#e9e7e2"
+ transportation_color: "#0092da"
+ transportation_text_color: "#0066ff"
+ tree_color: {color: "#add19e", darken: 0.1}
+ trunk_border_color: "#c84e2f"
+ trunk_color: "#f9b29c"
+ water_color: "#aad3df"
+ # accommodation-text: @transportation-text;
+ # advertising-grey: @man-made-icon;
+ # culture_color: "#734a08"
+ # gastronomy-text: darken(@gastronomy-icon, 5%);
+ # public_service_color: "#734a08"
+ # wetland_text_color: darken(#4aa5fa, 25%);
+ stadium_color: $leisure_color
+ stadium_opacity: 1.0
+ stadium_border_color: {color: $leisure_color, darken: 0.35}
+ stadium_border_width: 0.3
+ sports_centre_color: $leisure_color
+ sports_centre_border_color: {color: $leisure_color, darken: 0.35}
+ sports_centre_border_width: 0.3
+ water_park_color: $leisure_color
+ water_park_opacity: 1.0
+ water_park_border_color: {color: $leisure_color, darken: 0.35}
+ water_park_border_width: 0.3
+ wood_color: "#add19e"
+ village_green_color: $grass_color
+ wall_bottom_1_color: "#AAAAAA"
+ wall_bottom_2_color: "#C3C3C3"
+ wall_color: "#d9d0c9"
+ wall_construction_color: "#84807C"
+
+ # Colors not in W3C.
+ rose: "#FF007F" # Wikipedia.
+ slate_blue: "#6A5ACD" # W3C slateblue.
+ bronze: "#CD7F32"
+ concrete: "#AAAAAA"
+ glass: "#CCEEFF"
diff --git a/map_machine/scheme/dark.yml b/map_machine/scheme/dark.yml
new file mode 100644
index 0000000..dbe0542
--- /dev/null
+++ b/map_machine/scheme/dark.yml
@@ -0,0 +1,102 @@
+variables:
+
+ # Entity
+
+ default: "#CCCCCC"
+
+ direction_view_color: {color: "#C8E8FF", darken: 0.75}
+ direction_camera_color: "#0088FF"
+
+ background_color: "#222222"
+ road_color: "#000000"
+ text_color: "#DDDDDD"
+ text_main_color: "#ffffff"
+ text_outline_color: "#000000"
+
+ wheat_color: "#F0DCAA"
+ wheat_border_color: "#F4D67F"
+ wheat_dark_color: "#BF9340"
+ rye_color: "#E0CA96"
+ rye_dark_color: "#AE955D"
+ oat_color: "#EDDDB7"
+ oat_dark_color: "#C4894A"
+ barley_color: "#F3EEC4"
+ barley_border_color: "#D2CE9D"
+ barley_dark_color: "#908F62"
+ sunflower_dark_color: "#DEAC4A"
+
+ motorway_border_color: "#CC8800"
+ motorway_color: "#FFAA33"
+ primary_border_color: {color: "#AA8800", darken: 0.3}
+ primary_color: {color: "#FFDD66", darken: 0.75}
+ secondary_border_color: {color: "#BB9911", darken: 0.3}
+ secondary_color: {color: "#FFEE77", darken: 0.75}
+ tertiary_border_color: {color: "#CCAA22", darken: 0.3}
+ tertiary_color: {color: "#FFFF88", darken: 0.75}
+
+ allotments_color: "#D0E0D0"
+ beach_color: "#F0E0C0"
+ boundary_color: "#880088"
+ building_border_color: "#888888"
+ building_color: "#444444"
+ construction_color: {color: "#CCCCCC", darken: 0.75}
+ cycle_color: "#4444EE"
+ desert_color: "#F0E0D0"
+ decidious_color: "#FCAF3E"
+ emergency_color: "#DD2222"
+ evergreen_color: "#688C44"
+ farmland_color: "#FFEEBB"
+ farmland_border_color: "#DDCC99"
+ farmland_darker_color: "#998855"
+ ferry_terminal_color: "#AABBDD"
+ foot_area_color: "#222222"
+ foot_area_border_color: "#444444"
+ foot_border_color: "#000000"
+ foot_color: {color: "#B89A74", darken: 0.5}
+ grass_border_color: {color: "#BFD098", darken: 0.75}
+ grass_color: {color: "#CFE0A8", darken: 0.75}
+ hidden_color: "#FFFFFF"
+ indoor_border_color: "#C0B8B0"
+ indoor_color: "#E8E4E0"
+ meadow_border_color: "#BFD078"
+ meadow_color: "#CFE088"
+ orchard_color: "#B8DCA4"
+ orchard_border_color: "#98BC84"
+ outline_color: "#FFFFFF"
+ parking_color: {color: "#DDCC99", darken: 0.75}
+ park_color: {color: "#CFE0A8", darken: 0.75}
+ pitch_color: {color: "#AADDCC", darken: 0.75}
+ pitch_border_color: {color: "#88BBAA", darken: 0.75}
+ platform_border_color: "#AAAAAA"
+ platform_color: "#CCCCCC"
+ playground_border_color: {color: "#FFAA88", darken: 0.75}
+ playground_color: {color: "#FFDDCC", darken: 0.75}
+ ridge_color: "#000000"
+ road_border_color: "#444444"
+ rock_color: "#DDDDDD"
+ route_color: "#FFFFFF"
+ sand_color: "#E8E0C0"
+ scree_color: "#CCCCCC"
+ track_color: "#A88A64"
+ trunk_color: "#97612b"
+ tree_color: "#98AC64"
+ water_border_color: "#6688BB"
+ water_color: "#AACCFF"
+ wall_bottom_1_color: "#444444"
+ wall_bottom_2_color: "#222222"
+ wall_color_start: 0.0
+ wetland_color: "#BFE0D8"
+ wood_border_color: {color: "#A8BC74", darken: 0.75}
+ wood_color: {color: "#B8CC84", darken: 0.75}
+
+ runway_color: "#999399"
+ runway_border_color: {color: $runway_color, darken: 0.25}
+ taxiway_color: "#AAA4AA"
+ taxiway_border_color: {color: $taxiway_color, darken: 0.25}
+
+ sell_color: "#880088"
+
+ # Colors not in W3C
+
+ rose: "#FF007F" # Wikipedia
+ slate_blue: "#6A5ACD" # W3C slateblue
\ No newline at end of file
diff --git a/map_machine/scheme/default.yml b/map_machine/scheme/default.yml
index d5b6461..1f6a70c 100644
--- a/map_machine/scheme/default.yml
+++ b/map_machine/scheme/default.yml
@@ -1,27 +1,45 @@
+include:
+
+ - nodes
+ - roads
+ - ways
+ - keys
+
options:
- draw_nodes: yes
- draw_trees: yes
- draw_craters: yes
- draw_buildings: yes
- draw_directions: yes
+ nodes: yes
+ trees: yes
+ craters: yes
+ directions: yes
-colors:
+ buildings: flat
+ roads: simple
+ mode: normal
+ labels: main
- # Entity
+ roofs: yes
+ building_colors: yes
+ background: yes
+variables:
+
+ # Default colors for icons.
default: "#444444"
extra: "#888888"
+ # Direction sector colors.
direction_view_color: "#C8E8FF"
direction_camera_color: "#0088FF"
+ # Main colors.
background_color: "#EEEEEE"
road_color: "#FFFFFF"
+ road_border_color: "#CCCCCC"
text_color: "#444444"
text_main_color: "#000000"
text_outline_color: "#FFFFFF"
+ # Natural land.
wheat_color: "#F0DCAA"
wheat_border_color: "#F4D67F"
wheat_dark_color: "#BF9340"
@@ -34,6 +52,28 @@ colors:
barley_dark_color: "#908F62"
sunflower_dark_color: "#DEAC4A"
+ # Buildings.
+ building_border_color: {color: $building_color, darken: 0.13}
+ building_color: "#F8F0E8"
+ building_color_flat: "#D4DADC"
+ building_construction_border_color: "#C4C0BC"
+ building_construction_color: "#D4D0CC"
+ construction_color: "#CCCCCC"
+
+ # Roads.
+ # aeroway_color
+ bridge_color: "#666666"
+ # cycle_border_color
+ # cycle_noaccess_color
+ cycle_color: "#4444EE"
+ cycle_dasharray: 8.0,2.0
+ embankment_color: "#666666"
+ ford_color: "#88BBFF"
+ foot_border_color: "#FFFFFF"
+ foot_border_width: 3.0
+ # foot_color-noaccess
+ foot_color: "#B89A74"
+ foot_dasharray: 7.0,3.0
motorway_border_color: "#CC8800"
motorway_color: "#FFAA33"
primary_border_color: "#AA8800"
@@ -43,3009 +83,191 @@ colors:
tertiary_border_color: "#CCAA22"
tertiary_color: "#FFFF88"
- bridge_color: "#666666"
- ford_color: "#88BBFF"
- embankment_color_color: "#666666"
-
- allotments_color: "#D0E0D0"
- beach_color: "#F0E0C0"
- boundary_color: "#880088"
- building_border_color: "#E0D0C0"
- building_color: "#F8F0E8"
- building_construction_border_color: "#C4C0BC"
- building_construction_color: "#D4D0CC"
- construction_color: "#CCCCCC"
- cycle_color: "#4444EE"
- desert_color: "#F0E0D0"
- decidious_color: "#FCAF3E"
- emergency_color: "#DD2222"
+ # Node colors.
+ amenity_brown_color: $default
+ eat_color: $default
evergreen_color: "#688C44"
- farmland_color: "#FFEEBB"
+ decidious_color: "#FCAF3E"
+ sell_color: "#AA00AA"
+ # sell_text_color
+ craft_color: "#008800"
+ memorials_color: $default
+
+ # Land cover.
+ cemetery_color: black
+ cemetery_opacity: 0.05
+ commercial_border_color: black
+ commercial_border_width: 0.0
+ commercial_color: black
+ commercial_opacity: 0.05
+ # golf_course_color
+ # mud
+ # place_of_worship_outline
+ # power-line
+ # power
+ # societal_amenities_color
+ # track
+ # wastewater_plant_border_color
+ # wastewater_plant_color
+ # water_works-line
+ # water_works
+ # apron_color
+ # bare_ground_color
+ beach_color: "#F0E0C0"
+ # campsite_color
farmland_border_color: "#DDCC99"
+ farmland_color: "#FFEEBB"
farmland_darker_color: "#998855"
+ industrial_border_color: black
+ industrial_border_width: 0.0
+ industrial_color: black
+ industrial_opacity: 0.05
+ military_color: black
+ military_opacity: 0.05
+ # aboriginal
+ # airtrnsport
+ allotments_color: "#D0E0D0"
+ # barrier_color
+ boundary_color: "#FF0000"
+ # bridleway_border_color
+ # bridleway_color-noaccess
+ # bridleway_color
+ desert_color: "#F0E0D0"
+ dog_park_color: $playground_color
+ emergency_color: "#DD2222"
+ # farmyard_border_color
+ # farmyard_color
+ # garages_color
ferry_terminal_color: "#AABBDD"
- foot_area_color: "#DDDDDD"
foot_area_border_color: "#BBBBBB"
- foot_border_color: "#FFFFFF"
- foot_color: "#B89A74"
- grass_border_color: "#BFD098"
- grass_color: "#CFE0A8"
+ foot_area_color: "#DDDDDD"
+ grass_color: "#C0F0A0"
+ grass_border_color: $grass_color
+ health_color: black
+ # heath_color
hidden_color: "#000000"
+ # industrial_border_color
+ # industrial_color
indoor_border_color: "#A0A890"
indoor_color: "#E8E4E0"
- indoor_column_color: {color: indoor_border_color, darken: 0.5}
+ indoor_column_color: {color: $indoor_border_color, darken: 0.5}
+ kindergarten_color: black
+ kindergarten_opacity: 0.05
+ # landform_color
+ # leisure_color
+ leisure_green_color: $default
+ # living_street_border_color
+ # living_street_color
+ # man_made_color
+ marina_text_color: $water_border_color
meadow_border_color: "#BFD078"
meadow_color: "#CFE088"
- orchard_color: "#B8DCA4"
+ # militaty_color
+ office_color: $default
orchard_border_color: "#98BC84"
+ orchard_color: "#B8DCA4"
outline_color: "#FFFFFF"
- parking_color: "#DDCC99"
- park_color: "#CFE0A8"
- pitch_color: "#AADDCC"
- pitch_border_color: "#88BBAA"
+ park_color: "#D0F8B0"
+ parking_border_color: none
+ parking_color: "#FAFAFA"
+ parking_node_color: black
+ parking_opacity: 0.5
+ parking_stroke_width: 0
+ # path_border_color
+ pedestrian_border_color: "#BBBBBB"
+ pedestrian_color: "#DDDDDD"
+ pitch_border_color: {color: $pitch_color, darken: 0.2}
+ pitch_color: "#AAEECC"
+ # place_of_worship_color
platform_border_color: "#AAAAAA"
platform_color: "#CCCCCC"
playground_border_color: "#FFAA88"
+ playground_border_width: 1.0
playground_color: "#FFDDCC"
+ # protected_area_color
+ # quarry_color
+ # raceway_color
+ railway_border_color: black
+ railway_border_width: 0.0
+ railway_color: black
+ railway_opacity: 0.05
+ residential_area_border_color: black
+ residential_area_border_width: 0.1
+ residential_area_color: black
+ residential_area_opacity: 0.05
+ # residential_border_colo
+ # residential_color
+ # rest_area_color
+ retail_border_color: black
+ retail_border_width: 0.0
+ retail_color: "#FF6600"
+ retail_opacity: 0.05
ridge_color: "#000000"
- road_border_color: "#CCCCCC"
+ # road_border_color
rock_color: "#DDDDDD"
route_color: "#FFFFFF"
+ runway_border_color: {color: $runway_color, darken: 0.25}
+ runway_color: "#999399"
sand_color: "#E8E0C0"
+ school_color: black
+ school_opacity: 0.05
scree_color: "#CCCCCC"
- track_color: "#A88A64"
- trunk_color: "#97612b"
- tree_color: "#98AC64"
- village_green_color: "#DDEEBB"
- wall_bottom_1_color: "#AAAAAA"
- wall_bottom_2_color: "#C3C3C3"
- wall_color: "#E8E8E8"
- wall_construction_color: "#84807C"
- water_border_color: "#6688BB"
- water_color: "#80C8F0"
+ # service_border_color
+ # service_color
+ # steps_border_color
+ # steps_noaccess_color
+ # steps_color
swimming_area_color: "#80D0F0"
- wetland_color: "#BFE0D8"
- wood_border_color: "#A8BC74"
- wood_color: "#B8CC84"
-
- runway_color: "#999399"
- runway_border_color: {color: runway_color, darken: 0.25}
+ # tourism_color
+ taxiway_border_color: {color: $taxiway_color, darken: 0.25}
taxiway_color: "#AAA4AA"
- taxiway_border_color: {color: taxiway_color, darken: 0.25}
-
- sell_color: "#880088"
- craft_color: "#008800"
-
- # Colors not in W3C
+ # track_border_color
+ # track_noaccess_color
+ track_color: "#A88A64"
+ track_grade_2_dasharray: no
+ track_grade_3_dasharray: no
+ track_grade_4_dasharray: no
+ track_grade_5_dasharray: no
+ track_grade_no_dasharray: no
+ # transportation_area_color
+ transportation_color: $default
+ # transportation_text_color
+ tree_color: "#98AC64"
+ # trunk_border_color
+ trunk_color: "#97612b"
- rose: "#FF007F" # Wikipedia
- slate_blue: "#6A5ACD" # W3C slateblue
-colors_dark: # dark
- # Entity
- default: "#CCCCCC"
- direction_view_color: {color: "#C8E8FF", darken: 0.75}
- direction_camera_color: "#0088FF"
- background_color: "#222222"
- road_color: "#000000"
- text_color: "#DDDDDD"
- text_main_color: "#ffffff"
- text_outline_color: "#000000"
- wheat_color: "#F0DCAA"
- wheat_border_color: "#F4D67F"
- wheat_dark_color: "#BF9340"
- rye_color: "#E0CA96"
- rye_dark_color: "#AE955D"
- oat_color: "#EDDDB7"
- oat_dark_color: "#C4894A"
- barley_color: "#F3EEC4"
- barley_border_color: "#D2CE9D"
- barley_dark_color: "#908F62"
- sunflower_dark_color: "#DEAC4A"
-
- motorway_border_color: "#CC8800"
- motorway_color: "#FFAA33"
- primary_border_color: {color: "#AA8800", darken: 0.3}
- primary_color: {color: "#FFDD66", darken: 0.75}
- secondary_border_color: {color: "#BB9911", darken: 0.3}
- secondary_color: {color: "#FFEE77", darken: 0.75}
- tertiary_border_color: {color: "#CCAA22", darken: 0.3}
- tertiary_color: {color: "#FFFF88", darken: 0.75}
-
- allotments_color: "#D0E0D0"
- beach_color: "#F0E0C0"
- boundary_color: "#880088"
- building_border_color: "#888888"
- building_color: "#444444"
- construction_color: {color: "#CCCCCC", darken: 0.75}
- cycle_color: "#4444EE"
- desert_color: "#F0E0D0"
- decidious_color: "#FCAF3E"
- emergency_color: "#DD2222"
- evergreen_color: "#688C44"
- farmland_color: "#FFEEBB"
- farmland_border_color: "#DDCC99"
- farmland_darker_color: "#998855"
- ferry_terminal_color: "#AABBDD"
- foot_area_color: "#222222"
- foot_area_border_color: "#444444"
- foot_border_color: "#000000"
- foot_color: {color: "#B89A74", darken: 0.5}
- grass_border_color: {color: "#BFD098", darken: 0.75}
- grass_color: {color: "#CFE0A8", darken: 0.75}
- hidden_color: "#FFFFFF"
- indoor_border_color: "#C0B8B0"
- indoor_color: "#E8E4E0"
- meadow_border_color: "#BFD078"
- meadow_color: "#CFE088"
- orchard_color: "#B8DCA4"
- orchard_border_color: "#98BC84"
- outline_color: "#FFFFFF"
- parking_color: {color: "#DDCC99", darken: 0.75}
- park_color: {color: "#CFE0A8", darken: 0.75}
- pitch_color: {color: "#AADDCC", darken: 0.75}
- pitch_border_color: {color: "#88BBAA", darken: 0.75}
- platform_border_color: "#AAAAAA"
- platform_color: "#CCCCCC"
- playground_border_color: {color: "#FFAA88", darken: 0.75}
- playground_color: {color: "#FFDDCC", darken: 0.75}
- ridge_color: "#000000"
- road_border_color: "#444444"
- rock_color: "#DDDDDD"
- route_color: "#FFFFFF"
- sand_color: "#E8E0C0"
- scree_color: "#CCCCCC"
- track_color: "#A88A64"
- trunk_color: "#97612b"
- tree_color: "#98AC64"
+ village_green_color: "#DDEEBB"
+ wall_bottom_1_color: "#AAAAAA"
+ wall_bottom_2_color: "#C3C3C3"
+ wall_color: "#E8E8E8"
+ wall_construction_color: "#84807C"
water_border_color: "#6688BB"
- water_color: "#AACCFF"
- wall_bottom_1_color: "#444444"
- wall_bottom_2_color: "#222222"
- wall_color_start: 0.0
+ water_color: "#80C8F0"
wetland_color: "#BFE0D8"
- wood_border_color: {color: "#A8BC74", darken: 0.75}
- wood_color: {color: "#B8CC84", darken: 0.75}
-
- runway_color: "#999399"
- runway_border_color: {color: runway_color, darken: 0.25}
- taxiway_color: "#AAA4AA"
- taxiway_border_color: {color: taxiway_color, darken: 0.25}
-
- sell_color: "#880088"
-
- # Colors not in W3C
-
- rose: "#FF007F" # Wikipedia
- slate_blue: "#6A5ACD" # W3C slateblue
-
-carto_colors:
- building_border_color: {color: building_color, darken: 0.15}
- building_color: "#d9d0c9"
- cemetery_color: "#aacbaf"
- commercial_color: "#f2dad9"
- commercial_border_color: "#d1b2b0"
- grass_color: "#cdebb0"
- industrial_color: "#ebdbe8"
- industrial_border_color: "#d1b2b0"
- military_color: "#f55"
- park_color: "#c8facc"
- residential_color: "#e0dfdf"
- residential_border_color: "#b9b9b9"
- wood_color: "#add19e"
-
-material_colors:
+ wood_color: "#99DD77"
+ wood_border_color: "#A8BC74"
+ stadium_color: $grass_color
+ stadium_opacity: 0.5
+ stadium_border_color: black
+ stadium_border_width: 0.0
+ sports_centre_color: {color: $pitch_color, lighten: 0.1}
+ sports_centre_border_color: black
+ sports_centre_border_width: 0.0
+ water_park_color: $grass_color
+ water_park_opacity: 0.5
+ water_park_border_color: black
+ water_park_border_width: 0.0
+
+ # Colors not in W3C.
+ rose: "#FF007F" # Wikipedia.
+ slate_blue: "#6A5ACD" # W3C slateblue.
bronze: "#CD7F32"
concrete: "#AAAAAA"
glass: "#CCEEFF"
-
-node_icons:
-
- - group: "No draw"
- tags:
- - tags: {type: multipolygon}
- draw: false
- - tags: {place: "*"}
- draw: false
- - tags: {building: "yes"}
- draw: false
-
- - group: "Huge transport hubs"
- start_zoom_level: 10.0
- tags:
- - tags: {amenity: ferry_terminal}
- shapes: [anchor]
- - tags: {amenity: ferry_terminal, cargo: vehicle}
- shapes: [car_on_ferry]
- - tags: {amenity: ferry_terminal, cargo: passengers}
- shapes: [human_on_ferry]
- - tags: {aeroway: aerodrome}
- shapes: [plane]
- - tags: {aeroway: helipad}
- shapes: [h]
- - tags: {aeroway: spaceport}
- shapes: [rocket_on_launch_pad]
-
- - group: "Normal transport hubs"
- start_zoom_level: 11.0
- tags:
- - tags: {aeroway: launchpad}
- shapes: [rocket_flying]
- - tags: {aeroway: landingpad}
- shapes: [booster_landing]
- - tags: {highway: bus_station}
- shapes: [buses]
- - tags: {highway: bus_stop}
- shapes: [bus_stop]
- add_shapes: [bus]
- - tags: {railway: station}
- shapes: [train]
- - tags: {railway: station, station: subway, transport: subway}
- shapes: [train]
- - tags: {railway: subway_entrance}
- shapes: [train]
- - tags: {railway: subway_entrance, entrance: "yes"}
- shapes: [train]
- - tags: {public_transport: stop_position}
- shapes: [bus_stop]
- - tags: {railway: tram_station}
- shapes: [tram]
- - tags: {railway: tram_stop}
- shapes: [tram]
- - tags: {public_transport: platform}
- shapes: [bus_stop_sign]
- with_icon: [bus_stop_bench, bus_stop_shelter]
- over_icon: [platform]
- - tags: {highway: bus_stop, public_transport: platform}
- shapes: [bus_stop_sign]
- with_icon: [bus_stop_bench, bus_stop_shelter]
- over_icon: [platform]
- - tags: {highway: bus_stop, shelter: "yes"}
- shapes: [bus_stop_sign]
- under_icon: [bus_stop_sign]
- with_icon: [bus_stop_bench, platform]
- over_icon: [bus_stop_shelter]
- - tags: {highway: bus_stop, bench: "yes"}
- under_icon: [bus_stop_sign]
- with_icon: [bus_stop_shelter, platform]
- over_icon: [bus_stop_bench]
- - tags: {highway: stop}
- shapes: [stop]
- - tags: {amenity: taxi}
- shapes: [taxi]
-
- - group: "Big territory"
- start_zoom_level: 12.0
- tags:
- - tags: {leisure: fishing}
- shapes: [fishing_angle]
- - tags: {historic: archaeological_site}
- shapes: [amphora]
- - tags: {leisure: swimming_area}
- shapes: [swimming_area]
- - tags: {leisure: swimming_pool}
- shapes: [swimming_area]
- - tags: {sport: swimming}
- shapes: [swimming_area]
- - tags: {leisure: beach}
- shapes: [beach]
- - tags: {amenity: public_bath}
- shapes: [swimming_area]
- - tags: {leisure: golf_course}
- shapes: [golf_club_and_ball]
- - tags: {power: substation}
- shapes: [electricity]
- - tags: {plant: christmas_trees}
- shapes: [{shape: christmas_tree, color: orchard_border_color}]
- - tags: {crop: sunflower}
- shapes: [{shape: sunflower, color: sunflower_dark_color, outline: no}]
- - tags: {crop: barley}
- shapes: [{shape: ear_botany, color: barley_dark_color, outline: no}]
- - tags: {crop: rye}
- shapes: [{shape: ear_botany, color: rye_dark_color, outline: no}]
- - tags: {crop: wheat}
- shapes: [{shape: ear_botany, color: wheat_dark_color, outline: no}]
- - tags: {crop: rape}
- shapes: [{shape: rape, color: wheat_dark_color, outline: no}]
- - tags: {produce: apple}
- shapes: [{shape: apple, color: orchard_border_color}]
- - tags: {produce: christmas_trees}
- shapes: [{shape: christmas_tree, color: orchard_border_color}]
- - tags: {produce: pear}
- shapes: [{shape: pear, color: orchard_border_color}]
- - tags: {trees: apple_trees}
- shapes: [{shape: apple, color: orchard_border_color}]
- - tags: {trees: pear_trees}
- shapes: [{shape: pear, color: orchard_border_color}]
-
- - group: "Bigger objects"
- start_zoom_level: 13.0
- tags:
- - tags: {waterway: waterfall}
- shapes: [{shape: waterfall, color: water_border_color}]
- - tags: {natural: cliff}
- shapes: [cliff]
- - tags: {natural: peak}
- shapes: [triangle_small]
- - tags: {natural: saddle}
- shapes: [saddle]
- - tags: {natural: crater}
- exception: {diameter: "*"}
- shapes: [crater]
-
- - tags: {natural: volcano}
- shapes: [stratovolcano, {shape: smoke_2, offset: [0, -3]}]
-
- - tags: {natural: volcano, volcano:type: stratovolcano}
- shapes: [stratovolcano, {shape: smoke_2, offset: [0, -3]}]
- - tags: {natural: volcano, volcano:type: shield}
- shapes: [shield_volcano, {shape: smoke_2, offset: [0, -1]}]
- - tags: {natural: volcano, volcano:type: scoria}
- shapes: [volcanic_cone, {shape: smoke_2, offset: [0, -2]}]
-
- - tags: {natural: volcano, volcano:status: active}
- shapes: [stratovolcano, {shape: lava, offset: [0, -3]}]
- - tags: {natural: volcano, volcano:status: dormant}
- shapes: [stratovolcano, {shape: smoke, offset: [1, -3]}]
- - tags: {natural: volcano, volcano:status: extinct}
- shapes: [stratovolcano]
-
- - tags:
- natural: volcano
- volcano:type: stratovolcano
- volcano:status: active
- shapes: [stratovolcano, {shape: lava, offset: [0, -3]}]
- - tags:
- natural: volcano
- volcano:type: shield
- volcano:status: active
- shapes: [shield_volcano, {shape: lava, offset: [0, -1]}]
- - tags:
- natural: volcano
- volcano:type: scoria
- volcano:status: active
- shapes: [volcanic_cone, {shape: lava, offset: [0, -2]}]
- - tags:
- natural: volcano
- volcano:type: stratovolcano
- volcano:status: dormant
- shapes: [stratovolcano, {shape: smoke, offset: [1, -3]}]
- - tags:
- natural: volcano
- volcano:type: shield
- volcano:status: dormant
- shapes: [shield_volcano, {shape: smoke, offset: [1, -1]}]
- - tags:
- natural: volcano
- volcano:type: scoria
- volcano:status: dormant
- shapes: [volcanic_cone, {shape: smoke, offset: [1, -2]}]
- - tags:
- natural: volcano
- volcano:type: stratovolcano
- volcano:status: extinct
- shapes: [stratovolcano]
- - tags:
- natural: volcano
- volcano:type: shield
- volcano:status: extinct
- shapes: [shield_volcano]
- - tags:
- natural: volcano
- volcano:type: scoria
- volcano:status: extinct
- shapes: [volcanic_cone]
-
- - tags: {historic: castle}
- location_restrictions: {include: [jp]}
- shapes: [japan_castle]
- - tags: {historic: fort}
- shapes: [fort]
- - tags: {shop: mall}
- shapes: [bag]
- - tags: {shop: department_store}
- shapes: [bag]
- - tags: {shop: mall, building: "yes"}
- shapes: [bag]
- - tags: {leisure: water_park}
- shapes: [slide_and_water]
-
- - group: "Important big objects"
- start_zoom_level: 14.0
- tags:
- - tags: {amenity: fire_station}
- location_restrictions: {include: [jp]}
- shapes: [{shape: japan_fire_station, color: emergency_color}]
- - tags: {amenity: courthouse}
- shapes: [gavel]
- - tags: {amenity: police}
- location_restrictions: {include: [jp]}
- shapes: [japan_police_station]
- - tags: {amenity: police, name:en: Koban}
- location_restrictions: {include: [jp]}
- shapes: [japan_koban]
- - tags: {building: townhall}
- shapes: [townhall]
- - tags: {amenity: townhall}
- shapes: [townhall]
- - tags: {historic: city_gate}
- shapes: [city_gate]
- - tags: {amenity: pharmacy}
- shapes: [medicine_bottle]
- - tags: {amenity: embassy}
- shapes: [waving_flag]
- - tags: {office: diplomatic, diplomatic: embassy}
- shapes: [waving_flag]
- - tags: {man_made: monitoring_station, monitoring:weather: "yes"}
- shapes: [japan_weather_station]
- location_restrictions: {include: [jp]}
- - tags: {amenity: veterinary}
- shapes: [dog_and_cross]
- - tags: {tourism: apartment}
- shapes: [bed_with_floor_and_ceiling]
- - tags: {tourism: hotel}
- shapes: [bed]
- - tags: {building: hotel}
- shapes: [bed]
- - tags: {tourism: hostel}
- shapes: [two_beds]
- - tags: {tourism: motel}
- shapes: [{shape: car, offset: [0, 4]}, {shape: bed, offset: [0, -2]}]
- - tags: {tourism: guest_house}
- shapes: [bed_and_roof]
- - tags: {amenity: hospital}
- location_restrictions: {include: world, exclude: [jp]}
- shapes: [greek_cross]
- - tags: {amenity: hospital}
- location_restrictions: {include: [jp]}
- shapes: [japan_public_health_center]
- - tags: {amenity: clinic}
- shapes: [greek_cross_in_box]
- - tags: {amenity: doctors}
- shapes: [greek_cross_in_box]
- - tags: {amenity: dentist}
- shapes: [tooth]
- - tags: {amenity: post_office}
- location_restrictions: {include: world, exclude: [jp]}
- shapes: [envelope]
- - tags: {amenity: post_office}
- location_restrictions: {include: [jp]}
- shapes: [japan_post]
- - tags: {shop: car_repair}
- shapes: [{shape: car, offset: [0, 3]}, {shape: wrench, offset: [0, -4]}]
- - tags: {amenity: car_rental}
- shapes: [{shape: car, offset: [0, 3]}, {shape: key, offset: [1, -3]}]
- - tags: {amenity: car_sharing}
- shapes: [{shape: car, offset: [0, 3]}, {shape: sharing, offset: [0, -4]}]
- - tags: {amenity: car_wash}
- shapes:
- - {shape: car, offset: [0, 3]}
- - {shape: shower_head, offset: [0, -4]}
- # Place of worship
- - tags: {building: shrine, religion: shinto}
- shapes: [japan_shinto_shrine]
- - tags: {religion: christian}
- shapes: [latin_cross]
- - tags: {amenity: place_of_worship, religion: christian}
- shapes: [latin_cross]
- - tags:
- amenity: place_of_worship
- religion: christian
- denomination: catholic
- shapes: [latin_cross]
- - tags:
- amenity: place_of_worship
- religion: christian
- denomination: russian_orthodox
- shapes: [russian_orthodox_cross]
- - tags:
- amenity: place_of_worship
- religion: christian
- denomination: orthodox
- shapes: [orthodox]
- - tags:
- amenity: place_of_worship
- religion: christian
- denomination: baptist
- shapes: [baptist]
- - tags: {amenity: place_of_worship, religion: muslim}
- shapes: [crescent]
- - tags: {amenity: place_of_worship, religion: buddhist}
- shapes: [dharmachakra]
- - tags: {amenity: place_of_worship, religion: jewish}
- shapes: [star_of_david]
- - tags: {historic: tomb, tomb: mausoleum}
- shapes: [mausoleum]
- - tags: {historic: tomb, tomb: pyramid}
- shapes: [pyramid]
- - tags: {historic: "*"}
- shapes: [japan_historic]
- replace_shapes: no
- location_restrictions: {include: [jp]}
-
- - group: "Normal big objects"
- start_zoom_level: 15.0
- tags:
- - tags: {shop: supermarket}
- shapes: [supermarket_cart]
- - tags: {shop: variety_store}
- shapes: [bag_with_percent]
- - tags: {shop: general}
- shapes: [bag]
- - tags: {amenity: arts_centre}
- shapes: [picture]
- - tags: {amenity: bank}
- shapes: [money]
- - tags: {amenity: cinema}
- shapes: [film]
- - tags: {amenity: casino}
- shapes: [card_and_dice]
- - tags: {amenity: community_centre}
- shapes: [two_people_together]
- - tags: {amenity: gym}
- shapes: [dumbbell]
- - tags: {amenity: social_facility}
- shapes: [two_people_together]
- - tags: {amenity: internet_cafe}
- shapes: [at_in_square]
- - tags: {amenity: library}
- shapes: [book]
- - tags: {amenity: marketplace}
- shapes: [marketplace]
- - tags: {amenity: prison}
- shapes: [prison]
- - tags: {amenity: stripclub}
- shapes: [pole_dancer]
- - tags: {club: computer}
- shapes: [glider]
- - tags: {leisure: hackerspace}
- shapes: [glider]
- - tags: {man_made: survey_point}
- shapes: [survey_point]
- - tags: {leisure: amusement_arcade}
- shapes: [pac_man]
- - tags: {leisure: fitness_centre}
- shapes: [dumbbell]
- - tags: {leisure: fitness_station}
- shapes: [dumbbell]
- - tags: {leisure: bird_hide}
- shapes: [binoculars]
- - tags: {leisure: bleachers}
- shapes: [bleachers]
- - tags: {leisure: bowling_alley}
- shapes: [bowling_ball]
- - tags: {leisure: dog_park}
- shapes: [dog]
- - tags: {leisure: escape_game}
- shapes: [{shape: maze, offset: [-2, 0]}, {shape: arrow_right_short, offset: [5, -1]}]
- - tags: {leisure: maze}
- shapes: [maze]
- - tags: {attraction: maze}
- shapes: [maze]
- - tags: {maze: labyrinth}
- shapes: [maze]
- - tags: {tourism: maze}
- shapes: [maze]
- - tags: {leisure: miniature_golf}
- shapes: [golf_club_and_ball]
- - tags: {leisure: sauna}
- shapes: [sauna]
- - tags: {leisure: outdoor_seating}
- shapes: [table_and_two_chairs, umbrella]
- - tags: {leisure: outdoor_seating, weather_protection: parasol}
- shapes: [table_and_two_chairs, umbrella]
- - tags: {leisure: outdoor_seating, weather_protection: roof}
- shapes: [table_and_two_chairs___roof]
- - tags: {leisure: outdoor_seating, weather_protection: awning}
- shapes: [table_and_two_chairs, awning]
- - tags: {leisure: outdoor_seating, weather_protection: pavilion}
- shapes: [table_and_two_chairs___roof_and_walls]
- - tags: {leisure: outdoor_seating, weather_protection: pergola}
- shapes: [table_and_two_chairs___pergola]
- - tags: {leisure: playground}
- shapes: [toy_horse]
- - tags: {amenity: theatre}
- shapes: [curtains]
- - tags: {amenity: bar}
- shapes: [cocktail_glass]
- - tags: {amenity: pub}
- shapes: [beer_mug]
- - tags: {amenity: fast_food}
- shapes: [burger]
- - tags: {amenity: fast_food, cuisine: steak_house}
- shapes: [steak_and_fork]
- - tags: {amenity: food_court}
- shapes: [food_court]
- - tags: {craft: shoemaker}
- shapes: [{shape: shoe, color: sell_color}]
- - tags: {shop: fishing}
- shapes: [{shape: fishing_angle, color: sell_color}]
- - tags: {shop: alcohol}
- shapes: [{shape: bottle, color: sell_color}]
- - tags: {shop: antiques}
- shapes: [{shape: amphora, color: sell_color}]
- - tags: {shop: art}
- shapes: [{shape: picture, color: sell_color}]
- - tags: {shop: bakery}
- shapes: [cupcake]
- - tags: {shop: bag}
- shapes: [{shape: bag, color: sell_color}]
- - tags: {shop: bed}
- shapes: [{shape: bed, color: sell_color}]
- - tags: {shop: beauty}
- shapes: [vanity_mirror]
- - tags: {shop: cosmetics}
- shapes: [vanity_mirror]
- - tags: {shop: bicycle}
- shapes: [{shape: bicycle, color: sell_color}]
- - tags: {shop: books}
- shapes: [{shape: book, color: sell_color}]
- - tags: {shop: butcher}
- shapes: [knives]
- - tags: {shop: car}
- shapes: [{shape: car, color: sell_color}]
- - tags: {shop: car_parts}
- shapes: [shape: engine]
- - tags: {shop: chocolate}
- shapes: [cupcake]
- - tags: {shop: coffee}
- shapes: [{shape: coffee_cup, color: sell_color}]
- - tags: {shop: confectionery}
- shapes: [cupcake]
- - tags: {shop: copyshop}
- shapes: [sheets]
- - tags: {shop: dairy}
- shapes: [aseptic_carton]
- - tags: {shop: doityourself}
- shapes: [wretch_and_hammer]
- - tags: {shop: dry_cleaning}
- shapes: [washing_machine]
- - tags: {shop: farm}
- shapes: [{shape: apple, color: sell_color}]
- - tags: {shop: fireplace}
- shapes: [{shape: fireplace, color: sell_color}]
- - tags: {shop: florist}
- shapes: [{shape: flower_in_pot, color: sell_color}]
- - tags: {shop: furniture}
- shapes: [{shape: drawer, color: sell_color}]
- - tags: {shop: greengrocer}
- shapes: [{shape: apple, color: sell_color}]
- - tags: {shop: hairdresser}
- shapes: [comb_and_scissors]
- - tags: {shop: hardware}
- shapes: [wretch_and_hammer]
- - tags: {shop: hifi}
- shapes: [{shape: hi_fi, color: sell_color}]
- - tags: {shop: houseware}
- shapes: [{shape: pan, color: sell_color}]
- - tags: {shop: jewelry}
- shapes: [{shape: diamond, color: sell_color}]
- - tags: {shop: jewellery}
- shapes: [{shape: diamond, color: sell_color}]
- - tags: {craft: jeweller}
- shapes: [{shape: diamond, color: craft_color}]
- - tags: {shop: laundry}
- shapes: [washing_machine]
- - tags: {shop: massage}
- shapes: [massage]
- - tags: {shop: medical_supply}
- shapes: [{shape: medicine_bottle, color; sell_color}]
- - tags: {shop: mobile_phone}
- shapes: [{shape: phone, color: sell_color}]
- - tags: {shop: newsagent}
- shapes: [gazette]
- - tags: {shop: optician}
- shapes: [glasses]
- - tags: {shop: pastry}
- shapes: [cupcake]
- - tags: {shop: pet}
- shapes: [{shape: dog, color: sell_color}]
- - tags: {shop: photo}
- shapes: [{shape: photo_camera, color: sell_color}]
- - tags: {shop: photography}
- shapes: [{shape: photo_camera, color: sell_color}]
- - tags: {shop: shoes}
- shapes: [{shape: shoe, color: sell_color}]
- - tags: {shop: sports}
- shapes: [{shape: dumbbell, color: sell_color}]
- - tags: {shop: travel_agency}
- shapes: [globe]
- - tags: {shop: milk}
- shapes: [aseptic_carton]
- - tags: {shop: wine}
- shapes: [{shape: bottle_and_wine_glass, color: sell_color}]
- - tags: {building: store}
- shapes: [shop_convenience]
- - tags: {shop: ticket}
- shapes: [ticket]
- - tags: {shop: tailor}
- shapes: [t_shirt_and_scissors]
- - tags: {shop: tyres}
- shapes: [{shape: tyre, color: sell_color}]
- - tags: {shop: toys}
- shapes: [{shape: toy_horse, color: sell_color}]
- - tags: {craft: tailor}
- shapes: [t_shirt_and_scissors]
- - tags: {shop: video}
- shapes: [{shape: film, color: sell_color}]
- - tags: {shop: video_games}
- shapes: [{shape: pac_man, color: sell_color}]
- - tags: {shop: watches}
- shapes: [{shape: watches, color: sell_color}]
- - tags: {craft: watchmaker}
- shapes: [watches]
- - tags: {shop: frame}
- shapes: [{shape: frame, color: sell_color}]
- - tags: {tourism: gallery}
- shapes: [picture]
- - tags: {amenity: cafe}
- shapes: [coffee_cup]
- - tags: {amenity: ice_cream}
- shapes: [ice_cream]
- - tags: {amenity: biergarten}
- shapes: [beer_mug]
- - tags: {amenity: nightclub}
- shapes: [cocktail_glass_with_straw]
- - tags: {amenity: restaurant}
- shapes: [fork_and_knife]
- - tags: {amenity: restaurant;bar}
- shapes: [fork_and_knife]
- add_shapes: [cocktail_glass]
- - tags: {shop: ice_cream}
- shapes: [ice_cream]
- - tags: {shop: gift}
- shapes: [gift]
- - tags: {shop: clothes}
- shapes: [{shape: t_shirt, color: sell_color}]
- - tags: {amenity: shop, shop: clothes}
- shapes: [t_shirt]
- - tags: {shop: convenience}
- shapes: [shop_convenience]
- - tags: {amenity: shop, shop: convenience}
- shapes: [shop_convenience]
- - tags: {shop: electronics}
- shapes: [{shape: tv, color: sell_color}]
- - tags: {tourism: camp_site}
- shapes: [camp]
- - tags: {tourism: caravan_site}
- shapes: [caravan]
- - tags: {leisure: picnic_site}
- shapes: [table]
-
- - group: "Big objects not for all"
- start_zoom_level: 15.0
- tags:
- - tags: {building: container}
- shapes: [building_container]
- - tags: {building: houseboat}
- shapes: [houseboat]
-
- - tags: {building: apartments}
- shapes: [apartments_2_story]
-
- - tags: {building: "*", building:levels: "1"}
- shapes: [apartments_1_story]
- - tags: {building: "*", building:levels: "1", roof:shape: gabled}
- shapes: [apartments_1_story_gabled_roof]
- - tags: {building: "*", building:levels: "1", roof:shape: hipped}
- shapes: [apartments_1_story_gabled_roof]
- - tags: {building: "*", building:levels: "1", roof:shape: pyramidal}
- shapes: [apartments_1_story_gabled_roof]
- - tags: {building: "*", building:levels: "1", roof:shape: skillion}
- shapes: [apartments_1_story_skillion_roof]
-
- - tags: {building: "*", building:levels: "2"}
- shapes: [apartments_2_story]
- - tags: {building: "*", building:levels: "2", roof:shape: gabled}
- shapes: [apartments_2_story_gabled_roof]
- - tags: {building: "*", building:levels: "2", roof:shape: hipped}
- shapes: [apartments_2_story_gabled_roof]
- - tags: {building: "*", building:levels: "2", roof:shape: pyramidal}
- shapes: [apartments_2_story_gabled_roof]
- - tags: {building: "*", building:levels: "2", roof:shape: skillion}
- shapes: [apartments_2_story_skillion_roof]
-
- - tags: {building: "*", building:levels: "3"}
- shapes: [apartments_3_story]
- - tags: {building: "*", building:levels: "3", roof:shape: gabled}
- shapes: [apartments_3_story_gabled_roof]
- - tags: {building: "*", building:levels: "3", roof:shape: hipped}
- shapes: [apartments_3_story_gabled_roof]
- - tags: {building: "*", building:levels: "3", roof:shape: pyramidal}
- shapes: [apartments_3_story_gabled_roof]
- - tags: {building: "*", building:levels: "3", roof:shape: skillion}
- shapes: [apartments_3_story_skillion_roof]
-
- - tags: {building: "*", building:levels: "4"}
- shapes: [apartments_4_story]
- - tags: {building: "*", building:levels: "4", roof:shape: gabled}
- shapes: [apartments_4_story_gabled_roof]
- - tags: {building: "*", building:levels: "4", roof:shape: hipped}
- shapes: [apartments_4_story_gabled_roof]
- - tags: {building: "*", building:levels: "4", roof:shape: pyramidal}
- shapes: [apartments_4_story_gabled_roof]
- - tags: {building: "*", building:levels: "4", roof:shape: skillion}
- shapes: [apartments_4_story_skillion_roof]
-
- - tags: {building: "*", building:levels: "5"}
- shapes: [apartments_5_story]
- - tags: {building: "*", building:levels: "5", roof:shape: gabled}
- shapes: [apartments_5_story_gabled_roof]
- - tags: {building: "*", building:levels: "5", roof:shape: hipped}
- shapes: [apartments_5_story_gabled_roof]
- - tags: {building: "*", building:levels: "5", roof:shape: pyramidal}
- shapes: [apartments_5_story_gabled_roof]
- - tags: {building: "*", building:levels: "5", roof:shape: skillion}
- shapes: [apartments_5_story_skillion_roof]
-
- - tags: {building: construction}
- shapes: [building_construction]
- - tags: {building: apartments, construction: "yes"}
- shapes: [building_construction]
- - tags: {building: "yes", construction: "yes"}
- shapes: [building_construction]
-
- - tags: {building: kindergarten}
- shapes: [toy_horse]
- - tags: {amenity: kindergarten}
- shapes: [toy_horse]
- - tags: {building: kindergarten, amenity: kindergarten}
- shapes: [toy_horse]
- - tags: {leisure: indoor_playground}
- shapes: [toy_horse]
- - tags: {building: office}
- shapes: [briefcase]
- - tags: {amenity: school}
- location_restrictions: {include: [jp]}
- shapes: [japan_elementary_school]
- - tags: {office: "yes"}
- shapes: [briefcase]
- - tags: {office: company}
- shapes: [briefcase]
- - tags: {office: government}
- shapes: [government]
- - tags: {office: it}
- shapes: [glider]
- - tags: {office: telecommunication}
- shapes: [telephone]
-
- - group: "Not important big objects"
- start_zoom_level: 15.0
- tags:
- - tags: {building: garage}
- shapes: [garages]
- - tags: {building: garages}
- shapes: [garages]
- - tags: {landuse: garages}
- shapes: [garages]
- - tags: {man_made: communications_tower}
- location_restrictions: {include: [jp]}
- shapes: [japan_tv_tower]
- - tags: {man_made: communications_tower}
- shapes: [tower_communication]
- - tags: {man_made: telescope}
- shapes: [telescope_radio]
- - tags: {man_made: telescope, telescope:type: radio}
- shapes: [telescope_radio]
- - tags: {man_made: telescope, telescope:type: gamma}
- shapes: [telescope_gamma]
- - tags: {man_made: telescope, telescope:type: optical}
- shapes: [observatory]
- - tags: {man_made: tower}
- shapes: [tower]
- - tags: {man_made: tower, tower:construction: dish}
- shapes: [telescope_radio]
- - tags: {man_made: tower, tower:construction: dish, telescope:type: radio}
- shapes: [telescope_radio]
- - tags: {man_made: tower, tower:construction: dish, telescope:type: gamma}
- shapes: [telescope_gamma]
- - tags: {man_made: crane}
- shapes: [crane]
- - tags: {man_made: crane, crane:type: gantry_crane}
- shapes: [crane_gantry]
- - tags: {man_made: crane, crane:type: floor-mounted_crane}
- shapes: [crane]
- - tags: {man_made: crane, crane:type: portal_crane}
- shapes: [crane_portal]
- - tags: {man_made: crane, crane:type: travel_lift}
- shapes: [crane_travel_lift]
- - tags: {man_made: crane, crane:type: tower_crane}
- shapes: [crane]
-
- - group: "Emergency"
- start_zoom_level: 15.0
- tags:
- - tags: {emergency: defibrillator}
- shapes: [{shape: defibrillator, color: emergency_color}]
- - tags: {emergency: fire_extinguisher}
- shapes: [{shape: fire_extinguisher, color: emergency_color}]
- - tags: {emergency: fire_hydrant}
- shapes: [fire_hydrant]
- - tags: {emergency: life_ring}
- shapes: [{shape: life_ring, color: emergency_color}]
- - tags: {emergency: phone}
- shapes: [{shape: sos_phone, color: emergency_color}]
-
- - group: "Transport-important middle objects"
- start_zoom_level: 16.0
- tags:
- - tags: {ford: "yes"}
- shapes: [ford]
- - tags: {amenity: charging_station}
- shapes: [charging_station]
- - tags: {amenity: bicycle_repair_station}
- shapes:
- - {shape: bicycle, offset: [0, 2]}
- - {shape: wrench, offset: [1, -5]}
- - tags: {amenity: bicycle_rental}
- shapes: [{shape: bicycle, offset: [0, 2]}, {shape: key, offset: [1, -4]}]
- - tags: {amenity: fuel}
- shapes: [fuel_station]
- - tags: {amenity: parking}
- shapes: [p]
- - tags: {amenity: parking, parking: multi-storey}
- shapes: [{shape: car, offset: [0, 4]}, {shape: car, offset: [0, -3]}]
- - tags: {highway: turning_circle}
- shapes: [circle_empty]
- - tags: {highway: turning_loop}
- shapes: [turning_loop]
- - tags: {highway: crossing}
- shapes: [crossing]
- - tags: {crossing: zebra}
- shapes: [crossing]
- - tags: {highway: crossing, crossing: zebra}
- shapes: [crossing]
- - tags: {crossing: marked}
- shapes: [crossing]
- - tags: {highway: crossing, crossing: marked}
- shapes: [crossing]
- - tags: {highway: crossing, crossing_ref: zebra}
- shapes: [crossing]
- - tags: {highway: crossing, crossing: uncontrolled}
- add_shapes: [no_traffic_signals]
- - tags: {highway: crossing, crossing: traffic_signals}
- add_shapes: [traffic_signals]
- - tags: {highway: traffic_signals}
- shapes: [traffic_signals]
- - tags: {crossing_ref: toucan}
- shapes: [toucan_crossing]
-
- - tags: {traffic_calming: bump}
- shapes: [bump]
- - tags: {traffic_calming: mini_bumps}
- shapes: [mini_bumps]
- - tags: {traffic_calming: hump}
- shapes: [hump]
- - tags: {traffic_calming: table}
- shapes: [traffic_table]
- - tags: {traffic_calming: cushion}
- shapes: [traffic_cushion]
- - tags: {traffic_calming: rumble_strip}
- shapes: [rumble_strip]
- - tags: {traffic_calming: dip}
- shapes: [dip]
- - tags: {traffic_calming: double_dip}
- shapes: [double_dip]
-
- - group: "Important middle objects"
- start_zoom_level: 16.0
- tags:
- - tags: {tourism: attraction, attraction: amusement_ride}
- shapes: [amusement_ride]
- - tags: {amenity: toilets}
- shapes: [woman_and_man]
- - tags: {amenity: shelter}
- shapes: [shelter]
- - tags: {man_made: obelisk}
- shapes: [obelisk]
- - tags: {historic: monument}
- shapes: [monument]
-
- - group: "Normal middle objects"
- start_zoom_level: 17.0
- tags:
- - tags: {shop: kiosk}
- shapes: [kiosk]
- - tags: {building: "yes", shop: kiosk}
- shapes: [kiosk]
- - tags: {amenity: shop, shop: kiosk}
- shapes: [kiosk]
- - tags: {amenity: stage}
- shapes: [curtains]
- - tags: {amenity: hunting_stand}
- shapes: [hunting_stand]
- - tags: {natural: cave_entrance}
- shapes: [cave]
- - tags: {amenity: bureau_de_change}
- shapes:
- - {shape: exchange}
- - {shape: dollar, offset: [-4, 3]}
- - {shape: pound, offset: [5, -2]}
- - tags: {sport: skateboard}
- shapes: [skateboard]
- - tags: {pipeline: substation}
- shapes: [pipeline]
-
- - group: "Towers, poles, masts"
- start_zoom_level: 15.0
- tags:
- - tags: {building: ventilation_shaft}
- shapes: [ventilation]
- - tags: {power: generator}
- shapes: [power_generator]
- - tags: {amenity: public_bookcase}
- shapes: [books]
- - tags: {power: transformer}
- shapes: [transformer]
- - tags: {power: generator, generator:source: solar}
- shapes: [solar_panel]
- - tags: {power: heliostat}
- shapes: [solar_panel]
- - tags: {power: generator, generator:source: wind}
- shapes: [wind_turbine]
- - tags: {power: tower}
- shapes: [power_tower_2_level]
- - tags: {power: tower, design: one-level}
- shapes: [power_tower_1_level]
- - tags: {power: tower, design: two-level}
- shapes: [power_tower_2_level]
- - tags: {power: tower, design: three-level}
- shapes: [power_tower_3_level]
- - tags: {power: tower, design: four-level}
- shapes: [power_tower_4_level]
- - tags: {power: tower, design: donau}
- shapes: [power_tower_donau]
- - tags: {power: tower, design: donau_inverse}
- shapes: [power_tower_donau_inverse]
- - tags: {power: tower, design: barrel}
- shapes: [power_tower_barrel]
- - tags: {power: tower, design: asymmetric}
- shapes: [power_tower_asymmetric]
- - tags: {power: tower, design: triangle}
- shapes: [power_tower_triangle]
- - tags: {power: tower, design: flag}
- shapes: [power_tower_flag]
- - tags: {power: tower, design: delta}
- shapes: [power_tower_delta]
- - tags: {power: tower, design: delta_two-level}
- shapes: [power_tower_delta_2_level]
- - tags: {power: tower, design: delta_three-level}
- shapes: [power_tower_delta_3_level]
- - tags: {power: tower, design: y-frame}
- shapes: [power_tower_y_frame]
- - tags: {power: tower, design: x-frame}
- shapes: [power_tower_x_frame]
- - tags: {power: tower, design: h-frame}
- shapes: [power_tower_h_frame]
- - tags: {power: tower, design: h-frame_two-level}
- shapes: [power_tower_h_frame_2_level]
- - tags: {power: tower, design: guyed_h-frame}
- shapes: [power_tower_guyed_h_frame]
- - tags: {power: portal}
- shapes: [power_tower_portal]
- - tags: {power: tower, design: portal}
- shapes: [power_tower_portal]
- - tags: {power: tower, design: portal_two-level}
- shapes: [power_tower_portal_2_level]
- - tags: {power: portal, design: portal_two-level}
- shapes: [power_tower_portal_2_level]
- - tags: {power: tower, design: portal_three-level}
- shapes: [power_tower_portal_3_level]
- - tags: {power: portal, design: portal_three-level}
- shapes: [power_tower_portal_3_level]
-
- - tags: {power: pole}
- shapes: [power_pole_2_level]
- - tags: {power: pole, design: one-level}
- shapes: [power_pole_1_level]
- - tags: {power: pole, design: two-level}
- shapes: [power_pole_2_level]
- - tags: {power: pole, design: three-level}
- shapes: [power_pole_3_level]
- - tags: {power: pole, design: four-level}
- shapes: [power_pole_4_level]
- - tags: {power: pole, design: asymmetric}
- shapes: [power_pole_asymmetric]
- - tags: {power: pole, design: triangle}
- shapes: [power_pole_triangle]
- - tags: {power: pole, design: flag}
- shapes: [power_pole_flag]
- - tags: {power: pole, design: armless_asymmetric}
- shapes: [power_pole_asymmetric_armless]
- - tags: {power: pole, design: armless_triangle}
- shapes: [power_pole_triangle_armless]
- - tags: {power: pole, design: delta}
- shapes: [power_pole_delta]
- - tags: {power: pole, design: delta_two-level}
- shapes: [power_pole_delta] # power_pole_delta_2_level
- - tags: {power: pole, design: delta_three-level}
- shapes: [power_pole_delta] # power_pole_delta_3_level
-
- - tags: {man_made: chimney}
- shapes: [chimney]
- - tags: {man_made: tower, tower:type: cooling}
- shapes: [tower_cooling]
- - tags: {man_made: tower, tower:type: defensive}
- shapes: [tower_defensive]
- - tags: {man_made: tower, tower:type: pagoda}
- shapes: [pagoda]
- - tags: {man_made: tower, tower:type: observation}
- shapes: [tower_observation]
- - tags: {man_made: tower, tower:type: watchtower}
- shapes: [tower_observation]
- - tags: {man_made: tower, tower:type: minaret}
- shapes: [minaret]
- - tags: {man_made: mast}
- shapes: [tube]
- - tags: {man_made: stupa}
- shapes: [stupa]
-
- - tags: {man_made: mast, tower:construction: guyed_tube}
- shapes: [tube_guyed]
- - tags: {man_made: mast, tower:construction: freestanding}
- shapes: [tube]
- - tags: {man_made: mast, tower:construction: lattice}
- shapes: [lattice]
- - tags: {man_made: mast, tower:construction: guyed_lattice}
- shapes: [lattice_guyed]
- - tags: {man_made: mast, tower:type: lighting}
- shapes:
- - tube
- - {shape: light_left, offset: [-3, -3]}
- - {shape: light_right, offset: [3, -3]}
- - tags: {man_made: mast, tower:type: communication}
- shapes:
- - tube
- - {shape: wave_left, offset: [-3, -3]}
- - {shape: wave_right, offset: [3, -3]}
- - tags: {man_made: mast, tower:type: siren}
- shapes:
- - tube
- - {shape: siren_left, offset: [-3, -3]}
- - {shape: siren_right, offset: [3, -3]}
- - tags: {man_made: mast, tower:type: monitoring}
- shapes:
- - tube
- - {shape: dish_antenna_left, offset: [-3, -3]}
- - {shape: dish_antenna_right, offset: [3, -3]}
- - tags:
- man_made: mast
- tower:type: lighting
- tower:construction: guyed_tube
- shapes:
- - tube_guyed
- - {shape: light_left, offset: [-3, -3]}
- - {shape: light_right, offset: [3, -3]}
- - tags:
- man_made: mast
- tower:type: communication
- tower:construction: guyed_tube
- shapes:
- - tube_guyed
- - {shape: wave_left, offset: [-3, -3]}
- - {shape: wave_right, offset: [3, -3]}
- - tags:
- man_made: mast
- tower:type: siren
- tower:construction: guyed_tube
- shapes:
- - tube_guyed
- - {shape: siren_left, offset: [-3, -3]}
- - {shape: siren_right, offset: [3, -3]}
- - tags:
- man_made: mast
- tower:type: monitoring
- tower:construction: guyed_tube
- shapes:
- - tube_guyed
- - {shape: dish_antenna_left, offset: [-3, -3]}
- - {shape: dish_antenna_right, offset: [3, -3]}
- - tags:
- man_made: mast
- tower:type: lighting
- tower:construction: freestanding
- shapes:
- - tube
- - {shape: light_left, offset: [-3, -3]}
- - {shape: light_right, offset: [3, -3]}
- - tags:
- man_made: mast
- tower:type: communication
- tower:construction: freestanding
- shapes:
- - tube
- - {shape: wave_left, offset: [-3, -3]}
- - {shape: wave_right, offset: [3, -3]}
- - tags:
- man_made: mast
- tower:type: siren
- tower:construction: freestanding
- shapes:
- - tube
- - {shape: siren_left, offset: [-3, -3]}
- - {shape: siren_right, offset: [3, -3]}
- - tags:
- man_made: mast
- tower:type: monitoring
- tower:construction: freestanding
- shapes:
- - tube
- - {shape: dish_antenna_left, offset: [-3, -3]}
- - {shape: dish_antenna_right, offset: [3, -3]}
- - tags:
- man_made: mast
- tower:type: lighting
- tower:construction: guyed_lattice
- shapes:
- - lattice_guyed
- - {shape: light_left, offset: [-4, -3]}
- - {shape: light_right, offset: [3, -3]}
- - tags:
- man_made: mast
- tower:type: communication
- tower:construction: guyed_lattice
- shapes:
- - lattice_guyed
- - {shape: wave_left, offset: [-4, -3]}
- - {shape: wave_right, offset: [3, -3]}
- - tags:
- man_made: mast
- tower:type: siren
- tower:construction: guyed_lattice
- shapes:
- - lattice_guyed
- - {shape: siren_left, offset: [-4, -3]}
- - {shape: siren_right, offset: [3, -3]}
- - tags:
- man_made: mast
- tower:type: monitoring
- tower:construction: guyed_lattice
- shapes:
- - lattice_guyed
- - {shape: dish_antenna_left, offset: [-4, -3]}
- - {shape: dish_antenna_right, offset: [3, -3]}
- - tags:
- man_made: mast
- tower:type: lighting
- tower:construction: lattice
- shapes:
- - lattice
- - {shape: light_left, offset: [-4, -3]}
- - {shape: light_right, offset: [3, -3]}
- - tags:
- man_made: mast
- tower:type: communication
- tower:construction: lattice
- shapes:
- - lattice
- - {shape: wave_left, offset: [-4, -3]}
- - {shape: wave_right, offset: [3, -3]}
- - tags:
- man_made: mast
- tower:type: siren
- tower:construction: lattice
- shapes:
- - lattice
- - {shape: siren_left, offset: [-4, -3]}
- - {shape: siren_right, offset: [3, -3]}
- - tags:
- man_made: mast
- tower:type: monitoring
- tower:construction: lattice
- shapes:
- - lattice
- - {shape: dish_antenna_left, offset: [-4, -3]}
- - {shape: dish_antenna_right, offset: [3, -3]}
-
- - tags: {man_made: tower, tower:construction: guyed_tube}
- shapes: [tube_guyed]
- - tags: {man_made: tower, tower:construction: freestanding}
- shapes: [tube]
- - tags: {man_made: tower, tower:construction: lattice}
- shapes: [lattice]
- - tags: {man_made: tower, tower:construction: lattice_guyed}
- shapes: [lattice_guyed]
- - tags: {man_made: tower, tower:type: lighting}
- shapes:
- - tube
- - {shape: light_left, offset: [-3, -3]}
- - {shape: light_right, offset: [3, -3]}
- - tags: {man_made: tower, tower:type: communication}
- shapes:
- - tube
- - {shape: wave_left, offset: [-3, -3]}
- - {shape: wave_right, offset: [3, -3]}
- - tags:
- man_made: tower
- tower:type: lighting
- tower:construction: guyed_tube
- shapes:
- - tube_guyed
- - {shape: light_left, offset: [-3, -3]}
- - {shape: light_right, offset: [3, -3]}
- - tags:
- man_made: tower
- tower:type: communication
- tower:construction: guyed_tube
- shapes:
- - tube_guyed
- - {shape: wave_left, offset: [-3, -3]}
- - {shape: wave_right, offset: [3, -3]}
- - tags:
- man_made: tower
- tower:type: lighting
- tower:construction: freestanding
- shapes:
- - tube
- - {shape: light_left, offset: [-3, -3]}
- - {shape: light_right, offset: [3, -3]}
- - tags:
- man_made: tower
- tower:type: communication
- tower:construction: freestanding
- shapes:
- - tube
- - {shape: wave_left, offset: [-3, -3]}
- - {shape: wave_right, offset: [3, -3]}
- - tags:
- man_made: tower
- tower:type: lighting
- tower:construction: guyed_lattice
- shapes:
- - lattice_guyed
- - {shape: light_left, offset: [-4, -3]}
- - {shape: light_right, offset: [3, -3]}
- - tags:
- man_made: tower
- tower:type: communication
- tower:construction: guyed_lattice
- shapes:
- - lattice_guyed
- - {shape: wave_left, offset: [-4, -3]}
- - {shape: wave_right, offset: [3, -3]}
- - tags:
- man_made: tower
- tower:type: lighting
- tower:construction: lattice
- shapes:
- - lattice
- - {shape: light_left, offset: [-4, -3]}
- - {shape: light_right, offset: [3, -3]}
- - tags:
- man_made: tower
- tower:type: communication
- tower:construction: lattice
- shapes:
- - lattice
- - {shape: wave_left, offset: [-4, -3]}
- - {shape: wave_right, offset: [3, -3]}
-
- - tags: {man_made: flagpole, country: US}
- shapes: [flag_usa]
- - tags: {man_made: flagpole, country: Tanzania}
- shapes: [flag_bend_sinister]
- - tags: {man_made: flagpole, country: PH}
- shapes: [flag_triangle_flanche]
- - tags: {man_made: flagpole, country: FR}
- shapes: [flag_vertical_triband]
-
- # Diving towers.
-
- - tags: {man_made: tower, tower:type: diving}
- shapes: [diving_1_platforms]
- - tags: {man_made: tower, tower:type: diving, tower:platforms: "1"}
- shapes: [diving_1_platforms]
- - tags: {man_made: tower, tower:type: diving, tower:platforms: "2"}
- shapes: [diving_2_platforms]
- - tags: {man_made: tower, tower:type: diving, tower:platforms: "3"}
- shapes: [diving_3_platforms]
- - tags: {man_made: tower, tower:type: diving, tower:platforms: "4"}
- shapes: [diving_4_platforms]
-
- - tags: {communication:mobile_phone: "yes"}
- add_shapes: [phone]
-
- - group: "Moon small objects"
- start_zoom_level: 0.0
- tags:
- - tags: {man_made: rover}
- shapes: [lunokhod]
- - tags: {man_made: probe}
- shapes: [probe]
- - tags: {man_made: orbiter}
- shapes: [orbiter]
- - tags: {man_made: descent_stage}
- shapes: [descent_stage]
- - tags: {man_made: third_stage}
- shapes: [third_stage]
- - tags: {man_made: lander}
- shapes: [lander]
-
- - tags: {man_made: rover, condition: landed}
- shapes: [lunokhod]
- set_opacity: 0.8
- - tags: {man_made: probe, condition: landed}
- shapes: [probe]
- set_opacity: 0.8
- - tags: {man_made: orbiter, condition: landed}
- shapes: [orbiter]
- set_opacity: 0.8
- - tags: {man_made: descent_stage, condition: landed}
- shapes: [descent_stage]
- set_opacity: 0.8
- - tags: {man_made: third_stage, condition: landed}
- shapes: [third_stage]
- set_opacity: 0.8
- - tags: {man_made: lander, condition: landed}
- shapes: [lander]
- set_opacity: 0.8
-
- - tags: {man_made: rover, condition: crashed}
- shapes: [lunokhod]
- set_opacity: 0.5
- - tags: {man_made: probe, condition: crashed}
- shapes: [probe]
- set_opacity: 0.5
- - tags: {man_made: orbiter, condition: crashed}
- shapes: [orbiter]
- set_opacity: 0.5
- - tags: {man_made: descent_stage, condition: crashed}
- shapes: [descent_stage]
- set_opacity: 0.5
- - tags: {man_made: third_stage, condition: crashed}
- shapes: [third_stage]
- set_opacity: 0.5
- - tags: {man_made: lander, condition: crashed}
- shapes: [lander]
- set_opacity: 0.5
-
- - group: "Golf objects"
- start_zoom_level: 16.0
- tags:
- - tags: {golf: tee}
- shapes: [golf_tee]
- - tags: {golf: pin}
- shapes: [golf_pin]
-
- - group: "Important small objects"
- start_zoom_level: 17.0
- tags:
- - tags: {natural: spring}
- shapes: [{shape: spring, color: water_border_color}]
- - tags: {highway: elevator}
- shapes: [elevator]
- - tags: {historic: cannon}
- shapes: [cannon]
- - tags: {historic: olympic_flame}
- shapes: [torch]
- - tags: {historic: memorial}
- shapes: [memorial]
- - tags: {historic: memorial, memorial: plaque}
- shapes: [plaque]
- - tags: {historic: memorial, memorial: statue}
- shapes: [statue]
- - tags: {barrier: artwork, artwork_type: statue}
- shapes: [statue]
- - tags: {historic: stone}
- shapes: [stone_with_inscription]
- - tags: {historic: wayside_cross}
- shapes: [cross_and_horizontal_bar]
- - tags: {historic: wayside_shrine}
- shapes: [wayside_shrine]
- - tags: {historic: memorial, memorial: stone}
- shapes: [stone_with_inscription]
- - tags: {historic: tomb}
- shapes: [tomb]
- - tags: {tomb: "*"}
- exception: {tomb: mausoleum} # TODO: add exception "tomb: pyramid"
- shapes: [tomb]
- - tags: {barrier: toll_booth}
- shapes: [toll_booth]
- - tags: {barrier: lift_gate}
- shapes: [lift_gate]
- - tags: {barrier: turnstile}
- shapes: [turnstile]
- - tags: {barrier: log}
- shapes: [wood]
- - tags: {barrier: chain}
- shapes: [chain_barrier]
- - tags: {railway: crossing}
- shapes: [x]
- - tags: {railway: railway_crossing}
- shapes: [x]
- - tags: {railway: level_crossing}
- shapes: [x]
- - tags: {railway: signal}
- shapes: [signal]
- - tags: {amenity: atm}
- shapes: [atm]
- - tags: {amenity: bicycle_parking}
- shapes:
- - {shape: bicycle, offset: [0, 2]}
- - {shape: p_small, offset: [-6, -3]}
- - tags: {amenity: bicycle_parking, bicycle_parking: stands}
- shapes:
- - {shape: p_small, offset: [-5, -3]}
- - bicycle_parking_stand
- - tags: {amenity: bicycle_parking, bicycle_parking: wall_loops}
- shapes:
- - {shape: p_small, offset: [-5, -3]}
- - bicycle_parking_wall_loops
- - tags: {amenity: bicycle_parking, bicycle_parking: rack}
- shapes:
- - {shape: p_small, offset: [-5, -3]}
- - bicycle_parking_rack
- - tags: {amenity: telephone}
- shapes: [telephone]
- - tags: {information: "*"}
- shapes: [i]
- replace_shapes: no
- # tags: {tourism: "*"}
- # shapes: [historic]
- # replace_shapes: no
- - tags: {tourism: information}
- shapes: [i]
- - tags: {information: guidepost}
- shapes: [guidepost]
- - tags: {tourism: viewpoint}
- shapes: [binoculars]
- - tags: {information: board}
- shapes: [i_in_square]
- - tags: {buoy: "*"}
- shapes: [buoy]
- - tags: {"seamark:type": "*"}
- shapes: [buoy]
- - tags: {"waterway:sign": "*"}
- shapes: [buoy]
- - tags: {amenity: drinking_water}
- shapes: [drinking_water]
- - tags: {tourism: artwork}
- shapes: [picture]
- - tags: {tourism: artwork, artwork_type: statue}
- shapes: [statue]
- - tags: {tourism: artwork, artwork_type: stone}
- shapes: [stone_with_inscription]
- - tags: {exhibit: artwork, artwork_type: statue}
- shapes: [statue_exhibit]
- - tags: {tourism: artwork, artwork_type: sculpture}
- shapes: [statue]
- - tags: {exhibit: artwork, artwork_type: sculpture}
- shapes: [statue_exhibit]
- - tags: {exhibit: artwork, artwork_type: painting}
- shapes: [picture]
- - tags: {exhibit: artwork, artwork_type: stained_glass}
- shapes: [stained_glass]
- - tags: {tourism: attraction}
- shapes: [photo_camera]
- - tags: {xmas:feature: tree}
- shapes: {christmas_tree}
-
- - group: "Normal small objects"
- start_zoom_level: 18.0
- tags:
- - tags: {railway: switch}
- shapes: [y]
- - tags: {amenity: binoculars}
- shapes: [binoculars_on_pole]
- - tags: {amenity: parking_space}
- shapes: [p_small]
- - tags: {amenity: parking, parking: lane}
- shapes: [p_small]
- - tags: {amenity: parking, parking: street_side}
- shapes: [p_small]
- - tags: {amenity: post_box}
- shapes: [envelope]
- - tags: {amenity: recycling}
- shapes: [recycling_container]
- - tags: {amenity: recycling, recycling_type: container}
- shapes: [recycling_container]
- - tags: {amenity: shower}
- shapes: [shower]
- - tags: {amenity: vending_machine}
- shapes: [vending_machine]
- - tags: {vending: admission_tickets}
- shapes: [vending_tickets]
- - tags: {amenity: vending_machine, vending: admission_tickets}
- shapes: [vending_tickets]
- - tags: {vending: candles}
- shapes: [vending_candles]
- - tags: {amenity: vending_machine, vending: candles}
- shapes: [vending_candles]
- - tags: {vending: chemist}
- shapes: [vending_chemist]
- - tags: {amenity: vending_machine, vending: chemist}
- shapes: [vending_chemist]
- - tags: {vending: drinks}
- shapes: [vending_bottle]
- - tags: {amenity: vending_machine, vending: drinks}
- shapes: [vending_bottle]
- - tags: {vending: excrement_bags}
- shapes: [vending_excrement_bag]
- - tags: {amenity: vending_machine, vending: excrement_bags}
- shapes: [vending_excrement_bag]
- - tags: {vending: fishing_tackle}
- shapes: [vending_angle]
- - tags: {amenity: vending_machine, vending: fishing_tackle}
- shapes: [vending_angle]
- - tags: {vending: public_transport_tickets}
- shapes: [vending_tickets]
- - tags: {amenity: vending_machine, vending: public_transport_tickets}
- shapes: [vending_tickets]
- - tags: {vending: parking_tickets}
- shapes: [vending_p]
- - tags: {amenity: vending_machine, vending: parking_tickets}
- shapes: [vending_p]
- - tags: {vending: water}
- shapes: [vending_drop]
- - tags: {amenity: vending_machine, vending: water}
- shapes: [vending_drop]
- - tags: {fitness_station: horizontal_bar}
- shapes: [horizontal_bar]
- - tags: {fitness_station: rings}
- shapes: [rings]
- - tags: {fitness_station: wall_bars}
- shapes: [wall_bars]
- - tags: {fitness_station: sit-up}
- shapes: [sit_up]
- - tags: {fitness_station: horizontal_ladder}
- shapes: [horizontal_ladder]
- - tags: {fitness_station: push-up}
- shapes: [low_horizontal_bars]
- - tags: {playground: hopscotch}
- shapes: [hopscotch]
- - tags: {playground: slide}
- shapes: [slide]
- - tags: {attraction: water_slide}
- shapes: [slide_and_water]
- - tags: {playground: roundabout}
- shapes: [roundabout]
- - tags: {playground: sandpit}
- shapes: [sandpit]
- - tags: {playground: seesaw}
- shapes: [seesaw]
- - tags: {playground: horizontal_bar}
- shapes: [horizontal_bar]
- - tags: {leisure: picnic_table}
- shapes: [table]
- - tags: {highway: traffic_mirror}
- shapes: [side_mirror]
- - tags: {amenity: dressing_room}
- shapes: [hanger]
-
- - group: "Entrances"
- start_zoom_level: 18.0
- tags:
- - tags: {amenity: parking_entrance}
- shapes:
- - {shape: p, offset: [-1, 0]}
- - {shape: arrow_right, offset: [4, 5]}
- - tags: {amenity: parking_entrance, parking: underground}
- shapes: [{shape: p, offset: [-1, 0]}, {shape: arrow_down, offset: [4, 5]}]
- - tags: {amenity: parking_entrance, parking: multi-storey}
- shapes: [{shape: p, offset: [-1, 0]}, {shape: arrow_up, offset: [4, 5]}]
- - tags: {entrance: gate}
- shapes: [gate]
- - tags: {barrier: gate}
- shapes: [gate]
- - tags: {entrance: garage}
- shapes: [garage_door]
- - tags: {entrance: main}
- shapes: [main_entrance]
- - tags: {barrier: entrance}
- shapes: [entrance]
- - tags: {barrier: door}
- shapes: [entrance]
- - tags: {entrance: "yes"}
- shapes: [entrance]
- - tags: {building: entrance}
- shapes: [{shape: entrance, color: "#FF0000"}]
- - tags: {entrance: shop}
- shapes: [entrance]
- - tags: {entrance: exit}
- shapes: [exit]
- - tags: {entrance: service}
- shapes: [door_with_keyhole]
- - tags: {entrance: staircase}
- shapes: [staircase]
- - tags: {door: "no"}
- shapes: [no_door]
-
- - group: "Not important small objects"
- start_zoom_level: 18.0
- tags:
- - tags: {amenity: bench}
- shapes: [bench]
- - tags: {amenity: bench, backrest: "yes"}
- shapes: [bench_backrest]
- - tags: {amenity: bench, backrest: "no"}
- shapes: [bench_no_backrest]
- - tags: {amenity: bench, tourism: artwork, artwork_type: sculpture}
- shapes: [bench_with_statue]
- - tags: {amenity: bench, tourism: artwork, artwork_type: statue}
- shapes: [bench_with_statue]
- - tags: {historic: memorial, memorial: bench, amenity: bench}
- shapes: [bench_with_inscription]
- - tags: {historic: memorial, memorial: bench}
- shapes: [bench_with_inscription]
- - tags: {memorial: bench}
- shapes: [bench_with_inscription]
- - tags: {amenity: clock}
- shapes: [clock]
- - tags: {amenity: fountain}
- shapes: [{shape: fountain, color: water_border_color}]
- - tags: {fountain: bubbler}
- shapes: [fountain_bubbler]
- - tags: {fountain: roman_wolf}
- shapes: [fountain_roman_wolf]
- - tags: {fountain: toret}
- shapes: [fountain_toret]
- - tags: {amenity: waste_basket}
- shapes: [waste_basket]
- - tags: {amenity: waste_disposal}
- shapes: [waste_disposal]
- - tags: {highway: street_lamp}
- shapes: [street_lamp]
- - tags: {amenity: bbq}
- shapes: [bbq]
- - tags: {leisure: firepit}
- shapes: [fire_pit]
- - tags: {man_made: cross}
- shapes: [latin_cross]
- - tags: {man_made: flagpole}
- shapes: [flagpole]
- - tags: {man_made: manhole}
- shapes: [circle_9]
- - tags: {manhole: drain}
- shapes: [manhole_drain]
- - tags: {man_made: pole}
- shapes: [pole]
- - tags: {man_made: pole, highway: street_lamp}
- shapes: [pole_lamp]
- - tags: {man_made: street_cabinet}
- shapes: [street_cabinet]
- - tags: {man_made: surveillance}
- shapes: [cctv]
- - tags: {man_made: surveillance, camera:type: dome, camera:mount: ceiling}
- shapes: [cctv_dome_ceiling]
- - tags: {man_made: surveillance, camera:type: dome, camera:mount: wall}
- shapes: [cctv_dome_wall]
- - tags: {man_made: ventilation_shaft}
- shapes: [ventilation]
- - tags: {railway: ventilation_shaft}
- shapes: [ventilation]
- - tags: {advertising: billboard}
- shapes: [billboard]
- - tags: {advertising: column}
- shapes: [advertising_column]
- - tags: {natural: human}
- shapes: [human]
- - tags: {natural: rock}
- shapes: [stone]
- - tags: {natural: stone}
- shapes: [stone]
- - tags: {sloped_curb: "yes"}
- shapes: [lowered_kerb]
- - tags: {kerb: lowered}
- shapes: [lowered_kerb]
-
- - tags: {railway: buffer_stop}
- shapes: [buffer_stop]
- - tags: {traffic_sign: "*"}
- shapes: [guidepost]
- - tags: {traffic_sign: city_limit}
- shapes: [city_limit_sign]
- - tags: {traffic_sign: maxspeed, maxspeed: "^(\\d)(\\d)$"}
- shapes: [
- circle_11,
- {shape: digit_#maxspeed0, offset: [-2, 0], color: "#FFFFFF"},
- {shape: digit_#maxspeed1, offset: [2, 0], color: "#FFFFFF"},
- ]
- - tags: {traffic_sign: maxspeed, maxspeed: "^(\\d)(\\d) mph$"}
- shapes: [
- speed_limit_mph,
- {shape: digit_#maxspeed0, offset: [-2, 2]},
- {shape: digit_#maxspeed1, offset: [2, 2]},
- ]
- - tags: {highway: milestone}
- shapes: [milestone]
- - tags: {traffic_sign: stop}
- shapes: [stop]
- - tags: {highway: give_way}
- shapes: [triangle_down_hollow]
- - tags: {noexit: "yes"}
- shapes: [t]
- - tags: {barrier: block}
- shapes: [block]
- - tags: {barrier: rock}
- shapes: [stone]
- - tags: {barrier: bollard}
- shapes: [bollard]
- - tags: {barrier: kerb}
- shapes: [kerb]
- - tags: {tank_trap: czech_hedgehog}
- shapes: [czech_hedgehog]
- - tags: {tank_trap: dragons_teeth}
- shapes: [dragons_teeth]
- - tags: {tank_trap: toblerone}
- shapes: [dragons_teeth]
-
- - group: "Trees"
- start_zoom_level: 18.0
- tags:
- - tags: {natural: tree}
- shapes: [{shape: tree, color: tree_color, outline: no}]
- - tags: {leaf_type: broadleaved}
- shapes: [{shape: tree_with_leaf, color: tree_color}]
- - tags: {leaf_type: needleleaved}
- shapes: [{shape: needleleaved_tree, color: tree_color}]
- - tags: {leaf_type: palm}
- shapes: [{shape: palm, color: tree_color}]
- - tags: {natural: tree, leaf_type: broadleaved}
- shapes: [{shape: tree_with_leaf, color: tree_color}]
- - tags: {natural: tree, leaf_type: needleleaved}
- shapes: [{shape: needleleaved_tree, color: tree_color}]
- - tags: {natural: tree, leaf_type: palm}
- shapes: [{shape: palm, color: tree_color}]
- - tags: {natural: tree, type: conifer}
- shapes: [{shape: needleleaved_tree, color: tree_color}]
- - tags: {leaf_cycle: deciduous}
- set_main_color: decidious_color
- - tags: {leaf_cycle: evergreen}
- set_main_color: evergreen_color
- - tags: {natural: tree, leaf_cycle: deciduous}
- set_main_color: decidious_color
- - tags: {natural: tree, leaf_cycle: evergreen}
- set_main_color: evergreen_color
- - tags: {natural: bush}
- shapes: [{shape: bush, color: tree_color}]
- - tags: {natural: shrub}
- shapes: [{shape: bush, color: tree_color}]
-
- - tags: {natural: tree, genus: Betula}
- shapes: [{shape: betula, color: tree_color}]
- - tags: {natural: tree, "genus:en": Birch}
- shapes: [{shape: betula, color: tree_color}]
- - tags: {natural: tree, "genus:ru": Берёза}
- shapes: [{shape: betula, color: tree_color}]
-
- - tags: {natural: tree, genus: Acer}
- shapes: [{shape: tree, color: tree_color}]
- add_shapes: [{shape: leaf_maple, color: tree_color}]
- - tags: {natural: tree, "genus:en": Maple}
- shapes: [{shape: tree, color: tree_color}]
- add_shapes: [{shape: leaf_maple, color: tree_color}]
-
- - tags: {natural: tree, genus: Malus}
- shapes: [{shape: tree, color: tree_color}]
- add_shapes: [{shape: apple, color: tree_color}]
-
- - tags: {natural: tree, genus: Pyrus}
- shapes: [{shape: tree, color: tree_color}]
- add_shapes: [{shape: pear, color: tree_color}]
-
- - group: "Indoor"
- start_zoom_level: 18.0
- tags:
- - tags: {door: "yes"}
- shapes: [entrance]
- - tags: {indoor: pillar}
- shapes: [pillar]
-
- - group: "Mass objects"
- start_zoom_level: 19.0
- tags:
- - tags: {tourism: camp_pitch}
- shapes: [camp]
-
- - group: "Add and over"
- tags:
- - tags: {support: pole}
- over_icon: [support_pole]
- under_icon: [clock, i_in_square]
- - tags: {support: wall_mounted}
- over_icon: [support_wall]
- under_icon: [clock, i_in_square]
- - tags: {support: column}
- over_icon: [support_column]
- under_icon: [clock, i_in_square]
- - tags: {amenity: "*", karaoke: "yes"}
- add_shapes: [microphone]
- - tags: {building: "*", "roof:shape": onion}
- add_shapes: [onion_roof_shape]
- - tags: {natural: tree, denotation: urban}
- over_icon: [urban_tree_pot]
- under_icon: [tree, tree_with_leaf, needleleaved_tree, betula, palm]
- - tags: {natural: tree, denotation: avenue}
- over_icon: [bottom_right_horizontal_line]
- under_icon: [tree, tree_with_leaf, needleleaved_tree, betula, palm]
-
- - tags: {wheelchair: "yes"}
- add_shapes: [wheelchair]
- - tags: {wheelchair: "no"}
- add_shapes: [no_wheelchair]
- - tags: {foot: "yes"}
- add_shapes: [foot]
- - tags: {foot: "no"}
- add_shapes: [no_foot]
- - tags: {bicycle: "yes"}
- add_shapes: [bicycle]
- - tags: {bicycle: "no"}
- shapes:
- - {shape: bicycle, offset: [0, 2]}
- - {shape: x_4, offset: [-5, -4]}
- - tags: {internet_access: wlan, "internet_access:fee": "no"}
- add_shapes:
- - {shape: wlan, offset: [0, -3]}
- - {shape: free, offset: [0, 5]}
- - tags: {internet_access: wlan}
- exception: {"internet_access:fee": "*"}
- add_shapes: [wlan]
- - tags: {material: wood}
- add_shapes: [{shape: wood, color: trunk_color}]
- - tags: {access: private}
- add_shapes: [lock_with_keyhole]
- - tags: {access: "no"}
- add_shapes: [lock]
- - tags: {direction: clockwise}
- add_shapes: [clockwise]
- - tags: {direction: anticlockwise}
- add_shapes: [counterclockwise]
- - tags: {atm: "yes"}
- add_shapes: [atm]
- - tags: {tactile_paving: "yes"}
- add_shapes: [tactile_paving]
- - tags: {tactile_paving: "no"}
- add_shapes:
- - {shape: tactile_paving, offset: [0, 2]}
- - {shape: x_5, offset: [0, -3]}
- - tags: {"payment:credit_cards": "yes"}
- add_shapes: [credit_card]
-
- - tags: {bus: "yes"}
- add_shapes: [bus]
- - tags: {motorcar: "yes"}
- add_shapes: [car]
- - tags: {car: "yes"}
- add_shapes: [car]
- - tags: {monorail: "yes"}
- add_shapes: [monorail]
- - tags: {trolleybus: "yes"}
- add_shapes: [trolleybus]
-
- - tags: {recycling:glass_bottles: "yes"}
- add_shapes: [bottle]
- - tags: {recycling:paper: "yes"}
- add_shapes: [gazette]
- - tags: {recycling:glass: "yes"}
- add_shapes: [bottle_and_wine_glass]
- - tags: {recycling:clothes: "yes"}
- add_shapes: [t_shirt]
- - tags: {recycling:shoes: "yes"}
- add_shapes: [shoe]
- - tags: {recycling:green_waste: "yes"}
- add_shapes: [apple]
- - tags: {recycling:paper_packaging: "yes"}
- add_shapes: [gazette]
- - tags: {recycling:newspaper: "yes"}
- add_shapes: [gazette]
- - tags: {recycling:magazines: "yes"}
- add_shapes: [gazette]
- - tags: {recycling:books: "yes"}
- add_shapes: [book]
- - tags: {recycling:wood: "yes"}
- add_shapes: [{shape: wood, color: trunk_color}]
- - tags: {recycling:glass_bottles:colour: "yes"}
- add_shapes: [{shape: bottle, color: green}]
- - tags: {recycling:cartons: "yes"}
- add_shapes: [aseptic_carton]
- - tags: {recycling:beverage_cartons: "yes"}
- add_shapes: [aseptic_carton]
- - tags: {recycling:organic: "yes"}
- add_shapes: [apple]
- - tags: {recycling:tetrapak: "yes"}
- add_shapes: [aseptic_carton]
- - tags: {recycling:tyres: "yes"}
- add_shapes: [tyre]
- - tags: {recycling:toys: "yes"}
- add_shapes: [toy_horse]
- - tags: {recycling:verre: "yes"}
- add_shapes: [bottle_and_wine_glass]
- - tags: {recycling:bags: "yes"}
- add_shapes: [bag]
-
- - tags: {crossing:island: "yes"}
- add_shapes: [rectangle_vertical_rounded]
- - tags: {crossing:island: "no"}
- add_shapes: [rectangle_vertical_rounded_crossed]
-
- - tags: {parking: "yes"}
- add_shapes: [p]
- - tags: {drinking_water: "yes"}
- add_shapes: [drinking_water]
- - tags: {toilets: "yes"}
- add_shapes: [woman_and_man]
- - tags: {washing_machine: "yes"}
- add_shapes: [washing_machine]
- - tags: {shower: "yes"}
- add_shapes: [shower]
- - tags: {dog: "yes"}
- add_shapes: [dog]
-
- # For tourism=camp_pitch
-
- - tags: {caravans: "yes"}
- add_shapes: [caravan]
- - tags: {tents: "yes"}
- add_shapes: [camp]
- - tags: {fireplace: "yes"}
- add_shapes: [fireplace]
- - tags: {openfire: "yes"}
- add_shapes: [fire_pit]
- - tags: {bbq: "yes"}
- add_shapes: [bbq]
-
-roads:
- - tags: {highway: motorway}
- default_width: 7.0
- border_color: motorway_border_color
- color: motorway_color
- priority: 41.8
- - tags: {highway: trunk}
- default_width: 7.0
- border_color: motorway_border_color
- color: motorway_color
- priority: 41.0
- - tags: {highway: trunk_link}
- default_width: 7.0
- border_color: motorway_border_color
- color: motorway_color
- priority: 41.0
- - tags: {highway: primary}
- default_width: 7.0
- border_color: primary_border_color
- color: primary_color
- priority: 41.7
- - tags: {highway: motorway_link}
- default_width: 7.0
- border_color: motorway_border_color
- color: motorway_color
- priority: 41.8
- - tags: {highway: secondary}
- default_width: 7.0
- border_color: secondary_border_color
- priority: 41.6
- color: secondary_color
- - tags: {highway: secondary_link}
- default_width: 7.0
- border_color: secondary_border_color
- priority: 41.6
- color: secondary_color
- - tags: {highway: tertiary}
- default_width: 7.0
- border_color: tertiary_border_color
- priority: 41.5
- color: tertiary_color
- - tags: {highway: tertiary_link}
- default_width: 7.0
- border_color: tertiary_border_color
- priority: 41.5
- color: tertiary_color
- - tags: {highway: unclassified}
- default_width: 5.0
- border_color: road_border_color
- priority: 41.0
- - tags: {highway: residential}
- default_width: 5.0
- border_color: road_border_color
- priority: 41.0
- - tags: {highway: living_street}
- default_width: 4.0
- border_color: road_border_color
- priority: 41.0
- - tags: {highway: service}
- exception: {service: parking_aisle}
- default_width: 3.0
- border_color: road_border_color
- priority: 41.0
- - tags: {highway: service, service: parking_aisle}
- default_width: 2.0
- border_color: road_border_color
- priority: 41.0
- - tags: {leisure: track}
- color: pitch_color
- border_color: pitch_border_color
- default_width: 5.0
- priority: 21.0
-
- - tags: {highway: raceway}
- color: pitch_color
- border_color: pitch_border_color
- default_width: 7.0
- priority: 21.0
-
-ways:
- - tags: {man_made: bridge}
- style: {fill: "#AAAAAA"}
- priority: 22.0
- - tags: {man_made: pier}
- style:
- stroke-linecap: round
- stroke-linejoin: round
- stroke-width: 5
- stroke: background_color
- priority: 22.0
- - tags: {indoor: area}
- style:
- stroke: indoor_border_color
- stroke-width: 1.0
- fill: indoor_color
- priority: 10.0
- - tags: {indoor: corridor}
- style:
- stroke: indoor_border_color
- stroke-width: 1.0
- fill: indoor_color
- priority: 11.0
- - tags: {highway: corridor}
- style:
- stroke: "#00FF00"
- stroke-width: 5.0
- priority: 11.0
- - tags: {indoor: "yes", area: "yes"}
- style:
- stroke: indoor_color
- stroke-width: 1.0
- fill: indoor_color
- priority: 12.0
- - tags: {indoor: room}
- style:
- stroke: indoor_border_color
- stroke-width: 1.0
- priority: 12.0
- - tags: {indoor: elevator, area: "yes"}
- style:
- stroke: indoor_color
- stroke-width: 1.0
- fill: indoor_color
- priority: 12.0
- - tags: {indoor: column}
- style:
- stroke: indoor_column_color
- stroke-width: 1.0
- fill: indoor_column_color
- priority: 13.0
-
- - tags: {power: line}
- style:
- stroke: "#000000"
- stroke-width: 1.0
- opacity: 0.2
- priority: 80.0
- - tags: {power: cable}
- style:
- stroke: "#000000"
- stroke-width: 1.0
- opacity: 0.1
- priority: 80.0
- - tags: {golf: hole}
- style:
- stroke: "#44AA33"
- stroke-width: 1.0
- opacity: 0.6
- priority: 80.0
- - tags: {man_made: pipeline}
- style:
- stroke: "#888888"
- stroke-width: 1.0
- stroke-dasharray: "12.0,1.5"
- priority: 80.0
- - tags: {man_made: pipeline}
- style:
- stroke: "#888888"
- stroke-width: 3.0
- stroke-dasharray: "1.0,10.0,1.0,1.5"
- priority: 80.0
-
- - tags: {attraction: water_slide}
- style:
- stroke: "#FFFFFF"
- stroke-width: 2.0
- priority: 81
- - tags: {attraction: water_slide}
- style:
- stroke: "#888888"
- stroke-width: 4.0
- priority: 80.0
-
- - tags: {highway: track}
- style:
- stroke-width: 1.5
- stroke: track_color
- stroke-linecap: round
- stroke-linejoin: round
- priority: 41.0
- - tags: {highway: footway}
- exception: {area: "yes", type: "multipolygon"}
- style:
- stroke-width: 3.0
- stroke: foot_border_color
- stroke-linecap: round
- stroke-linejoin: round
- priority: 41.0
- - tags: {highway: pedestrian}
- exception: {area: "yes"}
- style:
- stroke-width: 3.0
- stroke: foot_border_color
- stroke-linecap: round
- stroke-linejoin: round
- priority: 41.0
- - tags: {highway: cycleway}
- exception: {area: "yes"}
- style:
- stroke-width: 3.0
- stroke: foot_border_color
- stroke-linecap: round
- stroke-linejoin: round
- priority: 41.0
- - tags: {highway: steps}
- style:
- stroke-width: 6.0
- stroke: foot_border_color
- stroke-linecap: butt
- - tags: {highway: path}
- style:
- stroke-width: 3.0
- stroke: foot_border_color
- priority: 41.0
-
- - tags: {highway: footway}
- exception: {area: "yes", type: "multipolygon"}
- style:
- stroke-width: 1.5
- stroke-dasharray: 7.0,3.0
- stroke-linecap: round
- stroke-linejoin: round
- stroke: foot_color
- priority: 42.0
- - tags: {highway: pedestrian}
- exception: {area: "yes"}
- style:
- stroke-width: 1.5
- stroke-dasharray: 7.0,3.0
- stroke-linecap: round
- stroke-linejoin: round
- stroke: foot_color
- priority: 42.0
- - tags: {highway: footway, area: "yes"}
- style:
- stroke: foot_area_border_color
- fill: foot_area_color
- stroke-linecap: round
- stroke-linejoin: round
- priority: 55.0
- - tags: {highway: footway, type: "multipolygon"}
- style:
- stroke: foot_area_border_color
- fill: foot_area_color
- stroke-linecap: round
- stroke-linejoin: round
- priority: 55.0
- - tags: {highway: pedestrian, area: "yes"}
- style:
- stroke: none
- fill: foot_area_color
- stroke-linecap: round
- stroke-linejoin: round
- priority: -55.0 # FIXME
- - tags: {highway: cycleway}
- exception: {area: "yes"}
- style:
- stroke-width: 1.0
- stroke: cycle_color
- stroke-dasharray: 8.0,2.0
- stroke-linecap: butt
- priority: 42.0
- - tags: {highway: steps, conveying: "*"}
- style:
- stroke-width: 5.0
- stroke-dasharray: 1.5,2.0
- stroke-linecap: butt
- stroke: "#888888"
- priority: 42.0
- - tags: {highway: steps}
- exception: {conveying: "*"}
- style:
- stroke-width: 5.0
- stroke-dasharray: 1.5,2.0
- stroke-linecap: butt
- stroke: foot_color
- priority: 42.0
- - tags: {highway: path}
- style:
- stroke-width: 1.5
- stroke-dasharray: 5.0,3.0
- stroke-linecap: butt
- stroke: foot_color
- priority: 42.0
-
- - tags: {aeroway: runway}
- style:
- stroke-width: 50.0
- stroke: runway_color
- priority: 22.0
- - tags: {aeroway: taxiway}
- style:
- stroke-width: 50.0
- stroke: taxiway_color
- priority: 21.0
- - tags: {aeroway: runway}
- style:
- stroke-width: 2.0
- stroke: "#DDDDDD"
- stroke-dasharray: 40.0,20.0
- priority: 23.0
- - tags: {aeroway: taxiway}
- style:
- stroke-width: 1.0
- stroke: "#CCCCCC"
- priority: 23.0
- - tags: {aeroway: parking_position}
- style:
- stroke-width: 1.0
- stroke: "#DDCC00"
- priority: 23.0
- - tags: {area:aeroway: taxiway}
- style:
- fill: "#CCCCCC"
- priority: 20.0
-
- - tags: {natural: wood}
- style:
- fill: wood_color
- priority: 21.0
- - tags: {natural: wetland}
- style:
- fill: wetland_color
- priority: 21.0
- - tags: {natural: grassland}
- style:
- fill: grass_color
- stroke: grass_border_color
- priority: 20.0
- - tags: {natural: scrub}
- style:
- fill: wood_color
- priority: 21.0
- - tags: {natural: sand}
- style:
- fill: sand_color
- priority: 20.0
- - tags: {natural: beach}
- style:
- fill: beach_color
- priority: 20.0
- - tags: {natural: heath}
- style:
- fill: "#DDDDDD"
- priority: 20.0
- - tags: {natural: glacier}
- style:
- fill: "#FFFFFF"
- priority: 20.0
- - tags: {natural: desert}
- style:
- fill: desert_color
- priority: 20.0
- - tags: {natural: forest}
- style:
- fill: wood_color
- priority: 21.0
- - tags: {natural: tree_row}
- priority: 21.0
- style:
- stroke: wood_color
- stroke-width: 5.0
- stroke-linecap: round
- stroke-linejoin: round
- - tags: {natural: water}
- exception: {intermittent: "yes"}
- style:
- fill: water_color
- # stroke: water_border_color
- # stroke-width: 1.0
- priority: 21.0
- - tags: {natural: water, intermittent: "yes"}
- style:
- fill: water_color
- opacity: 0.5
- # stroke: water_border_color
- # stroke-width: 1.0
- priority: 21.0
- - tags: {natural: coastline}
- style:
- fill: water_color
- stroke: water_border_color
- stroke-width: 1.0
- priority: 21.0
- - tags: {natural: ridge}
- style:
- stroke-width: 2.0
- opacity: 0.3
- stroke: ridge_color
- priority: 21.0
- - tags: {natural: bare_rock}
- style:
- fill: rock_color
- - tags: {natural: cliff}
- style:
- stroke-width: 1.0
- stroke: "#BBBBBB"
- - tags: {natural: cliff}
- parallel_offset: -2.5
- style:
- stroke-width: 5.0
- stroke: "#BBBBBB"
- stroke-dasharray: "1,10"
- - tags: {natural: scree}
- style:
- fill: scree_color
-
- - tags: {landuse: allotments}
- style:
- fill: allotments_color
- priority: 20.0
- - tags: {landuse: conservation}
- style:
- fill: grass_color
- priority: 20.0
- - tags: {landuse: construction}
- style:
- fill: construction_color
- - tags: {landuse: farmland}
- style: {fill: farmland_color, stroke: farmland_border_color}
- priority: 20.0
- - tags: {landuse: greenhouse_horticulture}
- style: {fill: farmland_color, stroke: farmland_border_color}
- priority: 20.0
- - tags: {landuse: farmyard}
- style: {fill: farmland_color, stroke: farmland_border_color} # FIXME
- priority: 20.0
- - tags: {landuse: farmland, crop: wheat}
- style: {fill: wheat_color, stroke: wheat_border_color}
- priority: 20.0
- - tags: {landuse: farmland, crop: barley}
- style: {fill: barley_color, stroke: barley_border_color}
- priority: 20.0
- - tags: {landuse: farmland, crop: rye}
- style: {fill: rye_color, stroke: rye_dark_color}
- priority: 20.0
- - tags: {landuse: forest}
- style:
- fill: wood_color
- priority: 20.0
- - tags: {landuse: garages}
- style:
- fill: parking_color
- priority: 21.0
- - tags: {landuse: village_green}
- style:
- fill: village_green_color
- priority: 20.0
- - tags: {landuse: grass}
- style:
- fill: grass_color
- stroke: grass_border_color
- priority: 20.0
- - tags: {landuse: orchard}
- style:
- fill: orchard_color
- priority: 21.0
- - tags: {landuse: meadow}
- style:
- fill: meadow_color
- stroke: meadow_border_color
- priority: 20.0
- - tags: {tourism: camp_pitch}
- style:
- stroke: "#000000"
- opacity: 0.1
- priority: 100.0
-
- # Hidden land use
-
- - tags: {landuse: cemetery}
- style:
- fill: hidden_color
- opacity: 0.05
- priority: 1.0
- - tags: {landuse: commercial}
- style:
- fill: hidden_color
- opacity: 0.05
- priority: 1.0
- - tags: {landuse: industrial}
- style:
- fill: hidden_color
- opacity: 0.05
- priority: 1.0
- - tags: {landuse: military}
- style:
- fill: hidden_color
- opacity: 0.05
- priority: 1.0
- - tags: {landuse: railway}
- style:
- fill: hidden_color
- opacity: 0.05
- priority: 1.0
- - tags: {landuse: residential}
- style:
- fill: hidden_color
- opacity: 0.05
- priority: 1.0
- - tags: {power: substation}
- style:
- fill: hidden_color
- opacity: 0.05
- priority: 1.0
-
- - tags: {amenity: ferry_terminal}
- style:
- fill: ferry_terminal_color
- priority: 50.0
- - tags: {amenity: parking}
- style:
- fill: parking_color
- opacity: 0.5
- - tags: {amenity: parking_space}
- style:
- stroke: "#FFFFFF"
-
- - tags: {aeroway: landingpad}
- style:
- fill: "#000000"
- opacity: 0.1
- - tags: {aeroway: helipad}
- style:
- fill: "#440044"
- opacity: 0.1
-
- - tags: {waterway: river}
- style:
- stroke: water_color
- stroke-width: 2.5
- priority: 22.0
- - tags: {waterway: canal}
- style:
- stroke: water_color
- stroke-width: 2.0
- priority: 22.0
- - tags: {waterway: stream}
- style:
- stroke: water_color
- stroke-width: 1.5
- priority: 22.0
- - tags: {waterway: riverbank}
- style:
- fill: water_color
- stroke: water_border_color
- stroke-width: 1.0
- priority: 22.0
- - tags: {waterway: ditch}
- style:
- fill: water_color
- stroke: water_color
- stroke-width: 2.0
- priority: 22.0
-
- - tags: {railway: subway}
- style:
- stroke-width: 3.5
- opacity: 0.7
- stroke: "#AAAAAA"
- priority: 41.0
- - tags: {railway: rail}
- style:
- stroke-width: 3.0
- stroke: "#BBBBBB"
- priority: 42.0
- - tags: {railway: light_rail}
- style:
- stroke-width: 3.0
- stroke: "#CCCCCC"
- priority: 42.0
- - tags: {railway: monorail}
- style:
- stroke-width: 3.0
- stroke: "#CCCCCC"
- priority: 42.0
- - tags: {railway: funicular}
- style:
- stroke-width: 3.0
- stroke: "#CCCCCC"
- priority: 42.0
- - tags: {railway: narrow_gauge}
- style:
- stroke-width: 3.0
- stroke: "#DDDDDD"
- priority: 42.0
- - tags: {railway: tram}
- style:
- stroke-width: 3.0
- stroke: "#BBBBBB"
- priority: 42.0
- - tags: {railway: construction}
- style:
- stroke-width: 2.0
- stroke: "#000000"
- stroke-dasharray: 6,3
- opacity: 0.3
- priority: 42.0
- - tags: {railway: disused}
- style:
- stroke-width: 3.0
- stroke: "#000000"
- stroke-dasharray: 6,6
- opacity: 0.3
- priority: 42.0
- - tags: {railway: abandoned}
- style:
- stroke-width: 3.0
- stroke: "#000000"
- stroke-dasharray: 6,9
- opacity: 0.3
- priority: 42.0
-
- - tags: {railway: rail}
- style:
- stroke-width: 1.0
- stroke: "#444444"
- priority: 43.0
- - tags: {railway: light_rail}
- style:
- stroke-width: 1.0
- stroke: "#444444"
- priority: 43.0
- - tags: {railway: monorail}
- style:
- stroke-width: 1.0
- stroke: "#444444"
- priority: 43.0
- - tags: {railway: funicular}
- style:
- stroke-width: 1.0
- stroke: "#444444"
- priority: 43.0
- - tags: {railway: narrow_gauge}
- style:
- stroke-width: 1.0
- stroke: "#444444"
- priority: 43.0
- - tags: {railway: tram}
- style:
- stroke-width: 1.0
- stroke: "#444444"
- priority: 43.0
-
- - tags: {railway: platform}
- style:
- fill: platform_color
- stroke-width: 1.0
- stroke: platform_border_color
- priority: 41.0
-
- - tags: {route: ferry}
- style:
- stroke-width: 1.0
- stroke-dasharray: 3.0,3.0
- stroke-linecap: butt
- stroke: route_color
- priority: 42.0
-
- - tags: {leisure: swimming_area}
- style:
- fill: swimming_area_color
- priority: 22.0 # Should be over water.
- - tags: {leisure: garden}
- style:
- fill: grass_color
- priority: 21.0
- - tags: {leisure: park}
- style:
- fill: park_color
- opacity: 0.5
- - tags: {landuse: recreation_ground}
- style:
- fill: grass_color
- opacity: 0.5
- - tags: {leisure: recreation_ground}
- style:
- fill: grass_color
- opacity: 0.5
- - tags: {leisure: stadium}
- style:
- fill: grass_color
- opacity: 0.5
- - tags: {leisure: golf_course}
- style:
- fill: grass_color
- opacity: 0.5
- - tags: {leisure: pitch}
- style:
- fill: pitch_color
- stroke: pitch_border_color
- stroke-width: 1.0
- priority: 21.0
- - tags: {leisure: bleachers}
- style:
- fill: pitch_color
- stroke: pitch_border_color
- stroke-width: 1.0
- priority: 21.0
- - tags: {leisure: track, area: "yes"}
- style:
- fill: pitch_color
- stroke: pitch_border_color
- stroke-width: 1.0
- priority: 21.0
- - tags: {leisure: fitness_station}
- style:
- fill: pitch_color
- stroke: pitch_border_color
- stroke-width: 1.0
- priority: 21.0
- - tags: {leisure: playground}
- style:
- fill: playground_color
- stroke: playground_border_color
- priority: 21.0
- - tags: {leisure: swimming_pool}
- style:
- fill: water_color
- stroke: water_border_color
- stroke-width: 1.0
-
- - tags: {tourism: artwork}
- style:
- stroke: "#888888"
- stroke-width: 1.0
- priority: 10.0
- - tags: {barrier: hedge}
- style:
- fill: none
- stroke: wood_color
- stroke-width: 4.0
- priority: 40.0
- - tags: {barrier: city_wall}
- style:
- fill: none
- stroke: "#000000"
- stroke-width: 2.0
- opacity: 0.5
- priority: 40.0
- - tags: {barrier: wall}
- style:
- fill: none
- stroke: "#000000"
- stroke-width: 1.5
- opacity: 0.4
- priority: 40.0
- - tags: {man_made: embankment}
- style:
- fill: none
- stroke: "#000000"
- stroke-width: 1.0
- opacity: 0.3
- priority: 40.0
- - tags: {man_made: embankment}
- parallel_offset: -1.5
- style:
- fill: none
- stroke: "#000000"
- stroke-width: 3.0
- opacity: 0.3
- stroke-dasharray: "1,7"
- priority: 40.0
- - tags: {barrier: fence}
- style:
- fill: none
- stroke: "#000000"
- stroke-width: 1.0
- opacity: 0.25
- priority: 40.0
- - tags: {barrier: retaining_wall}
- style:
- fill: none
- stroke: "#000000"
- stroke-width: 1.0
- opacity: 0.25
- priority: 40.0
- - tags: {barrier: handrail}
- style:
- fill: none
- stroke: "#000000"
- stroke-width: 1.0
- opacity: 0.2
- priority: 40.0
- - tags: {barrier: kerb}
- style:
- fill: none
- stroke: "#000000"
- stroke-width: 1.0
- opacity: 0.15
- priority: 40.0
-
- - tags: {border: "*"}
- style:
- stroke: "#FF0000"
- stroke-width: 0.5
- stroke-dasharray: 10.0,20.0
- - tags: {"area:highway": "*"}
-
- - tags: {boundary: "*"}
- # style:
- # stroke: boundary_color
- # stroke-width: 0.3
- # stroke-dasharray: 10.0,5.0
- priority: 60.0
-
-area_tags:
- - tags: {aeroway: "*"}
- - tags: {building: "*"}
- - tags: {landuse: "*"}
- - tags: {leisure: "*"}
- - tags: {natural: "*"}
- exception: {natural: "tree_row"}
- - tags: {indoor: "corridor"}
- - tags: {power: "compensator"}
- - tags: {power: "substation"}
-
-keys_to_write:
- - "STIF:zone"
- - "alt_name"
- - "artist_name"
- - "booth"
- - "branch"
- - "brand"
- - "capacity"
- - "cladr:code"
- - "collection_times"
- - "created_by"
- - "cuisine"
- - "cyclestreets_id"
- - "description"
- - "designation"
- - "destination"
- - "ele"
- - "email"
- - "end_date"
- - "facebook"
- - "fax"
- - "fhrs:confidence_management"
- - "fhrs:hygiene"
- - "fhrs:id"
- - "fhrs:inspectiondate"
- - "fhrs:local_authority_id"
- - "fhrs:rating"
- - "fhrs:rating_date"
- - "flickr"
- - "full_name"
- - "genus"
- - "height"
- - "image"
- - "information"
- - "inscription"
- - "int_name"
- - "is_in"
- - "last_collection"
- - "local_ref"
- - "manufacturer"
- - "media:commons"
- - "min_height"
- - "name"
- - "naptan:AltCommonName"
- - "naptan:AltStreet"
- - "naptan:AtcoCode"
- - "naptan:Bearing"
- - "naptan:BusStopType"
- - "naptan:CommonName"
- - "naptan:Crossing"
- - "naptan:Indicator"
- - "naptan:Landmark"
- - "naptan:NaptanCode"
- - "naptan:Notes"
- - "naptan:PlusbusZoneRef"
- - "naptan:ShotCommonName"
- - "naptan:Street"
- - "naptan:verified"
- - "network"
- - "official_name"
- - "old_name"
- - "opening_hours"
- - "opening_hours:url"
- - "operator"
- - "phone"
- - "phone_1"
- - "platforms"
- - "postal_code"
- - "ref"
- - "ref_no"
- - "route_ref"
- - "royal_cypher"
- - "seats"
- - "species"
- - "start_date"
- - "survey:date"
- - "taxon"
- - "telephone"
- - "twitter"
- - "uk_postcode_centroid"
- - "uri"
- - "url"
- - "voltage"
- - "website"
- - "website_2"
- - "wikidata"
- - "wikipedia"
-
-prefix_to_write:
- - "addr"
- - "alt_name"
- - "contact"
- - "description"
- - "genus"
- - "inscription"
- - "is_in"
- - "manufacturer"
- - "name"
- - "old_name"
- - "operator"
- - "route_ref"
- - "species"
- - "taxon"
- - "website"
- - "wikipedia"
-
-keys_to_skip:
- - "FIXME"
- - "attribution"
- - "building:levels"
- - "building:part"
- - "comment"
- - "created_by"
- - "curve_geometry"
- - "diameter_crown"
- - "fixme"
- - "import_uuid"
- - "indoor"
- - "junction"
- - "layer"
- - "level"
- - "level:ref"
- - "location:transition"
- - "mapillary"
- - "naptan:verified:note"
- - "note"
- - "osak:identifier"
- - "place"
- - "ref:opendataparis:adresse"
- - "ref:opendataparis:geo_point_2d"
- - "source"
- - "source_ref"
-
-prefix_to_skip:
- - "demolished"
- - "mapillary"
- - "source"
- - "razed"
- - "removed"
-
-tags_to_skip:
- highway: motorway_junction
diff --git a/map_machine/scheme/keys.yml b/map_machine/scheme/keys.yml
new file mode 100644
index 0000000..28c29de
--- /dev/null
+++ b/map_machine/scheme/keys.yml
@@ -0,0 +1,142 @@
+keys_to_write:
+ - "STIF:zone"
+ - "alt_name"
+ - "artist_name"
+ - "booth"
+ - "branch"
+ - "brand"
+ - "capacity"
+ - "cladr:code"
+ - "collection_times"
+ - "created_by"
+ - "cuisine"
+ - "cyclestreets_id"
+ - "description"
+ - "designation"
+ - "destination"
+ - "ele"
+ - "email"
+ - "end_date"
+ - "facebook"
+ - "fax"
+ - "fhrs:confidence_management"
+ - "fhrs:hygiene"
+ - "fhrs:id"
+ - "fhrs:inspectiondate"
+ - "fhrs:local_authority_id"
+ - "fhrs:rating"
+ - "fhrs:rating_date"
+ - "flickr"
+ - "full_name"
+ - "genus"
+ - "height"
+ - "image"
+ - "information"
+ - "inscription"
+ - "int_name"
+ - "is_in"
+ - "last_collection"
+ - "local_ref"
+ - "manufacturer"
+ - "media:commons"
+ - "min_height"
+ - "name"
+ - "naptan:AltCommonName"
+ - "naptan:AltStreet"
+ - "naptan:AtcoCode"
+ - "naptan:Bearing"
+ - "naptan:BusStopType"
+ - "naptan:CommonName"
+ - "naptan:Crossing"
+ - "naptan:Indicator"
+ - "naptan:Landmark"
+ - "naptan:NaptanCode"
+ - "naptan:Notes"
+ - "naptan:PlusbusZoneRef"
+ - "naptan:ShotCommonName"
+ - "naptan:Street"
+ - "naptan:verified"
+ - "network"
+ - "official_name"
+ - "old_name"
+ - "opening_hours"
+ - "opening_hours:url"
+ - "operator"
+ - "phone"
+ - "phone_1"
+ - "platforms"
+ - "postal_code"
+ - "ref"
+ - "ref_no"
+ - "route_ref"
+ - "royal_cypher"
+ - "seats"
+ - "species"
+ - "start_date"
+ - "survey:date"
+ - "taxon"
+ - "telephone"
+ - "twitter"
+ - "uk_postcode_centroid"
+ - "uri"
+ - "url"
+ - "voltage"
+ - "website"
+ - "website_2"
+ - "wikidata"
+ - "wikipedia"
+
+prefix_to_write:
+ - "addr"
+ - "alt_name"
+ - "contact"
+ - "description"
+ - "genus"
+ - "inscription"
+ - "is_in"
+ - "manufacturer"
+ - "name"
+ - "old_name"
+ - "operator"
+ - "route_ref"
+ - "species"
+ - "taxon"
+ - "website"
+ - "wikipedia"
+
+keys_to_skip:
+ - "FIXME"
+ - "attribution"
+ - "building:levels"
+ - "building:part"
+ - "comment"
+ - "created_by"
+ - "curve_geometry"
+ - "diameter_crown"
+ - "fixme"
+ - "import_uuid"
+ - "indoor"
+ - "junction"
+ - "layer"
+ - "level"
+ - "level:ref"
+ - "location:transition"
+ - "mapillary"
+ - "naptan:verified:note"
+ - "note"
+ - "osak:identifier"
+ - "place"
+ - "ref:opendataparis:adresse"
+ - "ref:opendataparis:geo_point_2d"
+ - "source"
+ - "source_ref"
+
+prefix_to_skip:
+ - "demolished"
+ - "mapillary"
+ - "source"
+ - "razed"
+ - "removed"
+
+tags_to_skip:
+ highway: motorway_junction
\ No newline at end of file
diff --git a/map_machine/scheme/nodes.yml b/map_machine/scheme/nodes.yml
new file mode 100644
index 0000000..d1556c0
--- /dev/null
+++ b/map_machine/scheme/nodes.yml
@@ -0,0 +1,1872 @@
+nodes:
+
+ - group: "No draw"
+ tags:
+ - tags: {type: multipolygon}
+ draw: false
+ - tags: {place: "*"}
+ draw: false
+ - tags: {building: "yes"}
+ draw: false
+
+ - group: "Huge transport hubs"
+ start_zoom_level: 10.0
+ tags:
+ - tags: {amenity: ferry_terminal}
+ shapes: [anchor]
+ - tags: {amenity: ferry_terminal, cargo: vehicle}
+ shapes: [car_on_ferry]
+ - tags: {amenity: ferry_terminal, cargo: passengers}
+ shapes: [human_on_ferry]
+ - tags: {aeroway: aerodrome}
+ shapes: [plane]
+ - tags: {aeroway: helipad}
+ shapes: [h]
+ - tags: {aeroway: spaceport}
+ shapes: [rocket_on_launch_pad]
+
+ - group: "Normal transport hubs"
+ start_zoom_level: 11.0
+ tags:
+ - tags: {aeroway: launchpad}
+ shapes: [rocket_flying]
+ - tags: {aeroway: landingpad}
+ shapes: [booster_landing]
+ - tags: {highway: bus_station}
+ shapes: [buses]
+ - tags: {highway: bus_stop}
+ shapes: [{shape: bus_stop, color: $transportation_color}]
+ add_shapes: [bus]
+ - tags: {railway: station}
+ shapes: [train]
+ - tags: {railway: station, station: subway, transport: subway}
+ shapes: [train]
+ - tags: {railway: subway_entrance}
+ shapes: [train]
+ - tags: {railway: subway_entrance, entrance: "yes"}
+ shapes: [train]
+ - tags: {public_transport: stop_position}
+ shapes: [bus_stop]
+ - tags: {railway: tram_station}
+ shapes: [{shape: tram, color: $transportation_color}]
+ - tags: {railway: tram_stop}
+ shapes: [{shape: tram, color: $transportation_color}]
+ - tags: {public_transport: platform}
+ shapes: [{shape: bus_stop_sign, color: $transportation_color}]
+ with_icon: [bus_stop_bench, bus_stop_shelter]
+ over_icon: [platform]
+ - tags: {highway: bus_stop, public_transport: platform}
+ shapes: [{shape: bus_stop_sign, color: $transportation_color}]
+ with_icon: [bus_stop_bench, bus_stop_shelter]
+ over_icon: [platform]
+ - tags: {highway: bus_stop, shelter: "yes"}
+ shapes: [{shape: bus_stop_sign, color: $transportation_color}]
+ under_icon: [bus_stop_sign]
+ with_icon: [bus_stop_bench, platform]
+ over_icon: [bus_stop_shelter]
+ - tags: {highway: bus_stop, bench: "yes"}
+ under_icon: [bus_stop_sign]
+ with_icon: [bus_stop_shelter, platform]
+ over_icon: [bus_stop_bench]
+ - tags: {highway: stop}
+ shapes: [stop]
+ - tags: {amenity: taxi}
+ shapes: [taxi]
+
+ - group: "Big territory"
+ start_zoom_level: 12.0
+ tags:
+ - tags: {landuse: cemetery}
+ shapes: [tomb]
+ - tags: {amenity: grave_yard}
+ shapes: [tomb]
+ - tags: {leisure: fishing}
+ shapes: [fishing_angle]
+ - tags: {historic: archaeological_site}
+ shapes: [amphora]
+ - tags: {leisure: swimming_area}
+ shapes: [swimming_area]
+ - tags: {leisure: swimming_pool}
+ shapes: [swimming_area]
+ - tags: {sport: swimming}
+ shapes: [swimming_area]
+ - tags: {leisure: beach}
+ shapes: [beach]
+ - tags: {amenity: public_bath}
+ shapes: [swimming_area]
+ - tags: {leisure: golf_course}
+ shapes: [golf_club_and_ball]
+ - tags: {power: substation}
+ shapes: [electricity]
+ - tags: {plant: christmas_trees}
+ shapes: [{shape: christmas_tree, color: $orchard_border_color}]
+ - tags: {crop: sunflower}
+ shapes: [{shape: sunflower, color: $sunflower_dark_color, outline: no}]
+ - tags: {crop: barley}
+ shapes: [{shape: ear_botany, color: $barley_dark_color, outline: no}]
+ - tags: {crop: rye}
+ shapes: [{shape: ear_botany, color: $rye_dark_color, outline: no}]
+ - tags: {crop: wheat}
+ shapes: [{shape: ear_botany, color: $wheat_dark_color, outline: no}]
+ - tags: {crop: rape}
+ shapes: [{shape: rape, color: $wheat_dark_color, outline: no}]
+ - tags: {produce: apple}
+ shapes: [{shape: apple, color: $orchard_border_color}]
+ - tags: {produce: christmas_trees}
+ shapes: [{shape: christmas_tree, color: $orchard_border_color}]
+ - tags: {produce: pear}
+ shapes: [{shape: pear, color: $orchard_border_color}]
+ - tags: {trees: apple_trees}
+ shapes: [{shape: apple, color: $orchard_border_color}]
+ - tags: {trees: pear_trees}
+ shapes: [{shape: pear, color: $orchard_border_color}]
+
+ - group: "Bigger objects"
+ start_zoom_level: 13.0
+ tags:
+ - tags: {waterway: waterfall}
+ shapes: [{shape: waterfall, color: $water_border_color}]
+ - tags: {natural: cliff}
+ shapes: [cliff]
+ - tags: {natural: peak}
+ shapes: [triangle_small]
+ - tags: {natural: saddle}
+ shapes: [saddle]
+ - tags: {natural: crater}
+ exception: {diameter: "*"}
+ shapes: [crater]
+
+ - tags: {natural: volcano}
+ shapes: [stratovolcano, {shape: smoke_2, offset: [0, -3]}]
+
+ - tags: {natural: volcano, volcano:type: stratovolcano}
+ shapes: [stratovolcano, {shape: smoke_2, offset: [0, -3]}]
+ - tags: {natural: volcano, volcano:type: shield}
+ shapes: [shield_volcano, {shape: smoke_2, offset: [0, -1]}]
+ - tags: {natural: volcano, volcano:type: scoria}
+ shapes: [volcanic_cone, {shape: smoke_2, offset: [0, -2]}]
+
+ - tags: {natural: volcano, volcano:status: active}
+ shapes: [stratovolcano, {shape: lava, offset: [0, -3]}]
+ - tags: {natural: volcano, volcano:status: dormant}
+ shapes: [stratovolcano, {shape: smoke, offset: [1, -3]}]
+ - tags: {natural: volcano, volcano:status: extinct}
+ shapes: [stratovolcano]
+
+ - tags:
+ natural: volcano
+ volcano:type: stratovolcano
+ volcano:status: active
+ shapes: [stratovolcano, {shape: lava, offset: [0, -3]}]
+ - tags:
+ natural: volcano
+ volcano:type: shield
+ volcano:status: active
+ shapes: [shield_volcano, {shape: lava, offset: [0, -1]}]
+ - tags:
+ natural: volcano
+ volcano:type: scoria
+ volcano:status: active
+ shapes: [volcanic_cone, {shape: lava, offset: [0, -2]}]
+ - tags:
+ natural: volcano
+ volcano:type: stratovolcano
+ volcano:status: dormant
+ shapes: [stratovolcano, {shape: smoke, offset: [1, -3]}]
+ - tags:
+ natural: volcano
+ volcano:type: shield
+ volcano:status: dormant
+ shapes: [shield_volcano, {shape: smoke, offset: [1, -1]}]
+ - tags:
+ natural: volcano
+ volcano:type: scoria
+ volcano:status: dormant
+ shapes: [volcanic_cone, {shape: smoke, offset: [1, -2]}]
+ - tags:
+ natural: volcano
+ volcano:type: stratovolcano
+ volcano:status: extinct
+ shapes: [stratovolcano]
+ - tags:
+ natural: volcano
+ volcano:type: shield
+ volcano:status: extinct
+ shapes: [shield_volcano]
+ - tags:
+ natural: volcano
+ volcano:type: scoria
+ volcano:status: extinct
+ shapes: [volcanic_cone]
+
+ - tags: {historic: castle}
+ location_restrictions: {include: [jp]}
+ shapes: [japan_castle]
+ - tags: {historic: castle}
+ shapes: [{shape: fort, color: $memorials_color}]
+ - tags: {historic: fort}
+ shapes: [fort]
+ - tags: {shop: mall}
+ shapes: [{shape: bag, color: $sell_color}]
+ - tags: {shop: department_store}
+ shapes: [{shape: bag, color: $sell_color}]
+ - tags: {shop: mall, building: "yes"}
+ shapes: [{shape: bag, color: $sell_color}]
+ - tags: {leisure: water_park}
+ shapes: [slide_and_water]
+ - tags: {leisure: sports_centre}
+ shapes: [{shape: dumbbell, color: $leisure_green_color}]
+
+ - group: "Important big objects"
+ start_zoom_level: 14.0
+ tags:
+ - tags: {amenity: fire_station}
+ location_restrictions: {include: [jp]}
+ shapes: [{shape: japan_fire_station, color: $emergency_color}]
+ - tags: {amenity: courthouse}
+ shapes: [gavel]
+ - tags: {amenity: police}
+ location_restrictions: {include: [jp]}
+ shapes: [japan_police_station]
+ - tags: {amenity: police, name:en: Koban}
+ location_restrictions: {include: [jp]}
+ shapes: [japan_koban]
+ - tags: {building: townhall}
+ shapes: [townhall]
+ - tags: {amenity: townhall}
+ shapes: [townhall]
+ - tags: {historic: city_gate}
+ shapes: [city_gate]
+ - tags: {amenity: pharmacy}
+ shapes: [{shape: medicine_bottle, color: $health_color}]
+ - tags: {amenity: embassy}
+ shapes: [waving_flag]
+ - tags: {office: diplomatic, diplomatic: embassy}
+ shapes: [waving_flag]
+ - tags: {man_made: monitoring_station, monitoring:weather: "yes"}
+ shapes: [japan_weather_station]
+ location_restrictions: {include: [jp]}
+ - tags: {amenity: veterinary}
+ shapes: [dog_and_cross]
+ - tags: {tourism: apartment}
+ shapes: [bed_with_floor_and_ceiling]
+ - tags: {tourism: hotel}
+ shapes: [{shape: bed, color: $transportation_color}]
+ - tags: {building: hotel}
+ shapes: [{shape: bed, bed, color: $transportation_color}]
+ - tags: {tourism: hostel}
+ shapes: [{shape: two_beds, two_beds, color: $transportation_color}]
+ - tags: {tourism: motel}
+ shapes:
+ - {shape: car, offset: [0, 4], color: $transportation_color}
+ - {shape: bed, offset: [0, -2], color: $transportation_color}
+ - tags: {tourism: guest_house}
+ shapes: [{shape: bed_and_roof, color: $transportation_color}]
+ - tags: {amenity: hospital}
+ location_restrictions: {include: world, exclude: [jp]}
+ shapes: [{shape: greek_cross, color: $health_color}]
+ - tags: {amenity: hospital}
+ location_restrictions: {include: [jp]}
+ shapes: [japan_public_health_center]
+ - tags: {amenity: clinic}
+ shapes: [{shape: greek_cross_in_box, color: $health_color}]
+ - tags: {amenity: doctors}
+ shapes: [{shape: greek_cross_in_box, color: $health_color}]
+ - tags: {amenity: dentist}
+ shapes: [{shape: tooth, color: $health_color}]
+ - tags: {amenity: post_office}
+ location_restrictions: {include: world, exclude: [jp]}
+ shapes: [envelope]
+ - tags: {amenity: post_office}
+ location_restrictions: {include: [jp]}
+ shapes: [japan_post]
+ - tags: {shop: car_repair}
+ shapes:
+ - {shape: car, offset: [0, 3], color: $sell_color}
+ - {shape: wrench, offset: [0, -4], color: $sell_color}
+ - tags: {amenity: car_rental}
+ shapes: [{shape: car, offset: [0, 3]}, {shape: key, offset: [1, -3]}]
+ - tags: {amenity: car_sharing}
+ shapes: [{shape: car, offset: [0, 3]}, {shape: sharing, offset: [0, -4]}]
+ - tags: {amenity: car_wash}
+ shapes:
+ - {shape: car, offset: [0, 3], color: $amenity_brown_color}
+ - {shape: shower_head, offset: [0, -4], color: $amenity_brown_color}
+ # Place of worship
+ - tags: {building: shrine, religion: shinto}
+ shapes: [japan_shinto_shrine]
+ - tags: {religion: christian}
+ shapes: [latin_cross]
+ - tags: {amenity: place_of_worship, religion: christian}
+ shapes: [latin_cross]
+ - tags:
+ amenity: place_of_worship
+ religion: christian
+ denomination: catholic
+ shapes: [latin_cross]
+ - tags:
+ amenity: place_of_worship
+ religion: christian
+ denomination: russian_orthodox
+ shapes: [russian_orthodox_cross]
+ - tags:
+ amenity: place_of_worship
+ religion: christian
+ denomination: orthodox
+ shapes: [orthodox]
+ - tags:
+ amenity: place_of_worship
+ religion: christian
+ denomination: baptist
+ shapes: [baptist]
+ - tags: {amenity: place_of_worship, religion: muslim}
+ shapes: [crescent]
+ - tags: {amenity: place_of_worship, religion: buddhist}
+ shapes: [dharmachakra]
+ - tags: {amenity: place_of_worship, religion: jewish}
+ shapes: [star_of_david]
+ - tags: {historic: tomb, tomb: mausoleum}
+ shapes: [mausoleum]
+ - tags: {historic: tomb, tomb: pyramid}
+ shapes: [pyramid]
+ - tags: {historic: "*"}
+ shapes: [japan_historic]
+ replace_shapes: no
+ location_restrictions: {include: [jp]}
+
+ - group: "Normal big objects"
+ start_zoom_level: 15.0
+ tags:
+ - tags: {shop: supermarket}
+ shapes: [{shape: supermarket_cart, color: $sell_color}]
+ - tags: {shop: variety_store}
+ shapes: [{shape: bag_with_percent, color: $sell_color}]
+ - tags: {shop: general}
+ shapes: [{shape: bag, color: $sell_color}]
+ - tags: {amenity: arts_centre}
+ shapes: [picture]
+ - tags: {amenity: bank}
+ shapes: [{shape: money, color: $amenity_brown_color}]
+ - tags: {amenity: cinema}
+ shapes: [film]
+ - tags: {amenity: casino}
+ shapes: [card_and_dice]
+ - tags: {amenity: community_centre}
+ shapes: [two_people_together]
+ - tags: {amenity: gym}
+ shapes: [dumbbell]
+ - tags: {amenity: social_facility}
+ shapes: [two_people_together]
+ - tags: {amenity: internet_cafe}
+ shapes: [at_in_square]
+ - tags: {amenity: library}
+ shapes: [{shape: book, color: $amenity_brown_color}]
+ - tags: {amenity: marketplace}
+ shapes: [{shape: marketplace, color: $sell_color}]
+ - tags: {amenity: prison}
+ shapes: [prison]
+ - tags: {amenity: stripclub}
+ shapes: [pole_dancer]
+ - tags: {club: computer}
+ shapes: [glider]
+ - tags: {leisure: hackerspace}
+ shapes: [glider]
+ - tags: {man_made: survey_point}
+ shapes: [survey_point]
+ - tags: {leisure: amusement_arcade}
+ shapes: [pac_man]
+ - tags: {leisure: fitness_centre}
+ shapes: [{shape: dumbbell, color: $leisure_green_color}]
+ - tags: {leisure: fitness_station}
+ shapes: [{shape: dumbbell, color: $leisure_green_color}]
+ - tags: {leisure: bird_hide}
+ shapes: [binoculars]
+ - tags: {leisure: bleachers}
+ shapes: [bleachers]
+ - tags: {leisure: bowling_alley}
+ shapes: [bowling_ball]
+ - tags: {leisure: dog_park}
+ shapes: [{shape: dog, color: $leisure_green_color}]
+ - tags: {leisure: escape_game}
+ shapes: [{shape: maze, offset: [-2, 0]}, {shape: arrow_right_short, offset: [5, -1]}]
+ - tags: {leisure: maze}
+ shapes: [maze]
+ - tags: {attraction: maze}
+ shapes: [maze]
+ - tags: {maze: labyrinth}
+ shapes: [maze]
+ - tags: {tourism: maze}
+ shapes: [maze]
+ - tags: {leisure: miniature_golf}
+ shapes: [golf_club_and_ball]
+ - tags: {leisure: sauna}
+ shapes: [sauna]
+ - tags: {leisure: outdoor_seating}
+ shapes: [table_and_two_chairs, umbrella]
+ - tags: {leisure: outdoor_seating, weather_protection: parasol}
+ shapes: [table_and_two_chairs, umbrella]
+ - tags: {leisure: outdoor_seating, weather_protection: roof}
+ shapes: [table_and_two_chairs___roof]
+ - tags: {leisure: outdoor_seating, weather_protection: awning}
+ shapes: [table_and_two_chairs, awning]
+ - tags: {leisure: outdoor_seating, weather_protection: pavilion}
+ shapes: [table_and_two_chairs___roof_and_walls]
+ - tags: {leisure: outdoor_seating, weather_protection: pergola}
+ shapes: [table_and_two_chairs___pergola]
+ - tags: {leisure: playground}
+ shapes: [{shape: toy_horse, color: $leisure_green_color}]
+ - tags: {amenity: theatre}
+ shapes: [{shape: curtains, color: $amenity_brown_color}]
+ - tags: {amenity: bar}
+ shapes: [{shape: cocktail_glass, color: $eat_color}]
+ - tags: {amenity: pub}
+ shapes: [{shape: beer_mug, color: $eat_color}]
+ - tags: {amenity: fast_food}
+ shapes: [{shape: burger, color: $eat_color}]
+ - tags: {amenity: fast_food, cuisine: steak_house}
+ shapes: [steak_and_fork]
+ - tags: {amenity: food_court}
+ shapes: [food_court]
+ - tags: {craft: shoemaker}
+ shapes: [{shape: shoe, color: $sell_color}]
+ - tags: {shop: fishing}
+ shapes: [{shape: fishing_angle, color: $sell_color}]
+ - tags: {shop: alcohol}
+ shapes: [{shape: bottle, color: $sell_color}]
+ - tags: {shop: antiques}
+ shapes: [{shape: amphora, color: $sell_color}]
+ - tags: {shop: art}
+ shapes: [{shape: picture, color: $sell_color}]
+ - tags: {shop: bakery}
+ shapes: [{shape: cupcake, color: $sell_color}]
+ - tags: {shop: bag}
+ shapes: [{shape: bag, color: $sell_color}]
+ - tags: {shop: bed}
+ shapes: [{shape: bed, color: $sell_color}]
+ - tags: {shop: beauty}
+ shapes: [{shape: vanity_mirror, color: $sell_color}]
+ - tags: {shop: cosmetics}
+ shapes: [{shape: vanity_mirror, color: $sell_color}]
+ - tags: {shop: bicycle}
+ shapes: [{shape: bicycle, color: $sell_color}]
+ - tags: {shop: books}
+ shapes: [{shape: book, color: $sell_color}]
+ - tags: {shop: butcher}
+ shapes: [{shape: knives, color: $sell_color}]
+ - tags: {shop: car}
+ shapes: [{shape: car, color: $sell_color}]
+ - tags: {shop: car_parts}
+ shapes: [{shape: engine, color: $sell_color}]
+ - tags: {shop: chocolate}
+ shapes: [{shape: cupcake, color: $sell_color}]
+ - tags: {shop: coffee}
+ shapes: [{shape: coffee_cup, color: $sell_color}]
+ - tags: {shop: confectionery}
+ shapes: [{shape: cupcake, color: $sell_color}]
+ - tags: {shop: copyshop}
+ shapes: [{shape: sheets, color: $sell_color}]
+ - tags: {shop: dairy}
+ shapes: [{shape: aseptic_carton, color: $sell_color}]
+ - tags: {shop: doityourself}
+ shapes: [{shape: wretch_and_hammer, color: $sell_color}]
+ - tags: {shop: dry_cleaning}
+ shapes: [{shape: washing_machine, color: $sell_color}]
+ - tags: {shop: farm}
+ shapes: [{shape: apple, color: $sell_color}]
+ - tags: {shop: fireplace}
+ shapes: [{shape: fireplace, color: $sell_color}]
+ - tags: {shop: florist}
+ shapes: [{shape: flower_in_pot, color: $sell_color}]
+ - tags: {shop: furniture}
+ shapes: [{shape: drawer, color: $sell_color}]
+ - tags: {shop: greengrocer}
+ shapes: [{shape: apple, color: $sell_color}]
+ - tags: {shop: hairdresser}
+ shapes: [{shape: comb_and_scissors, color: $sell_color}]
+ - tags: {shop: hardware}
+ shapes: [{shape: wretch_and_hammer, color: $sell_color}]
+ - tags: {shop: hifi}
+ shapes: [{shape: hi_fi, color: $sell_color}]
+ - tags: {shop: houseware}
+ shapes: [{shape: pan, color: $sell_color}]
+ - tags: {shop: jewelry}
+ shapes: [{shape: diamond, color: $sell_color}]
+ - tags: {shop: jewellery}
+ shapes: [{shape: diamond, color: $sell_color}]
+ - tags: {craft: jeweller}
+ shapes: [{shape: diamond, color: $craft_color}]
+ - tags: {shop: laundry}
+ shapes: [{shape: washing_machine, color: $sell_color}]
+ - tags: {shop: massage}
+ shapes: [{shape: massage, color: $sell_color}]
+ - tags: {shop: medical_supply}
+ shapes: [{shape: medicine_bottle, color: $sell_color}]
+ - tags: {shop: mobile_phone}
+ shapes: [{shape: phone, color: $sell_color}]
+ - tags: {shop: newsagent}
+ shapes: [{shape: gazette, color: $sell_color}]
+ - tags: {shop: optician}
+ shapes: [{shape: glasses, color: $sell_color}]
+ - tags: {shop: outpost}
+ shapes: [{color: $sell_color}]
+ - tags: {shop: pastry}
+ shapes: [{shape: cupcake, color: $sell_color}]
+ - tags: {shop: pet}
+ shapes: [{shape: dog, color: $sell_color}]
+ - tags: {shop: photo}
+ shapes: [{shape: photo_camera, color: $sell_color}]
+ - tags: {shop: photography}
+ shapes: [{shape: photo_camera, color: $sell_color}]
+ - tags: {shop: shoes}
+ shapes: [{shape: shoe, color: $sell_color}]
+ - tags: {shop: sports}
+ shapes: [{shape: dumbbell, color: $sell_color}]
+ - tags: {shop: travel_agency}
+ shapes: [{shape: globe, color: $sell_color}]
+ - tags: {shop: milk}
+ shapes: [{shape: aseptic_carton, color: $sell_color}]
+ - tags: {shop: wine}
+ shapes: [{shape: bottle_and_wine_glass, color: $sell_color}]
+ - tags: {building: store}
+ shapes: [shop_convenience]
+ - tags: {shop: ticket}
+ shapes: [{shape: ticket, color: $sell_color}]
+ - tags: {shop: tailor}
+ shapes: [{shape: t_shirt_and_scissors, color: $sell_color}]
+ - tags: {shop: tyres}
+ shapes: [{shape: tyre, color: $sell_color}]
+ - tags: {shop: toys}
+ shapes: [{shape: toy_horse, color: $sell_color}]
+ - tags: {craft: tailor}
+ shapes: [t_shirt_and_scissors]
+ - tags: {shop: video}
+ shapes: [{shape: film, color: $sell_color}]
+ - tags: {shop: video_games}
+ shapes: [{shape: pac_man, color: $sell_color}]
+ - tags: {shop: watches}
+ shapes: [{shape: watches, color: $sell_color}]
+ - tags: {craft: watchmaker}
+ shapes: [watches]
+ - tags: {shop: frame}
+ shapes: [{shape: frame, color: $sell_color}]
+ - tags: {tourism: gallery}
+ shapes: [picture]
+ - tags: {amenity: cafe}
+ shapes: [{shape: coffee_cup, color: $eat_color}]
+ - tags: {amenity: ice_cream}
+ shapes: [{shape: ice_cream, color: $eat_color}]
+ - tags: {amenity: biergarten}
+ shapes: [{shape: beer_mug, color: $eat_color}]
+ - tags: {amenity: nightclub}
+ shapes: [cocktail_glass_with_straw]
+ - tags: {amenity: restaurant}
+ shapes: [{shape: fork_and_knife, color: $eat_color}]
+ - tags: {amenity: restaurant;bar}
+ shapes: [{shape: fork_and_knife, color: $eat_color}]
+ add_shapes: [cocktail_glass]
+ - tags: {shop: ice_cream}
+ shapes: [{shape: ice_cream, color: $sell_color}]
+ - tags: {shop: electrical}
+ shapes: [{color: $sell_color}]
+ - tags: {shop: musical_instrument}
+ shapes: [{shape: microphone, color: $sell_color}]
+ - tags: {shop: paint}
+ shapes: [{color: $sell_color}]
+ - tags: {shop: trade}
+ shapes: [{color: $sell_color}]
+ - tags: {shop: gift}
+ shapes: [{shape: gift, color: $sell_color}]
+ - tags: {shop: clothes}
+ shapes: [{shape: t_shirt, color: $sell_color}]
+ - tags: {amenity: shop, shop: clothes}
+ shapes: [{shape: t_shirt, color: $sell_color}]
+ - tags: {shop: convenience}
+ shapes: [{shape: shop_convenience, color: $sell_color}]
+ - tags: {amenity: shop, shop: convenience}
+ shapes: [{shape: shop_convenience, color: $sell_color}]
+ - tags: {shop: electronics}
+ shapes: [{shape: tv, color: $sell_color}]
+ - tags: {tourism: camp_site}
+ shapes: [camp]
+ - tags: {tourism: caravan_site}
+ shapes: [caravan]
+ - tags: {leisure: picnic_site}
+ shapes: [table]
+
+ - group: "Big objects not for all"
+ start_zoom_level: 15.0
+ tags:
+ - tags: {building: container}
+ shapes: [building_container]
+ - tags: {building: houseboat}
+ shapes: [houseboat]
+
+ - tags: {building: apartments}
+ shapes: [apartments_2_story]
+
+ - tags: {building: "*", building:levels: "1"}
+ shapes: [apartments_1_story]
+ - tags: {building: "*", building:levels: "1", roof:shape: gabled}
+ shapes: [apartments_1_story_gabled_roof]
+ - tags: {building: "*", building:levels: "1", roof:shape: hipped}
+ shapes: [apartments_1_story_gabled_roof]
+ - tags: {building: "*", building:levels: "1", roof:shape: pyramidal}
+ shapes: [apartments_1_story_gabled_roof]
+ - tags: {building: "*", building:levels: "1", roof:shape: skillion}
+ shapes: [apartments_1_story_skillion_roof]
+
+ - tags: {building: "*", building:levels: "2"}
+ shapes: [apartments_2_story]
+ - tags: {building: "*", building:levels: "2", roof:shape: gabled}
+ shapes: [apartments_2_story_gabled_roof]
+ - tags: {building: "*", building:levels: "2", roof:shape: hipped}
+ shapes: [apartments_2_story_gabled_roof]
+ - tags: {building: "*", building:levels: "2", roof:shape: pyramidal}
+ shapes: [apartments_2_story_gabled_roof]
+ - tags: {building: "*", building:levels: "2", roof:shape: skillion}
+ shapes: [apartments_2_story_skillion_roof]
+
+ - tags: {building: "*", building:levels: "3"}
+ shapes: [apartments_3_story]
+ - tags: {building: "*", building:levels: "3", roof:shape: gabled}
+ shapes: [apartments_3_story_gabled_roof]
+ - tags: {building: "*", building:levels: "3", roof:shape: hipped}
+ shapes: [apartments_3_story_gabled_roof]
+ - tags: {building: "*", building:levels: "3", roof:shape: pyramidal}
+ shapes: [apartments_3_story_gabled_roof]
+ - tags: {building: "*", building:levels: "3", roof:shape: skillion}
+ shapes: [apartments_3_story_skillion_roof]
+
+ - tags: {building: "*", building:levels: "4"}
+ shapes: [apartments_4_story]
+ - tags: {building: "*", building:levels: "4", roof:shape: gabled}
+ shapes: [apartments_4_story_gabled_roof]
+ - tags: {building: "*", building:levels: "4", roof:shape: hipped}
+ shapes: [apartments_4_story_gabled_roof]
+ - tags: {building: "*", building:levels: "4", roof:shape: pyramidal}
+ shapes: [apartments_4_story_gabled_roof]
+ - tags: {building: "*", building:levels: "4", roof:shape: skillion}
+ shapes: [apartments_4_story_skillion_roof]
+
+ - tags: {building: "*", building:levels: "5"}
+ shapes: [apartments_5_story]
+ - tags: {building: "*", building:levels: "5", roof:shape: gabled}
+ shapes: [apartments_5_story_gabled_roof]
+ - tags: {building: "*", building:levels: "5", roof:shape: hipped}
+ shapes: [apartments_5_story_gabled_roof]
+ - tags: {building: "*", building:levels: "5", roof:shape: pyramidal}
+ shapes: [apartments_5_story_gabled_roof]
+ - tags: {building: "*", building:levels: "5", roof:shape: skillion}
+ shapes: [apartments_5_story_skillion_roof]
+
+ - tags: {building: construction}
+ shapes: [building_construction]
+ - tags: {building: apartments, construction: "yes"}
+ shapes: [building_construction]
+ - tags: {building: "yes", construction: "yes"}
+ shapes: [building_construction]
+
+ - tags: {building: kindergarten}
+ shapes: [toy_horse]
+ - tags: {amenity: kindergarten}
+ shapes: [toy_horse]
+ - tags: {building: kindergarten, amenity: kindergarten}
+ shapes: [toy_horse]
+ - tags: {leisure: indoor_playground}
+ shapes: [toy_horse]
+ - tags: {building: office}
+ shapes: [briefcase]
+ - tags: {amenity: school}
+ location_restrictions: {include: [jp]}
+ shapes: [japan_elementary_school]
+ - tags: {office: "yes"}
+ shapes: [{shape: briefcase, color: $office_color}]
+ - tags: {office: advertising_agency}
+ shapes: [{shape: billboard, color: $office_color}]
+ - tags: {office: company}
+ shapes: [{shape: briefcase, color: $office_color}]
+ - tags: {office: government}
+ shapes: [{shape: government, color: $office_color}]
+ - tags: {office: it}
+ shapes: [{shape: glider, color: $office_color}]
+ - tags: {office: telecommunication}
+ shapes: [{shape: telephone, color: $office_color}]
+ - tags: {office: telecommunication}
+ shapes: [{shape: telephone, color: $office_color}]
+
+ - group: "Not important big objects"
+ start_zoom_level: 15.0
+ tags:
+ - tags: {building: garage}
+ shapes: [garages]
+ - tags: {building: garages}
+ shapes: [garages]
+ - tags: {landuse: garages}
+ shapes: [garages]
+ - tags: {man_made: communications_tower}
+ location_restrictions: {include: [jp]}
+ shapes: [japan_tv_tower]
+ - tags: {man_made: communications_tower}
+ shapes: [tower_communication]
+ - tags: {man_made: telescope}
+ shapes: [telescope_radio]
+ - tags: {man_made: telescope, telescope:type: radio}
+ shapes: [telescope_radio]
+ - tags: {man_made: telescope, telescope:type: gamma}
+ shapes: [telescope_gamma]
+ - tags: {man_made: telescope, telescope:type: optical}
+ shapes: [observatory]
+ - tags: {man_made: tower}
+ shapes: [tower]
+ - tags: {man_made: tower, tower:construction: dish}
+ shapes: [telescope_radio]
+ - tags: {man_made: tower, tower:construction: dish, telescope:type: radio}
+ shapes: [telescope_radio]
+ - tags: {man_made: tower, tower:construction: dish, telescope:type: gamma}
+ shapes: [telescope_gamma]
+ - tags: {man_made: crane}
+ shapes: [crane]
+ - tags: {man_made: crane, crane:type: gantry_crane}
+ shapes: [crane_gantry]
+ - tags: {man_made: crane, crane:type: floor-mounted_crane}
+ shapes: [crane]
+ - tags: {man_made: crane, crane:type: portal_crane}
+ shapes: [crane_portal]
+ - tags: {man_made: crane, crane:type: travel_lift}
+ shapes: [crane_travel_lift]
+ - tags: {man_made: crane, crane:type: tower_crane}
+ shapes: [crane]
+
+ - group: "Emergency"
+ start_zoom_level: 15.0
+ tags:
+ - tags: {emergency: defibrillator}
+ shapes: [{shape: defibrillator, color: $emergency_color}]
+ - tags: {emergency: fire_extinguisher}
+ shapes: [{shape: fire_extinguisher, color: $emergency_color}]
+ - tags: {emergency: fire_hydrant}
+ shapes: [fire_hydrant]
+ - tags: {emergency: life_ring}
+ shapes: [{shape: life_ring, color: $emergency_color}]
+ - tags: {emergency: phone}
+ shapes: [{shape: sos_phone, color: $emergency_color}]
+
+ - group: "Transport-important middle objects"
+ start_zoom_level: 16.0
+ tags:
+ - tags: {ford: "yes"}
+ shapes: [ford]
+ - tags: {amenity: charging_station}
+ shapes: [{shape: charging_station, color: $transportation_color}]
+ - tags: {amenity: bicycle_repair_station}
+ shapes:
+ - {shape: bicycle, offset: [0, 2], color: $transportation_color}
+ - {shape: wrench, offset: [1, -5], color: $transportation_color}
+ - tags: {amenity: bicycle_rental}
+ shapes:
+ - {shape: bicycle, offset: [0, 2], color: $transportation_color}
+ - {shape: key, offset: [1, -4], color: $transportation_color}
+ - tags: {amenity: fuel}
+ shapes: [{shape: fuel_station, color: $transportation_color}]
+ - tags: {amenity: parking}
+ shapes: [{shape: p, color: $parking_node_color}]
+ - tags: {amenity: parking, parking: multi-storey}
+ shapes: [{shape: car, offset: [0, 4]}, {shape: car, offset: [0, -3]}]
+ - tags: {highway: turning_circle}
+ shapes: [circle_empty]
+ - tags: {highway: turning_loop}
+ shapes: [turning_loop]
+ - tags: {highway: crossing}
+ shapes: [crossing]
+ - tags: {crossing: zebra}
+ shapes: [crossing]
+ - tags: {highway: crossing, crossing: zebra}
+ shapes: [crossing]
+ - tags: {crossing: marked}
+ shapes: [crossing]
+ - tags: {highway: crossing, crossing: marked}
+ shapes: [crossing]
+ - tags: {highway: crossing, crossing_ref: zebra}
+ shapes: [crossing]
+ - tags: {highway: crossing, crossing: uncontrolled}
+ add_shapes: [no_traffic_signals]
+ - tags: {highway: crossing, crossing: traffic_signals}
+ add_shapes: [traffic_signals]
+ - tags: {highway: traffic_signals}
+ shapes: [traffic_signals]
+ - tags: {crossing_ref: toucan}
+ shapes: [toucan_crossing]
+
+ - tags: {traffic_calming: bump}
+ shapes: [bump]
+ - tags: {traffic_calming: mini_bumps}
+ shapes: [mini_bumps]
+ - tags: {traffic_calming: hump}
+ shapes: [hump]
+ - tags: {traffic_calming: table}
+ shapes: [traffic_table]
+ - tags: {traffic_calming: cushion}
+ shapes: [traffic_cushion]
+ - tags: {traffic_calming: rumble_strip}
+ shapes: [rumble_strip]
+ - tags: {traffic_calming: dip}
+ shapes: [dip]
+ - tags: {traffic_calming: double_dip}
+ shapes: [double_dip]
+
+ - group: "Important middle objects"
+ start_zoom_level: 16.0
+ tags:
+ - tags: {tourism: attraction, attraction: amusement_ride}
+ shapes: [amusement_ride]
+ - tags: {amenity: toilets}
+ shapes: [{shape: woman_and_man, color: $amenity_brown_color}]
+ - tags: {amenity: shelter}
+ shapes: [shelter]
+ - tags: {man_made: obelisk}
+ shapes: [obelisk]
+ - tags: {historic: monument}
+ shapes: [monument]
+
+ - group: "Normal middle objects"
+ start_zoom_level: 17.0
+ tags:
+ - tags: {shop: kiosk}
+ shapes: [{shape: kiosk, color: $sell_color}]
+ - tags: {building: "yes", shop: kiosk}
+ shapes: [{shape: kiosk, color: $sell_color}]
+ - tags: {amenity: shop, shop: kiosk}
+ shapes: [{shape: kiosk, color: $sell_color}]
+ - tags: {amenity: stage}
+ shapes: [curtains]
+ - tags: {amenity: hunting_stand}
+ shapes: [hunting_stand]
+ - tags: {natural: cave_entrance}
+ shapes: [cave]
+ - tags: {amenity: bureau_de_change}
+ shapes:
+ - {shape: exchange}
+ - {shape: dollar, offset: [-4, 3]}
+ - {shape: pound, offset: [5, -2]}
+ - tags: {sport: skateboard}
+ shapes: [skateboard]
+ - tags: {pipeline: substation}
+ shapes: [pipeline]
+
+ - group: "Towers, poles, masts"
+ start_zoom_level: 15.0
+ tags:
+ - tags: {building: ventilation_shaft}
+ shapes: [ventilation]
+ - tags: {power: generator}
+ shapes: [power_generator]
+ - tags: {amenity: public_bookcase}
+ shapes: [books]
+ - tags: {power: transformer}
+ shapes: [transformer]
+ - tags: {power: generator, generator:source: solar}
+ shapes: [solar_panel]
+ - tags: {power: heliostat}
+ shapes: [solar_panel]
+ - tags: {power: generator, generator:source: wind}
+ shapes: [wind_turbine]
+ - tags: {power: tower}
+ shapes: [power_tower_2_level]
+ - tags: {power: tower, design: one-level}
+ shapes: [power_tower_1_level]
+ - tags: {power: tower, design: two-level}
+ shapes: [power_tower_2_level]
+ - tags: {power: tower, design: three-level}
+ shapes: [power_tower_3_level]
+ - tags: {power: tower, design: four-level}
+ shapes: [power_tower_4_level]
+ - tags: {power: tower, design: donau}
+ shapes: [power_tower_donau]
+ - tags: {power: tower, design: donau_inverse}
+ shapes: [power_tower_donau_inverse]
+ - tags: {power: tower, design: barrel}
+ shapes: [power_tower_barrel]
+ - tags: {power: tower, design: asymmetric}
+ shapes: [power_tower_asymmetric]
+ - tags: {power: tower, design: triangle}
+ shapes: [power_tower_triangle]
+ - tags: {power: tower, design: flag}
+ shapes: [power_tower_flag]
+ - tags: {power: tower, design: delta}
+ shapes: [power_tower_delta]
+ - tags: {power: tower, design: delta_two-level}
+ shapes: [power_tower_delta_2_level]
+ - tags: {power: tower, design: delta_three-level}
+ shapes: [power_tower_delta_3_level]
+ - tags: {power: tower, design: y-frame}
+ shapes: [power_tower_y_frame]
+ - tags: {power: tower, design: x-frame}
+ shapes: [power_tower_x_frame]
+ - tags: {power: tower, design: h-frame}
+ shapes: [power_tower_h_frame]
+ - tags: {power: tower, design: h-frame_two-level}
+ shapes: [power_tower_h_frame_2_level]
+ - tags: {power: tower, design: guyed_h-frame}
+ shapes: [power_tower_guyed_h_frame]
+ - tags: {power: portal}
+ shapes: [power_tower_portal]
+ - tags: {power: tower, design: portal}
+ shapes: [power_tower_portal]
+ - tags: {power: tower, design: portal_two-level}
+ shapes: [power_tower_portal_2_level]
+ - tags: {power: portal, design: portal_two-level}
+ shapes: [power_tower_portal_2_level]
+ - tags: {power: tower, design: portal_three-level}
+ shapes: [power_tower_portal_3_level]
+ - tags: {power: portal, design: portal_three-level}
+ shapes: [power_tower_portal_3_level]
+
+ - tags: {power: pole}
+ shapes: [power_pole_2_level]
+ - tags: {power: pole, design: one-level}
+ shapes: [power_pole_1_level]
+ - tags: {power: pole, design: two-level}
+ shapes: [power_pole_2_level]
+ - tags: {power: pole, design: three-level}
+ shapes: [power_pole_3_level]
+ - tags: {power: pole, design: four-level}
+ shapes: [power_pole_4_level]
+ - tags: {power: pole, design: asymmetric}
+ shapes: [power_pole_asymmetric]
+ - tags: {power: pole, design: triangle}
+ shapes: [power_pole_triangle]
+ - tags: {power: pole, design: flag}
+ shapes: [power_pole_flag]
+ - tags: {power: pole, design: armless_asymmetric}
+ shapes: [power_pole_asymmetric_armless]
+ - tags: {power: pole, design: armless_triangle}
+ shapes: [power_pole_triangle_armless]
+ - tags: {power: pole, design: delta}
+ shapes: [power_pole_delta]
+ - tags: {power: pole, design: delta_two-level}
+ shapes: [power_pole_delta] # power_pole_delta_2_level
+ - tags: {power: pole, design: delta_three-level}
+ shapes: [power_pole_delta] # power_pole_delta_3_level
+
+ - tags: {man_made: chimney}
+ shapes: [chimney]
+ - tags: {man_made: tower, tower:type: cooling}
+ shapes: [tower_cooling]
+ - tags: {man_made: tower, tower:type: defensive}
+ shapes: [tower_defensive]
+ - tags: {man_made: tower, tower:type: pagoda}
+ shapes: [pagoda]
+ - tags: {man_made: tower, tower:type: observation}
+ shapes: [tower_observation]
+ - tags: {man_made: tower, tower:type: watchtower}
+ shapes: [tower_observation]
+ - tags: {man_made: tower, tower:type: minaret}
+ shapes: [minaret]
+ - tags: {man_made: mast}
+ shapes: [tube]
+ - tags: {man_made: stupa}
+ shapes: [stupa]
+
+ - tags: {man_made: mast, tower:construction: guyed_tube}
+ shapes: [tube_guyed]
+ - tags: {man_made: mast, tower:construction: freestanding}
+ shapes: [tube]
+ - tags: {man_made: mast, tower:construction: lattice}
+ shapes: [lattice]
+ - tags: {man_made: mast, tower:construction: guyed_lattice}
+ shapes: [lattice_guyed]
+ - tags: {man_made: mast, tower:type: lighting}
+ shapes:
+ - tube
+ - {shape: light_left, offset: [-3, -3]}
+ - {shape: light_right, offset: [3, -3]}
+ - tags: {man_made: mast, tower:type: communication}
+ shapes:
+ - tube
+ - {shape: wave_left, offset: [-3, -3]}
+ - {shape: wave_right, offset: [3, -3]}
+ - tags: {man_made: mast, tower:type: siren}
+ shapes:
+ - tube
+ - {shape: siren_left, offset: [-3, -3]}
+ - {shape: siren_right, offset: [3, -3]}
+ - tags: {man_made: mast, tower:type: monitoring}
+ shapes:
+ - tube
+ - {shape: dish_antenna_left, offset: [-3, -3]}
+ - {shape: dish_antenna_right, offset: [3, -3]}
+ - tags:
+ man_made: mast
+ tower:type: lighting
+ tower:construction: guyed_tube
+ shapes:
+ - tube_guyed
+ - {shape: light_left, offset: [-3, -3]}
+ - {shape: light_right, offset: [3, -3]}
+ - tags:
+ man_made: mast
+ tower:type: communication
+ tower:construction: guyed_tube
+ shapes:
+ - tube_guyed
+ - {shape: wave_left, offset: [-3, -3]}
+ - {shape: wave_right, offset: [3, -3]}
+ - tags:
+ man_made: mast
+ tower:type: siren
+ tower:construction: guyed_tube
+ shapes:
+ - tube_guyed
+ - {shape: siren_left, offset: [-3, -3]}
+ - {shape: siren_right, offset: [3, -3]}
+ - tags:
+ man_made: mast
+ tower:type: monitoring
+ tower:construction: guyed_tube
+ shapes:
+ - tube_guyed
+ - {shape: dish_antenna_left, offset: [-3, -3]}
+ - {shape: dish_antenna_right, offset: [3, -3]}
+ - tags:
+ man_made: mast
+ tower:type: lighting
+ tower:construction: freestanding
+ shapes:
+ - tube
+ - {shape: light_left, offset: [-3, -3]}
+ - {shape: light_right, offset: [3, -3]}
+ - tags:
+ man_made: mast
+ tower:type: communication
+ tower:construction: freestanding
+ shapes:
+ - tube
+ - {shape: wave_left, offset: [-3, -3]}
+ - {shape: wave_right, offset: [3, -3]}
+ - tags:
+ man_made: mast
+ tower:type: siren
+ tower:construction: freestanding
+ shapes:
+ - tube
+ - {shape: siren_left, offset: [-3, -3]}
+ - {shape: siren_right, offset: [3, -3]}
+ - tags:
+ man_made: mast
+ tower:type: monitoring
+ tower:construction: freestanding
+ shapes:
+ - tube
+ - {shape: dish_antenna_left, offset: [-3, -3]}
+ - {shape: dish_antenna_right, offset: [3, -3]}
+ - tags:
+ man_made: mast
+ tower:type: lighting
+ tower:construction: guyed_lattice
+ shapes:
+ - lattice_guyed
+ - {shape: light_left, offset: [-4, -3]}
+ - {shape: light_right, offset: [3, -3]}
+ - tags:
+ man_made: mast
+ tower:type: communication
+ tower:construction: guyed_lattice
+ shapes:
+ - lattice_guyed
+ - {shape: wave_left, offset: [-4, -3]}
+ - {shape: wave_right, offset: [3, -3]}
+ - tags:
+ man_made: mast
+ tower:type: siren
+ tower:construction: guyed_lattice
+ shapes:
+ - lattice_guyed
+ - {shape: siren_left, offset: [-4, -3]}
+ - {shape: siren_right, offset: [3, -3]}
+ - tags:
+ man_made: mast
+ tower:type: monitoring
+ tower:construction: guyed_lattice
+ shapes:
+ - lattice_guyed
+ - {shape: dish_antenna_left, offset: [-4, -3]}
+ - {shape: dish_antenna_right, offset: [3, -3]}
+ - tags:
+ man_made: mast
+ tower:type: lighting
+ tower:construction: lattice
+ shapes:
+ - lattice
+ - {shape: light_left, offset: [-4, -3]}
+ - {shape: light_right, offset: [3, -3]}
+ - tags:
+ man_made: mast
+ tower:type: communication
+ tower:construction: lattice
+ shapes:
+ - lattice
+ - {shape: wave_left, offset: [-4, -3]}
+ - {shape: wave_right, offset: [3, -3]}
+ - tags:
+ man_made: mast
+ tower:type: siren
+ tower:construction: lattice
+ shapes:
+ - lattice
+ - {shape: siren_left, offset: [-4, -3]}
+ - {shape: siren_right, offset: [3, -3]}
+ - tags:
+ man_made: mast
+ tower:type: monitoring
+ tower:construction: lattice
+ shapes:
+ - lattice
+ - {shape: dish_antenna_left, offset: [-4, -3]}
+ - {shape: dish_antenna_right, offset: [3, -3]}
+
+ - tags: {man_made: tower, tower:construction: guyed_tube}
+ shapes: [tube_guyed]
+ - tags: {man_made: tower, tower:construction: freestanding}
+ shapes: [tube]
+ - tags: {man_made: tower, tower:construction: lattice}
+ shapes: [lattice]
+ - tags: {man_made: tower, tower:construction: lattice_guyed}
+ shapes: [lattice_guyed]
+ - tags: {man_made: tower, tower:type: lighting}
+ shapes:
+ - tube
+ - {shape: light_left, offset: [-3, -3]}
+ - {shape: light_right, offset: [3, -3]}
+ - tags: {man_made: tower, tower:type: communication}
+ shapes:
+ - tube
+ - {shape: wave_left, offset: [-3, -3]}
+ - {shape: wave_right, offset: [3, -3]}
+ - tags:
+ man_made: tower
+ tower:type: lighting
+ tower:construction: guyed_tube
+ shapes:
+ - tube_guyed
+ - {shape: light_left, offset: [-3, -3]}
+ - {shape: light_right, offset: [3, -3]}
+ - tags:
+ man_made: tower
+ tower:type: communication
+ tower:construction: guyed_tube
+ shapes:
+ - tube_guyed
+ - {shape: wave_left, offset: [-3, -3]}
+ - {shape: wave_right, offset: [3, -3]}
+ - tags:
+ man_made: tower
+ tower:type: lighting
+ tower:construction: freestanding
+ shapes:
+ - tube
+ - {shape: light_left, offset: [-3, -3]}
+ - {shape: light_right, offset: [3, -3]}
+ - tags:
+ man_made: tower
+ tower:type: communication
+ tower:construction: freestanding
+ shapes:
+ - tube
+ - {shape: wave_left, offset: [-3, -3]}
+ - {shape: wave_right, offset: [3, -3]}
+ - tags:
+ man_made: tower
+ tower:type: lighting
+ tower:construction: guyed_lattice
+ shapes:
+ - lattice_guyed
+ - {shape: light_left, offset: [-4, -3]}
+ - {shape: light_right, offset: [3, -3]}
+ - tags:
+ man_made: tower
+ tower:type: communication
+ tower:construction: guyed_lattice
+ shapes:
+ - lattice_guyed
+ - {shape: wave_left, offset: [-4, -3]}
+ - {shape: wave_right, offset: [3, -3]}
+ - tags:
+ man_made: tower
+ tower:type: lighting
+ tower:construction: lattice
+ shapes:
+ - lattice
+ - {shape: light_left, offset: [-4, -3]}
+ - {shape: light_right, offset: [3, -3]}
+ - tags:
+ man_made: tower
+ tower:type: communication
+ tower:construction: lattice
+ shapes:
+ - lattice
+ - {shape: wave_left, offset: [-4, -3]}
+ - {shape: wave_right, offset: [3, -3]}
+
+ - tags: {man_made: flagpole, country: US}
+ shapes: [flag_usa]
+ - tags: {man_made: flagpole, country: Tanzania}
+ shapes: [flag_bend_sinister]
+ - tags: {man_made: flagpole, country: PH}
+ shapes: [flag_triangle_flanche]
+ - tags: {man_made: flagpole, country: FR}
+ shapes: [flag_vertical_triband]
+
+ # Diving towers.
+
+ - tags: {man_made: tower, tower:type: diving}
+ shapes: [diving_1_platforms]
+ - tags: {man_made: tower, tower:type: diving, tower:platforms: "1"}
+ shapes: [diving_1_platforms]
+ - tags: {man_made: tower, tower:type: diving, tower:platforms: "2"}
+ shapes: [diving_2_platforms]
+ - tags: {man_made: tower, tower:type: diving, tower:platforms: "3"}
+ shapes: [diving_3_platforms]
+ - tags: {man_made: tower, tower:type: diving, tower:platforms: "4"}
+ shapes: [diving_4_platforms]
+
+ - tags: {communication:mobile_phone: "yes"}
+ add_shapes: [phone]
+
+ - group: "Moon small objects"
+ start_zoom_level: 0.0
+ tags:
+ - tags: {man_made: rover}
+ shapes: [lunokhod]
+ - tags: {man_made: probe}
+ shapes: [probe]
+ - tags: {man_made: orbiter}
+ shapes: [orbiter]
+ - tags: {man_made: descent_stage}
+ shapes: [descent_stage]
+ - tags: {man_made: third_stage}
+ shapes: [third_stage]
+ - tags: {man_made: lander}
+ shapes: [lander]
+
+ - tags: {man_made: rover, condition: landed}
+ shapes: [lunokhod]
+ set_opacity: 0.8
+ - tags: {man_made: probe, condition: landed}
+ shapes: [probe]
+ set_opacity: 0.8
+ - tags: {man_made: orbiter, condition: landed}
+ shapes: [orbiter]
+ set_opacity: 0.8
+ - tags: {man_made: descent_stage, condition: landed}
+ shapes: [descent_stage]
+ set_opacity: 0.8
+ - tags: {man_made: third_stage, condition: landed}
+ shapes: [third_stage]
+ set_opacity: 0.8
+ - tags: {man_made: lander, condition: landed}
+ shapes: [lander]
+ set_opacity: 0.8
+
+ - tags: {man_made: rover, condition: crashed}
+ shapes: [lunokhod]
+ set_opacity: 0.5
+ - tags: {man_made: probe, condition: crashed}
+ shapes: [probe]
+ set_opacity: 0.5
+ - tags: {man_made: orbiter, condition: crashed}
+ shapes: [orbiter]
+ set_opacity: 0.5
+ - tags: {man_made: descent_stage, condition: crashed}
+ shapes: [descent_stage]
+ set_opacity: 0.5
+ - tags: {man_made: third_stage, condition: crashed}
+ shapes: [third_stage]
+ set_opacity: 0.5
+ - tags: {man_made: lander, condition: crashed}
+ shapes: [lander]
+ set_opacity: 0.5
+
+ - group: "Golf objects"
+ start_zoom_level: 16.0
+ tags:
+ - tags: {golf: tee}
+ shapes: [golf_tee]
+ - tags: {golf: pin}
+ shapes: [golf_pin]
+
+ - group: "Important small objects"
+ start_zoom_level: 17.0
+ tags:
+ - tags: {natural: spring}
+ shapes: [{shape: spring, color: $water_border_color}]
+ - tags: {highway: elevator}
+ shapes: [elevator]
+ - tags: {historic: cannon}
+ shapes: [cannon]
+ - tags: {historic: olympic_flame}
+ shapes: [torch]
+ - tags: {historic: memorial}
+ shapes: [memorial]
+ - tags: {historic: memorial, memorial: plaque}
+ shapes: [plaque]
+ - tags: {historic: memorial, memorial: statue}
+ shapes: [statue]
+ - tags: {barrier: artwork, artwork_type: statue}
+ shapes: [statue]
+ - tags: {historic: stone}
+ shapes: [stone_with_inscription]
+ - tags: {historic: wayside_cross}
+ shapes: [cross_and_horizontal_bar]
+ - tags: {historic: wayside_shrine}
+ shapes: [wayside_shrine]
+ - tags: {historic: memorial, memorial: stone}
+ shapes: [stone_with_inscription]
+ - tags: {historic: tomb}
+ shapes: [tomb]
+ - tags: {tomb: "*"}
+ exception: {tomb: mausoleum} # TODO: add exception "tomb: pyramid"
+ shapes: [tomb]
+ - tags: {barrier: toll_booth}
+ shapes: [toll_booth]
+ - tags: {barrier: lift_gate}
+ shapes: [lift_gate]
+ - tags: {barrier: turnstile}
+ shapes: [turnstile]
+ - tags: {barrier: log}
+ shapes: [wood]
+ - tags: {barrier: chain}
+ shapes: [chain_barrier]
+ - tags: {railway: crossing}
+ shapes: [x]
+ - tags: {railway: railway_crossing}
+ shapes: [x]
+ - tags: {railway: level_crossing}
+ shapes: [x]
+ - tags: {railway: signal}
+ shapes: [signal]
+ - tags: {amenity: atm}
+ shapes: [atm]
+ - tags: {amenity: bicycle_parking}
+ shapes:
+ - {shape: bicycle, offset: [0, 2], color: $transportation_color}
+ - {shape: p_small, offset: [-6, -3], color: $transportation_color}
+ - tags: {amenity: bicycle_parking, bicycle_parking: stands}
+ shapes:
+ - {shape: p_small, offset: [-5, -3], color: $transportation_color}
+ - {shape: bicycle_parking_stand, color: $transportation_color}
+ - tags: {amenity: bicycle_parking, bicycle_parking: wall_loops}
+ shapes:
+ - {shape: p_small, offset: [-5, -3], color: $transportation_color}
+ - {shape: bicycle_parking_wall_loops, color: $transportation_color}
+ - tags: {amenity: bicycle_parking, bicycle_parking: rack}
+ shapes:
+ - {shape: p_small, offset: [-5, -3]}
+ - {shape: bicycle_parking_rack, color: $transportation_color}
+ - tags: {amenity: telephone}
+ shapes: [telephone]
+ - tags: {information: "*"}
+ shapes: [i]
+ replace_shapes: no
+ # tags: {tourism: "*"}
+ # shapes: [historic]
+ # replace_shapes: no
+ - tags: {tourism: information}
+ shapes: [i]
+ - tags: {information: guidepost}
+ shapes: [guidepost]
+ - tags: {tourism: viewpoint}
+ shapes: [binoculars]
+ - tags: {information: board}
+ shapes: [i_in_square]
+ - tags: {buoy: "*"}
+ shapes: [buoy]
+ - tags: {"seamark:type": "*"}
+ shapes: [buoy]
+ - tags: {"waterway:sign": "*"}
+ shapes: [buoy]
+ - tags: {amenity: drinking_water}
+ shapes: [{shape: drinking_water, color: $amenity_brown_color}]
+ - tags: {tourism: artwork}
+ shapes: [picture]
+ - tags: {tourism: artwork, artwork_type: statue}
+ shapes: [statue]
+ - tags: {tourism: artwork, artwork_type: stone}
+ shapes: [stone_with_inscription]
+ - tags: {exhibit: artwork, artwork_type: statue}
+ shapes: [statue_exhibit]
+ - tags: {tourism: artwork, artwork_type: sculpture}
+ shapes: [statue]
+ - tags: {exhibit: artwork, artwork_type: sculpture}
+ shapes: [statue_exhibit]
+ - tags: {exhibit: artwork, artwork_type: painting}
+ shapes: [picture]
+ - tags: {exhibit: artwork, artwork_type: stained_glass}
+ shapes: [stained_glass]
+ - tags: {tourism: attraction}
+ shapes: [photo_camera]
+ - tags: {xmas:feature: tree}
+ shapes: {christmas_tree}
+
+ - group: "Normal small objects"
+ start_zoom_level: 18.0
+ tags:
+ - tags: {railway: switch}
+ shapes: [y]
+ - tags: {amenity: binoculars}
+ shapes: [binoculars_on_pole]
+ - tags: {amenity: parking_space}
+ shapes: [p_small]
+ - tags: {amenity: parking, parking: lane}
+ shapes: [p_small]
+ - tags: {amenity: parking, parking: street_side}
+ shapes: [p_small]
+ - tags: {amenity: post_box}
+ shapes: [{shape: envelope, color: $amenity_brown_color}]
+ - tags: {amenity: recycling}
+ shapes: [recycling_container]
+ - tags: {amenity: recycling, recycling_type: container}
+ shapes: [recycling_container]
+ - tags: {amenity: shower}
+ shapes: [shower]
+ - tags: {amenity: vending_machine}
+ shapes: [vending_machine]
+ - tags: {vending: admission_tickets}
+ shapes: [vending_tickets]
+ - tags: {amenity: vending_machine, vending: admission_tickets}
+ shapes: [vending_tickets]
+ - tags: {vending: candles}
+ shapes: [vending_candles]
+ - tags: {amenity: vending_machine, vending: candles}
+ shapes: [vending_candles]
+ - tags: {vending: chemist}
+ shapes: [vending_chemist]
+ - tags: {amenity: vending_machine, vending: chemist}
+ shapes: [vending_chemist]
+ - tags: {vending: drinks}
+ shapes: [vending_bottle]
+ - tags: {amenity: vending_machine, vending: drinks}
+ shapes: [vending_bottle]
+ - tags: {vending: excrement_bags}
+ shapes: [vending_excrement_bag]
+ - tags: {amenity: vending_machine, vending: excrement_bags}
+ shapes: [vending_excrement_bag]
+ - tags: {vending: fishing_tackle}
+ shapes: [vending_angle]
+ - tags: {amenity: vending_machine, vending: fishing_tackle}
+ shapes: [vending_angle]
+ - tags: {vending: public_transport_tickets}
+ shapes: [vending_tickets]
+ - tags: {amenity: vending_machine, vending: public_transport_tickets}
+ shapes: [vending_tickets]
+ - tags: {vending: parking_tickets}
+ shapes: [vending_p]
+ - tags: {amenity: vending_machine, vending: parking_tickets}
+ shapes: [vending_p]
+ - tags: {vending: water}
+ shapes: [vending_drop]
+ - tags: {amenity: vending_machine, vending: water}
+ shapes: [vending_drop]
+ - tags: {fitness_station: horizontal_bar}
+ shapes: [horizontal_bar]
+ - tags: {fitness_station: rings}
+ shapes: [rings]
+ - tags: {fitness_station: wall_bars}
+ shapes: [wall_bars]
+ - tags: {fitness_station: sit-up}
+ shapes: [sit_up]
+ - tags: {fitness_station: horizontal_ladder}
+ shapes: [horizontal_ladder]
+ - tags: {fitness_station: push-up}
+ shapes: [low_horizontal_bars]
+ - tags: {playground: hopscotch}
+ shapes: [hopscotch]
+ - tags: {playground: slide}
+ shapes: [slide]
+ - tags: {attraction: water_slide}
+ shapes: [slide_and_water]
+ - tags: {playground: roundabout}
+ shapes: [roundabout]
+ - tags: {playground: sandpit}
+ shapes: [sandpit]
+ - tags: {playground: seesaw}
+ shapes: [seesaw]
+ - tags: {playground: horizontal_bar}
+ shapes: [horizontal_bar]
+ - tags: {leisure: picnic_table}
+ shapes: [table]
+ - tags: {highway: traffic_mirror}
+ shapes: [side_mirror]
+ - tags: {amenity: dressing_room}
+ shapes: [hanger]
+
+ - group: "Entrances"
+ start_zoom_level: 18.0
+ tags:
+ - tags: {amenity: parking_entrance}
+ shapes:
+ - {shape: p, offset: [-1, 0]}
+ - {shape: arrow_right, offset: [4, 5]}
+ - tags: {amenity: parking_entrance, parking: underground}
+ shapes: [{shape: p, offset: [-1, 0]}, {shape: arrow_down, offset: [4, 5]}]
+ - tags: {amenity: parking_entrance, parking: multi-storey}
+ shapes: [{shape: p, offset: [-1, 0]}, {shape: arrow_up, offset: [4, 5]}]
+ - tags: {entrance: gate}
+ shapes: [gate]
+ - tags: {barrier: gate}
+ shapes: [gate]
+ - tags: {entrance: garage}
+ shapes: [garage_door]
+ - tags: {entrance: main}
+ shapes: [main_entrance]
+ - tags: {barrier: entrance}
+ shapes: [entrance]
+ - tags: {barrier: door}
+ shapes: [entrance]
+ - tags: {entrance: "yes"}
+ shapes: [entrance]
+ - tags: {building: entrance}
+ shapes: [{shape: entrance, color: "#FF0000"}]
+ - tags: {entrance: shop}
+ shapes: [entrance]
+ - tags: {entrance: exit}
+ shapes: [exit]
+ - tags: {entrance: service}
+ shapes: [door_with_keyhole]
+ - tags: {entrance: staircase}
+ shapes: [staircase]
+ - tags: {door: "no"}
+ shapes: [no_door]
+
+ - group: "Not important small objects"
+ start_zoom_level: 18.0
+ tags:
+ - tags: {amenity: bench}
+ shapes: [bench]
+ - tags: {amenity: bench, backrest: "yes"}
+ shapes: [bench_backrest]
+ - tags: {amenity: bench, backrest: "no"}
+ shapes: [bench_no_backrest]
+ - tags: {amenity: bench, tourism: artwork, artwork_type: sculpture}
+ shapes: [bench_with_statue]
+ - tags: {amenity: bench, tourism: artwork, artwork_type: statue}
+ shapes: [bench_with_statue]
+ - tags: {historic: memorial, memorial: bench, amenity: bench}
+ shapes: [bench_with_inscription]
+ - tags: {historic: memorial, memorial: bench}
+ shapes: [bench_with_inscription]
+ - tags: {memorial: bench}
+ shapes: [bench_with_inscription]
+ - tags: {amenity: clock}
+ shapes: [clock]
+ - tags: {amenity: fountain}
+ shapes: [{shape: fountain, color: $marina_text_color}]
+ - tags: {fountain: bubbler}
+ shapes: [fountain_bubbler]
+ - tags: {fountain: roman_wolf}
+ shapes: [fountain_roman_wolf]
+ - tags: {fountain: toret}
+ shapes: [fountain_toret]
+ - tags: {amenity: waste_basket}
+ shapes: [waste_basket]
+ - tags: {amenity: waste_disposal}
+ shapes: [waste_disposal]
+ - tags: {highway: street_lamp}
+ shapes: [street_lamp]
+ - tags: {amenity: bbq}
+ shapes: [bbq]
+ - tags: {leisure: firepit}
+ shapes: [fire_pit]
+ - tags: {man_made: cross}
+ shapes: [latin_cross]
+ - tags: {man_made: flagpole}
+ shapes: [flagpole]
+ - tags: {man_made: manhole}
+ shapes: [circle_9]
+ - tags: {manhole: drain}
+ shapes: [manhole_drain]
+ - tags: {man_made: pole}
+ shapes: [pole]
+ - tags: {man_made: pole, highway: street_lamp}
+ shapes: [pole_lamp]
+ - tags: {man_made: street_cabinet}
+ shapes: [street_cabinet]
+ - tags: {man_made: surveillance}
+ shapes: [cctv]
+ - tags: {man_made: surveillance, camera:type: dome, camera:mount: ceiling}
+ shapes: [cctv_dome_ceiling]
+ - tags: {man_made: surveillance, camera:type: dome, camera:mount: wall}
+ shapes: [cctv_dome_wall]
+ - tags: {man_made: ventilation_shaft}
+ shapes: [ventilation]
+ - tags: {railway: ventilation_shaft}
+ shapes: [ventilation]
+ - tags: {advertising: billboard}
+ shapes: [billboard]
+ - tags: {advertising: column}
+ shapes: [advertising_column]
+ - tags: {natural: human}
+ shapes: [human]
+ - tags: {natural: rock}
+ shapes: [stone]
+ - tags: {natural: stone}
+ shapes: [stone]
+ - tags: {sloped_curb: "yes"}
+ shapes: [lowered_kerb]
+ - tags: {kerb: lowered}
+ shapes: [lowered_kerb]
+
+ - tags: {railway: buffer_stop}
+ shapes: [buffer_stop]
+ - tags: {traffic_sign: "*"}
+ shapes: [guidepost]
+ - tags: {traffic_sign: city_limit}
+ shapes: [city_limit_sign]
+ - tags: {traffic_sign: maxspeed, maxspeed: "^(\\d)(\\d)$"}
+ shapes: [
+ circle_11,
+ {shape: digit_#maxspeed0, offset: [-2, 0], color: "#FFFFFF"},
+ {shape: digit_#maxspeed1, offset: [2, 0], color: "#FFFFFF"},
+ ]
+ - tags: {traffic_sign: maxspeed, maxspeed: "^(\\d)(\\d) mph$"}
+ shapes: [
+ speed_limit_mph,
+ {shape: digit_#maxspeed0, offset: [-2, 2]},
+ {shape: digit_#maxspeed1, offset: [2, 2]},
+ ]
+ - tags: {highway: milestone}
+ shapes: [milestone]
+ - tags: {traffic_sign: stop}
+ shapes: [stop]
+ - tags: {highway: give_way}
+ shapes: [triangle_down_hollow]
+ - tags: {noexit: "yes"}
+ shapes: [t]
+ - tags: {barrier: block}
+ shapes: [block]
+ - tags: {barrier: rock}
+ shapes: [stone]
+ - tags: {barrier: bollard}
+ shapes: [bollard]
+ - tags: {barrier: kerb}
+ shapes: [kerb]
+ - tags: {tank_trap: czech_hedgehog}
+ shapes: [czech_hedgehog]
+ - tags: {tank_trap: dragons_teeth}
+ shapes: [dragons_teeth]
+ - tags: {tank_trap: toblerone}
+ shapes: [dragons_teeth]
+
+ - group: "Trees"
+ start_zoom_level: 18.0
+ tags:
+ - tags: {natural: tree}
+ shapes: [{shape: tree, color: $tree_color, outline: no}]
+ - tags: {leaf_type: broadleaved}
+ shapes: [{shape: tree_with_leaf, color: $tree_color}]
+ - tags: {leaf_type: needleleaved}
+ shapes: [{shape: needleleaved_tree, color: $tree_color}]
+ - tags: {leaf_type: palm}
+ shapes: [{shape: palm, color: $tree_color}]
+ - tags: {natural: tree, leaf_type: broadleaved}
+ shapes: [{shape: tree_with_leaf, color: $tree_color}]
+ - tags: {natural: tree, leaf_type: needleleaved}
+ shapes: [{shape: needleleaved_tree, color: $tree_color}]
+ - tags: {natural: tree, leaf_type: palm}
+ shapes: [{shape: palm, color: $tree_color}]
+ - tags: {natural: tree, type: conifer}
+ shapes: [{shape: needleleaved_tree, color: $tree_color}]
+ - tags: {leaf_cycle: deciduous}
+ set_main_color: $decidious_color
+ - tags: {leaf_cycle: evergreen}
+ set_main_color: $evergreen_color
+ - tags: {natural: tree, leaf_cycle: deciduous}
+ set_main_color: $decidious_color
+ - tags: {natural: tree, leaf_cycle: evergreen}
+ set_main_color: $evergreen_color
+ - tags: {natural: bush}
+ shapes: [{shape: bush, color: $tree_color}]
+ - tags: {natural: shrub}
+ shapes: [{shape: bush, color: $tree_color}]
+
+ - tags: {natural: tree, genus: Betula}
+ shapes: [{shape: betula, color: $tree_color}]
+ - tags: {natural: tree, "genus:en": Birch}
+ shapes: [{shape: betula, color: $tree_color}]
+ - tags: {natural: tree, "genus:ru": Берёза}
+ shapes: [{shape: betula, color: $tree_color}]
+
+ - tags: {natural: tree, genus: Acer}
+ shapes: [{shape: tree, color: $tree_color}]
+ add_shapes: [{shape: leaf_maple, color: $tree_color}]
+ - tags: {natural: tree, "genus:en": Maple}
+ shapes: [{shape: tree, color: $tree_color}]
+ add_shapes: [{shape: leaf_maple, color: $tree_color}]
+
+ - tags: {natural: tree, genus: Malus}
+ shapes: [{shape: tree, color: $tree_color}]
+ add_shapes: [{shape: apple, color: $tree_color}]
+
+ - tags: {natural: tree, genus: Pyrus}
+ shapes: [{shape: tree, color: $tree_color}]
+ add_shapes: [{shape: pear, color: $tree_color}]
+
+ - group: "Indoor"
+ start_zoom_level: 18.0
+ tags:
+ - tags: {door: "yes"}
+ shapes: [entrance]
+ - tags: {indoor: pillar}
+ shapes: [pillar]
+
+ - group: "Mass objects"
+ start_zoom_level: 19.0
+ tags:
+ - tags: {tourism: camp_pitch}
+ shapes: [camp]
+
+ - group: "Add and over"
+ tags:
+ - tags: {support: pole}
+ over_icon: [support_pole]
+ under_icon: [clock, i_in_square]
+ - tags: {support: wall_mounted}
+ over_icon: [support_wall]
+ under_icon: [clock, i_in_square]
+ - tags: {support: column}
+ over_icon: [support_column]
+ under_icon: [clock, i_in_square]
+ - tags: {amenity: "*", karaoke: "yes"}
+ add_shapes: [microphone]
+ - tags: {building: "*", "roof:shape": onion}
+ add_shapes: [onion_roof_shape]
+ - tags: {natural: tree, denotation: urban}
+ over_icon: [urban_tree_pot]
+ under_icon: [tree, tree_with_leaf, needleleaved_tree, betula, palm]
+ - tags: {natural: tree, denotation: avenue}
+ over_icon: [bottom_right_horizontal_line]
+ under_icon: [tree, tree_with_leaf, needleleaved_tree, betula, palm]
+
+ - tags: {wheelchair: "yes"}
+ add_shapes: [wheelchair]
+ - tags: {wheelchair: "no"}
+ add_shapes: [no_wheelchair]
+ - tags: {foot: "yes"}
+ add_shapes: [foot]
+ - tags: {foot: "no"}
+ add_shapes: [no_foot]
+ - tags: {bicycle: "yes"}
+ add_shapes: [bicycle]
+ - tags: {bicycle: "no"}
+ shapes:
+ - {shape: bicycle, offset: [0, 2]}
+ - {shape: x_4, offset: [-5, -4]}
+ - tags: {internet_access: wlan, "internet_access:fee": "no"}
+ add_shapes:
+ - {shape: wlan, offset: [0, -3]}
+ - {shape: free, offset: [0, 5]}
+ - tags: {internet_access: wlan}
+ exception: {"internet_access:fee": "*"}
+ add_shapes: [wlan]
+ - tags: {material: wood}
+ add_shapes: [{shape: wood, color: $trunk_color}]
+ - tags: {access: private}
+ add_shapes: [lock_with_keyhole]
+ - tags: {access: "no"}
+ add_shapes: [lock]
+ - tags: {direction: clockwise}
+ add_shapes: [clockwise]
+ - tags: {direction: anticlockwise}
+ add_shapes: [counterclockwise]
+ - tags: {atm: "yes"}
+ add_shapes: [atm]
+ - tags: {tactile_paving: "yes"}
+ add_shapes: [tactile_paving]
+ - tags: {tactile_paving: "no"}
+ add_shapes:
+ - {shape: tactile_paving, offset: [0, 2]}
+ - {shape: x_5, offset: [0, -3]}
+ - tags: {"payment:credit_cards": "yes"}
+ add_shapes: [credit_card]
+
+ - tags: {bus: "yes"}
+ add_shapes: [bus]
+ - tags: {motorcar: "yes"}
+ add_shapes: [car]
+ - tags: {car: "yes"}
+ add_shapes: [car]
+ - tags: {monorail: "yes"}
+ add_shapes: [monorail]
+ - tags: {trolleybus: "yes"}
+ add_shapes: [trolleybus]
+
+ - tags: {recycling:glass_bottles: "yes"}
+ add_shapes: [bottle]
+ - tags: {recycling:paper: "yes"}
+ add_shapes: [gazette]
+ - tags: {recycling:glass: "yes"}
+ add_shapes: [bottle_and_wine_glass]
+ - tags: {recycling:clothes: "yes"}
+ add_shapes: [t_shirt]
+ - tags: {recycling:shoes: "yes"}
+ add_shapes: [shoe]
+ - tags: {recycling:green_waste: "yes"}
+ add_shapes: [apple]
+ - tags: {recycling:paper_packaging: "yes"}
+ add_shapes: [gazette]
+ - tags: {recycling:newspaper: "yes"}
+ add_shapes: [gazette]
+ - tags: {recycling:magazines: "yes"}
+ add_shapes: [gazette]
+ - tags: {recycling:books: "yes"}
+ add_shapes: [book]
+ - tags: {recycling:wood: "yes"}
+ add_shapes: [{shape: wood, color: $trunk_color}]
+ - tags: {recycling:glass_bottles:colour: "yes"}
+ add_shapes: [{shape: bottle, color: green}]
+ - tags: {recycling:cartons: "yes"}
+ add_shapes: [aseptic_carton]
+ - tags: {recycling:beverage_cartons: "yes"}
+ add_shapes: [aseptic_carton]
+ - tags: {recycling:organic: "yes"}
+ add_shapes: [apple]
+ - tags: {recycling:tetrapak: "yes"}
+ add_shapes: [aseptic_carton]
+ - tags: {recycling:tyres: "yes"}
+ add_shapes: [tyre]
+ - tags: {recycling:toys: "yes"}
+ add_shapes: [toy_horse]
+ - tags: {recycling:verre: "yes"}
+ add_shapes: [bottle_and_wine_glass]
+ - tags: {recycling:bags: "yes"}
+ add_shapes: [bag]
+
+ - tags: {crossing:island: "yes"}
+ add_shapes: [rectangle_vertical_rounded]
+ - tags: {crossing:island: "no"}
+ add_shapes: [rectangle_vertical_rounded_crossed]
+
+ - tags: {parking: "yes"}
+ add_shapes: [p]
+ - tags: {drinking_water: "yes"}
+ add_shapes: [drinking_water]
+ - tags: {toilets: "yes"}
+ add_shapes: [woman_and_man]
+ - tags: {washing_machine: "yes"}
+ add_shapes: [washing_machine]
+ - tags: {shower: "yes"}
+ add_shapes: [shower]
+ - tags: {dog: "yes"}
+ add_shapes: [dog]
+
+ # For tourism=camp_pitch
+
+ - tags: {caravans: "yes"}
+ add_shapes: [caravan]
+ - tags: {tents: "yes"}
+ add_shapes: [camp]
+ - tags: {fireplace: "yes"}
+ add_shapes: [fireplace]
+ - tags: {openfire: "yes"}
+ add_shapes: [fire_pit]
+ - tags: {bbq: "yes"}
+ add_shapes: [bbq]
diff --git a/map_machine/scheme/roads.yml b/map_machine/scheme/roads.yml
new file mode 100644
index 0000000..71adcfb
--- /dev/null
+++ b/map_machine/scheme/roads.yml
@@ -0,0 +1,84 @@
+roads:
+ - tags: {highway: motorway}
+ default_width: 7.0
+ border_color: $motorway_border_color
+ color: $motorway_color
+ priority: 41.8
+ - tags: {highway: trunk}
+ default_width: 7.0
+ border_color: $motorway_border_color
+ color: $motorway_color
+ priority: 41.0
+ - tags: {highway: trunk_link}
+ default_width: 7.0
+ border_color: $motorway_border_color
+ color: $motorway_color
+ priority: 41.0
+ - tags: {highway: primary}
+ default_width: 7.0
+ border_color: $primary_border_color
+ color: $primary_color
+ priority: 41.7
+ - tags: {highway: primary_link}
+ default_width: 7.0
+ border_color: $primary_border_color
+ color: $primary_color
+ priority: 41.7
+ - tags: {highway: motorway_link}
+ default_width: 7.0
+ border_color: $motorway_border_color
+ color: $motorway_color
+ priority: 41.8
+ - tags: {highway: secondary}
+ default_width: 7.0
+ border_color: $secondary_border_color
+ priority: 41.6
+ color: $secondary_color
+ - tags: {highway: secondary_link}
+ default_width: 7.0
+ border_color: $secondary_border_color
+ priority: 41.6
+ color: $secondary_color
+ - tags: {highway: tertiary}
+ default_width: 7.0
+ border_color: $tertiary_border_color
+ priority: 41.5
+ color: $tertiary_color
+ - tags: {highway: tertiary_link}
+ default_width: 7.0
+ border_color: $tertiary_border_color
+ priority: 41.5
+ color: $tertiary_color
+ - tags: {highway: unclassified}
+ default_width: 5.0
+ border_color: $road_border_color
+ priority: 41.0
+ - tags: {highway: residential}
+ default_width: 5.0
+ border_color: $road_border_color
+ priority: 41.0
+ - tags: {highway: living_street}
+ default_width: 4.0
+ border_color: $road_border_color
+ priority: 41.0
+ - tags: {highway: service}
+ exception: {service: parking_aisle}
+ default_width: 3.0
+ border_color: $road_border_color
+ priority: 41.0
+ - tags: {highway: service, service: parking_aisle}
+ default_width: 2.0
+ border_color: $road_border_color
+ priority: 41.0
+ - tags: {leisure: track}
+ exception: {area: "yes"}
+ color: $pitch_color
+ border_color: $pitch_border_color
+ default_width: 5.0
+ priority: 21.0
+
+ - tags: {highway: raceway}
+ color: $pitch_color
+ border_color: $pitch_border_color
+ default_width: 7.0
+ priority: 21.0
diff --git a/map_machine/scheme/ways.yml b/map_machine/scheme/ways.yml
new file mode 100644
index 0000000..f24a027
--- /dev/null
+++ b/map_machine/scheme/ways.yml
@@ -0,0 +1,880 @@
+variables:
+
+ priority_boundary: 90 # Boundary.
+ priority_rail_platform: 83 # Rail platform.
+ priority_rail_4: 82 # Rails.
+ priority_rail_2: 81 # Rail border.
+ priority_rail_1: 80 # Disused, construciton rails.
+ priority_objects: 70 # Artwork, camp.
+ priority_power: 60 # Power lines, pipeline.
+ priority_barrier: 50 # Wall, kerb.
+ priority_road_5: 43 # Foot area.
+ priority_road_4: 42 # Foot, cycle, steps.
+ priority_road_3: 41 # Foot border.
+ priority_road_2: 40 # Track.
+ priority_water_slide: 35 # Water slide.
+ priority_over_water: 33 # Bridge, pier.
+ priority_ferry_route: 32 # Ferry route.
+ priority_water_2: 31 # Swimming area.
+ priority_water_1: 30 # Water.
+ priority_indoor_4: 23 # Column.
+ priority_indoor_3: 22 # Area, room, elevator.
+ priority_indoor_2: 21 # Corridors.
+ priority_indoor_1: 20 # Indoor bottom.
+ priority_airport_4: 12 #
+ priority_airport_3: 11 #
+ priority_airport_2: 11 #
+ priority_airport_1: 10 # area:aeroway=taxiway.
+ priority_golf: 4 # Golf.
+ priority_landuse_4: 3 # Pitch, swimming pool.
+ priority_landuse_3: 2 # Garages, ferry terminal.
+ priority_landuse_2: 1 # Sand, grass, crops, wood, ridge, stadium.
+ priority_landuse_1: 0 # Commercial, residential, military.
+
+ways:
+ - tags: {man_made: bridge}
+ style: {fill: "#AAAAAA"}
+ priority: $priority_over_water
+ - tags: {man_made: pier}
+ style:
+ stroke-linecap: round
+ stroke-linejoin: round
+ stroke-width: 5
+ stroke: $background_color
+ priority: $priority_over_water
+ - tags: {indoor: area}
+ style:
+ stroke: $indoor_border_color
+ stroke-width: 1.0
+ fill: $indoor_color
+ priority: $priority_indoor_1
+ - tags: {indoor: corridor}
+ style:
+ stroke: $indoor_border_color
+ stroke-width: 1.0
+ fill: $indoor_color
+ priority: $priority_indoor_2
+ - tags: {highway: corridor}
+ style:
+ stroke: "#00FF00"
+ stroke-width: 5.0
+ priority: $priority_indoor_2
+ - tags: {indoor: "yes", area: "yes"}
+ style:
+ stroke: $indoor_color
+ stroke-width: 1.0
+ fill: $indoor_color
+ priority: $priority_indoor_3
+ - tags: {indoor: room}
+ style:
+ stroke: $indoor_border_color
+ stroke-width: 1.0
+ priority: $priority_indoor_3
+ - tags: {indoor: elevator, area: "yes"}
+ style:
+ stroke: $indoor_color
+ stroke-width: 1.0
+ fill: $indoor_color
+ priority: $priority_indoor_3
+ - tags: {indoor: column}
+ style:
+ stroke: $indoor_column_color
+ stroke-width: 1.0
+ fill: $indoor_column_color
+ priority: $priority_indoor_4
+
+ - tags: {power: line}
+ style:
+ stroke: "#000000"
+ stroke-width: 1.0
+ opacity: 0.2
+ priority: $priority_power
+ - tags: {power: cable}
+ style:
+ stroke: "#000000"
+ stroke-width: 1.0
+ opacity: 0.1
+ priority: $priority_power
+ - tags: {golf: hole}
+ style:
+ stroke: "#44AA33"
+ stroke-width: 1.0
+ opacity: 0.6
+ priority: $priority_golf
+ - tags: {man_made: pipeline}
+ style:
+ stroke: "#888888"
+ stroke-width: 1.0
+ stroke-dasharray: "12.0,1.5"
+ priority: $priority_power
+ - tags: {man_made: pipeline}
+ style:
+ stroke: "#888888"
+ stroke-width: 3.0
+ stroke-dasharray: "1.0,10.0,1.0,1.5"
+ priority: $priority_power
+
+ - tags: {attraction: water_slide}
+ style:
+ stroke: "#FFFFFF"
+ stroke-width: 2.0
+ priority: 81
+ - tags: {attraction: water_slide}
+ style:
+ stroke: "#888888"
+ stroke-width: 4.0
+ priority: $priority_water_slide
+
+ - tags: {highway: track}
+ style:
+ stroke-width: 1.5
+ stroke: $track_color
+ stroke-linecap: round
+ stroke-linejoin: round
+ stroke-dasharray: $track_grade_no_dasharray
+ priority: $priority_road_2
+ - tags: {highway: track, tracktype: grade5}
+ style:
+ stroke-width: 1.5
+ stroke: $track_color
+ stroke-linecap: round
+ stroke-linejoin: round
+ stroke-dasharray: $track_grade_5_dasharray
+ priority: $priority_road_2
+ - tags: {highway: track, tracktype: grade4}
+ style:
+ stroke-width: 1.5
+ stroke: $track_color
+ stroke-linecap: round
+ stroke-linejoin: round
+ stroke-dasharray: $track_grade_4_dasharray
+ priority: $priority_road_2
+ - tags: {highway: track, tracktype: grade3}
+ style:
+ stroke-width: 1.5
+ stroke: $track_color
+ stroke-linecap: round
+ stroke-linejoin: round
+ stroke-dasharray: $track_grade_3_dasharray
+ priority: $priority_road_2
+ - tags: {highway: track, tracktype: grade2}
+ style:
+ stroke-width: 1.5
+ stroke: $track_color
+ stroke-linecap: round
+ stroke-linejoin: round
+ stroke-dasharray: $track_grade_2_dasharray
+ priority: $priority_road_2
+ - tags: {highway: track, surface: [compacted, fine_gravel, gravel]}
+ style:
+ stroke-width: 1.5
+ stroke: $track_color
+ stroke-linecap: round
+ stroke-linejoin: round
+ stroke-dasharray: $track_grade_2_dasharray
+ priority: $priority_road_2
+ - tags: {highway: track, tracktype: grade1}
+ style:
+ stroke-width: 1.5
+ stroke: $track_color
+ stroke-linecap: round
+ stroke-linejoin: round
+ priority: $priority_road_2
+ - tags: {highway: track, surface: [asphalt, chipseal, concrete, paved]}
+ style:
+ stroke-width: 1.5
+ stroke: $track_color
+ stroke-linecap: round
+ stroke-linejoin: round
+ priority: $priority_road_2
+ - tags: {highway: footway}
+ exception: {area: "yes", type: "multipolygon"}
+ style:
+ stroke-width: $foot_border_width
+ stroke: $foot_border_color
+ stroke-linecap: round
+ stroke-linejoin: round
+ priority: $priority_road_3
+ - tags: {highway: pedestrian}
+ exception: {area: "yes"}
+ style:
+ stroke-width: 13.0
+ stroke: $pedestrian_border_color
+ stroke-linecap: round
+ stroke-linejoin: round
+ priority: $priority_road_3
+ - tags: {highway: cycleway}
+ exception: {area: "yes"}
+ style:
+ stroke-width: 3.0
+ stroke: $foot_border_color
+ stroke-linecap: round
+ stroke-linejoin: round
+ priority: $priority_road_3
+ - tags: {highway: steps}
+ style:
+ stroke-width: 6.0
+ stroke: $foot_border_color
+ stroke-linecap: butt
+ - tags: {highway: path}
+ style:
+ stroke-width: 3.0
+ stroke: $foot_border_color
+ priority: $priority_road_3
+
+ - tags: {highway: footway}
+ exception: {area: "yes", type: "multipolygon"}
+ style:
+ stroke-width: 1.5
+ stroke-dasharray: $foot_dasharray
+ stroke-linecap: round
+ stroke-linejoin: round
+ stroke: $foot_color
+ priority: $priority_road_4
+ - tags: {highway: pedestrian}
+ exception: {area: "yes"}
+ style:
+ stroke-width: 11
+ stroke-linecap: round
+ stroke-linejoin: round
+ stroke: $pedestrian_color
+ priority: $priority_road_4
+ - tags: {highway: footway, area: "yes"}
+ style:
+ stroke: $foot_area_border_color
+ fill: $foot_area_color
+ stroke-linecap: round
+ stroke-linejoin: round
+ priority: $priority_road_5
+ - tags: {highway: footway, type: "multipolygon"}
+ style:
+ stroke: $foot_area_border_color
+ fill: $foot_area_color
+ stroke-linecap: round
+ stroke-linejoin: round
+ priority: $priority_road_5
+ - tags: {highway: pedestrian, area: "yes"}
+ style:
+ stroke: $pedestrian_border_color
+ fill: $pedestrian_color
+ stroke-width: 2
+ stroke-linecap: round
+ stroke-linejoin: round
+ priority: $priority_road_3
+ - tags: {highway: pedestrian, area: "yes"}
+ style:
+ stroke: none
+ fill: $pedestrian_color
+ stroke-linecap: round
+ stroke-linejoin: round
+ priority: $priority_road_4
+ - tags: {highway: cycleway}
+ exception: {area: "yes"}
+ style:
+ stroke-width: 1.0
+ stroke: $cycle_color
+ stroke-dasharray: $cycle_dasharray
+ stroke-linecap: butt
+ priority: $priority_road_4
+ - tags: {highway: steps, conveying: "*"}
+ style:
+ stroke-width: 5.0
+ stroke-dasharray: 1.5,2.0
+ stroke-linecap: butt
+ stroke: "#888888"
+ priority: $priority_road_4
+ - tags: {highway: steps}
+ exception: {conveying: "*"}
+ style:
+ stroke-width: 5.0
+ stroke-dasharray: 1.5,2.0
+ stroke-linecap: butt
+ stroke: $foot_color
+ priority: $priority_road_4
+ - tags: {highway: path}
+ style:
+ stroke-width: 1.5
+ stroke-dasharray: 5.0,3.0
+ stroke-linecap: butt
+ stroke: $foot_color
+ priority: $priority_road_4
+
+ - tags: {aeroway: runway}
+ style:
+ stroke-width: 50.0
+ stroke: $runway_color
+ priority: $priority_airport_2
+ - tags: {aeroway: taxiway}
+ style:
+ stroke-width: 50.0
+ stroke: $taxiway_color
+ priority: $priority_airport_2
+ - tags: {aeroway: runway}
+ style:
+ stroke-width: 2.0
+ stroke: "#DDDDDD"
+ stroke-dasharray: 40.0,20.0
+ priority: $priority_airport_4
+ - tags: {aeroway: taxiway}
+ style:
+ stroke-width: 1.0
+ stroke: "#CCCCCC"
+ priority: $priority_airport_4
+ - tags: {aeroway: parking_position}
+ style:
+ stroke-width: 1.0
+ stroke: "#DDCC00"
+ priority: $priority_airport_4
+ - tags: {area:aeroway: taxiway}
+ style:
+ fill: "#CCCCCC"
+ priority: $priority_airport_1
+
+ - tags: {natural: wood}
+ style:
+ fill: $wood_color
+ priority: $priority_landuse_3
+ - tags: {natural: wetland}
+ style:
+ fill: $wetland_color
+ priority: $priority_water_2
+ - tags: {natural: grassland}
+ style:
+ fill: $grass_color
+ stroke: $grass_border_color
+ priority: $priority_landuse_2
+ - tags: {natural: scrub}
+ style:
+ fill: $wood_color
+ priority: $priority_landuse_2
+ - tags: {natural: sand}
+ style:
+ fill: $sand_color
+ priority: $priority_landuse_2
+ - tags: {natural: beach}
+ style:
+ fill: $beach_color
+ priority: $priority_landuse_2
+ - tags: {natural: heath}
+ style:
+ fill: "#DDDDDD"
+ priority: $priority_landuse_2
+ - tags: {natural: glacier}
+ style:
+ fill: "#FFFFFF"
+ priority: $priority_landuse_2
+ - tags: {natural: desert}
+ style:
+ fill: $desert_color
+ priority: $priority_landuse_2
+ - tags: {natural: forest}
+ style:
+ fill: $wood_color
+ priority: $priority_landuse_2
+ - tags: {natural: tree_row}
+ priority: $priority_landuse_2
+ style:
+ stroke: $wood_color
+ stroke-width: 5.0
+ stroke-linecap: round
+ stroke-linejoin: round
+ - tags: {natural: water}
+ exception: {intermittent: "yes"}
+ style:
+ fill: $water_color
+ priority: $priority_water_1
+ - tags: {natural: water, intermittent: "yes"}
+ style:
+ fill: $water_color
+ opacity: 0.5
+ priority: $priority_water_1
+ - tags: {natural: coastline}
+ style:
+ fill: $water_color
+ stroke: $water_border_color
+ stroke-width: 1.0
+ priority: $priority_water_1
+ - tags: {natural: ridge}
+ style:
+ stroke-width: 2.0
+ opacity: 0.3
+ stroke: $ridge_color
+ priority: $priority_landuse_2
+ - tags: {natural: bare_rock}
+ style:
+ fill: $rock_color
+ - tags: {natural: cliff}
+ style:
+ stroke-width: 1.0
+ stroke: "#BBBBBB"
+ - tags: {natural: cliff}
+ parallel_offset: -2.5
+ style:
+ stroke-width: 5.0
+ stroke: "#BBBBBB"
+ stroke-dasharray: "1,10"
+ - tags: {natural: scree}
+ style:
+ fill: $scree_color
+
+ - tags: {landuse: allotments}
+ style:
+ fill: $allotments_color
+ priority: $priority_landuse_2
+ - tags: {landuse: conservation}
+ style:
+ fill: $grass_color
+ priority: $priority_landuse_2
+ - tags: {landuse: construction}
+ style:
+ fill: $construction_color
+ - tags: {landuse: farmland}
+ style: {fill: $farmland_color, stroke: $farmland_border_color}
+ priority: $priority_landuse_2
+ - tags: {landuse: greenhouse_horticulture}
+ style: {fill: $farmland_color, stroke: $farmland_border_color}
+ priority: $priority_landuse_2
+ - tags: {landuse: farmyard}
+ style: {fill: $farmland_color, stroke: $farmland_border_color} # FIXME
+ priority: $priority_landuse_2
+ - tags: {landuse: farmland, crop: wheat}
+ style: {fill: $wheat_color, stroke: $wheat_border_color}
+ priority: $priority_landuse_2
+ - tags: {landuse: farmland, crop: barley}
+ style: {fill: $barley_color, stroke: $barley_border_color}
+ priority: $priority_landuse_2
+ - tags: {landuse: farmland, crop: rye}
+ style: {fill: $rye_color, stroke: $rye_dark_color}
+ priority: $priority_landuse_2
+ - tags: {landuse: forest}
+ style:
+ fill: $wood_color
+ priority: $priority_landuse_2
+ - tags: {landuse: garages}
+ style:
+ fill: $parking_color
+ priority: $priority_landuse_3
+ - tags: {landuse: retail}
+ style:
+ fill: $retail_color
+ stroke: $retail_border_color
+ stroke-width: $retail_border_width
+ opacity: $retail_opacity
+ priority: $priority_landuse_1
+ - tags: {landuse: village_green}
+ style:
+ fill: $village_green_color
+ priority: $priority_landuse_2
+ - tags: {landuse: grass}
+ style:
+ fill: $grass_color
+ stroke: $grass_border_color
+ priority: $priority_landuse_2
+ - tags: {landuse: orchard}
+ style:
+ fill: $orchard_color
+ priority: $priority_landuse_1
+ - tags: {landuse: meadow}
+ style:
+ fill: $meadow_color
+ stroke: $meadow_border_color
+ priority: $priority_landuse_2
+ - tags: {tourism: camp_pitch}
+ style:
+ stroke: "#000000"
+ opacity: 0.1
+ priority: $priority_objects
+
+ # Hidden land use
+
+ - tags: {landuse: cemetery}
+ style:
+ fill: $cemetery_color
+ opacity: $cemetery_opacity
+ priority: $priority_landuse_1
+ - tags: {amenity: grave_yard}
+ style:
+ fill: $cemetery_color
+ opacity: $cemetery_opacity
+ priority: $priority_landuse_1
+ - tags: {landuse: commercial}
+ style:
+ fill: $commercial_color
+ opacity: $commercial_opacity
+ stroke: $commercial_border_color
+ stroke-width: $commercial_border_width
+ priority: $priority_landuse_1
+ - tags: {landuse: industrial}
+ style:
+ fill: $industrial_color
+ opacity: $industrial_opacity
+ stroke: $industrial_border_color
+ stroke-width: $industrial_border_width
+ priority: $priority_landuse_1
+ - tags: {landuse: military}
+ style:
+ fill: $military_color
+ opacity: $military_opacity
+ priority: $priority_landuse_1
+ - tags: {landuse: railway}
+ style:
+ fill: $railway_color
+ opacity: $railway_opacity
+ stroke: $railway_border_color
+ stroke-width: $railway_border_width
+ priority: $priority_landuse_1
+ - tags: {landuse: residential}
+ style:
+ fill: $residential_area_color
+ opacity: $residential_area_opacity
+ stroke: $residential_area_border_color
+ stroke-width: $residential_area_border_width
+ priority: $priority_landuse_1
+ - tags: {power: substation}
+ style:
+ fill: $hidden_color
+ opacity: 0.05
+ priority: $priority_landuse_1
+
+ - tags: {amenity: ferry_terminal}
+ style:
+ fill: $ferry_terminal_color
+ priority: $priority_landuse_3
+ - tags: {amenity: parking}
+ style:
+ fill: $parking_color
+ stroke: $parking_border_color
+ stroke-width: $parking_stroke_width
+ opacity: $parking_opacity
+ priority: 30
+ - tags: {amenity: kindergarten}
+ style:
+ fill: $kindergarten_color
+ opacity: $kindergarten_opacity
+ - tags: {amenity: school}
+ style:
+ fill: $school_color
+ opacity: $school_opacity
+ priority: $priority_landuse_1
+ - tags: {amenity: parking_space}
+ style:
+ stroke: "#FFFFFF"
+
+ - tags: {aeroway: landingpad}
+ style:
+ fill: "#000000"
+ opacity: 0.1
+ - tags: {aeroway: helipad}
+ style:
+ fill: "#440044"
+ opacity: 0.1
+
+ - tags: {waterway: river}
+ style:
+ stroke: $water_color
+ stroke-width: 2.5
+ priority: $priority_water_1
+ - tags: {waterway: canal}
+ style:
+ stroke: $water_color
+ stroke-width: 2.0
+ priority: $priority_water_1
+ - tags: {waterway: stream}
+ style:
+ stroke: $water_color
+ stroke-width: 1.5
+ priority: $priority_water_1
+ - tags: {waterway: riverbank}
+ style:
+ fill: $water_color
+ stroke: $water_border_color
+ stroke-width: 1.0
+ priority: $priority_water_1
+ - tags: {waterway: ditch}
+ style:
+ stroke: $water_color
+ stroke-width: 2.0
+ priority: $priority_water_1
+
+ - tags: {railway: subway}
+ style:
+ stroke-width: 3.5
+ opacity: 0.7
+ stroke: "#AAAAAA"
+ priority: $priority_road_2
+ - tags: {railway: rail}
+ style:
+ stroke-width: 3.0
+ stroke: "#BBBBBB"
+ priority: $priority_rail_2
+ - tags: {railway: light_rail}
+ style:
+ stroke-width: 3.0
+ stroke: "#CCCCCC"
+ priority: $priority_rail_2
+ - tags: {railway: monorail}
+ style:
+ stroke-width: 3.0
+ stroke: "#CCCCCC"
+ priority: $priority_rail_2
+ - tags: {railway: funicular}
+ style:
+ stroke-width: 3.0
+ stroke: "#CCCCCC"
+ priority: $priority_rail_2
+ - tags: {railway: narrow_gauge}
+ style:
+ stroke-width: 3.0
+ stroke: "#DDDDDD"
+ priority: $priority_rail_2
+ - tags: {railway: tram}
+ style:
+ stroke-width: 3.0
+ stroke: "#BBBBBB"
+ priority: $priority_rail_2
+ - tags: {railway: construction}
+ style:
+ stroke-width: 2.0
+ stroke: "#000000"
+ stroke-dasharray: 6,3
+ opacity: 0.3
+ priority: $priority_rail_1
+ - tags: {railway: disused}
+ style:
+ stroke-width: 3.0
+ stroke: "#000000"
+ stroke-dasharray: 6,6
+ opacity: 0.3
+ priority: $priority_rail_1
+ - tags: {railway: abandoned}
+ style:
+ stroke-width: 3.0
+ stroke: "#000000"
+ stroke-dasharray: 6,9
+ opacity: 0.3
+ priority: $priority_rail_1
+
+ - tags: {railway: rail}
+ style:
+ stroke-width: 1.0
+ stroke: "#444444"
+ priority: $priority_rail_4
+ - tags: {railway: light_rail}
+ style:
+ stroke-width: 1.0
+ stroke: "#444444"
+ priority: $priority_rail_4
+ - tags: {railway: monorail}
+ style:
+ stroke-width: 1.0
+ stroke: "#444444"
+ priority: $priority_rail_4
+ - tags: {railway: funicular}
+ style:
+ stroke-width: 1.0
+ stroke: "#444444"
+ priority: $priority_rail_4
+ - tags: {railway: narrow_gauge}
+ style:
+ stroke-width: 1.0
+ stroke: "#444444"
+ priority: $priority_rail_4
+ - tags: {railway: tram}
+ style:
+ stroke-width: 1.0
+ stroke: "#444444"
+ priority: $priority_rail_4
+
+ - tags: {railway: platform}
+ style:
+ fill: $platform_color
+ stroke-width: 1.0
+ stroke: $platform_border_color
+ priority: $priority_rail_platform
+
+ - tags: {route: ferry}
+ style:
+ stroke-width: 1.0
+ stroke-dasharray: 3.0,3.0
+ stroke-linecap: butt
+ stroke: $route_color
+ priority: $priority_ferry_route
+
+ - tags: {leisure: swimming_area}
+ style:
+ fill: $swimming_area_color
+ priority: $priority_water_2 # Should be over water.
+ - tags: {leisure: garden}
+ style:
+ fill: $grass_color
+ priority: $priority_landuse_2
+ - tags: {leisure: dog_park}
+ style:
+ fill: $dog_park_color
+ priority: $priority_landuse_3
+ - tags: {leisure: park}
+ style:
+ fill: $park_color
+ priority: $priority_landuse_1
+ - tags: {landuse: recreation_ground}
+ style:
+ fill: $grass_color
+ opacity: 0.5
+ - tags: {leisure: recreation_ground}
+ style:
+ fill: $grass_color
+ opacity: 0.5
+ - tags: {leisure: stadium}
+ style:
+ fill: $stadium_color
+ opacity: $stadium_opacity
+ stroke: $stadium_border_color
+ stroke-width: $stadium_border_width
+ priority: $priority_landuse_3
+ - tags: {leisure: sports_centre}
+ style:
+ fill: $sports_centre_color
+ stroke: $sports_centre_border_color
+ stroke-width: $sports_centre_border_width
+ priority: $priority_landuse_2
+ - tags: {leisure: water_park}
+ style:
+ fill: $water_park_color
+ opacity: $water_park_opacity
+ stroke: $water_park_border_color
+ stroke-width: $water_park_border_width
+ - tags: {leisure: golf_course}
+ style:
+ fill: $grass_color
+ opacity: 0.5
+ - tags: {leisure: pitch}
+ style:
+ fill: $pitch_color
+ stroke: $pitch_border_color
+ stroke-width: 1.0
+ priority: $priority_landuse_4
+ - tags: {leisure: bleachers}
+ style:
+ fill: $pitch_color
+ stroke: $pitch_border_color
+ stroke-width: 1.0
+ priority: $priority_landuse_4
+ - tags: {leisure: track, area: "yes"}
+ style:
+ fill: $pitch_color
+ stroke: $pitch_border_color
+ stroke-width: 1.0
+ priority: $priority_landuse_4
+ - tags: {leisure: fitness_station}
+ style:
+ fill: $pitch_color
+ stroke: $pitch_border_color
+ stroke-width: 1.0
+ priority: $priority_landuse_4
+ - tags: {leisure: playground}
+ style:
+ fill: $playground_color
+ stroke: $playground_border_color
+ stroke-width: $playground_border_width
+ priority: $priority_landuse_4
+ - tags: {leisure: swimming_pool}
+ style:
+ fill: $water_color
+ stroke: $water_border_color
+ stroke-width: 1.0
+ priority: $priority_landuse_4
+
+ - tags: {tourism: artwork}
+ style:
+ stroke: "#888888"
+ stroke-width: 1.0
+ priority: $priority_objects
+ - tags: {barrier: hedge}
+ style:
+ fill: none
+ stroke: $wood_color
+ stroke-width: 4.0
+ priority: $priority_landuse_2
+ - tags: {barrier: city_wall}
+ style:
+ fill: none
+ stroke: "#000000"
+ stroke-width: 2.0
+ opacity: 0.5
+ priority: $priority_barrier
+ - tags: {barrier: wall}
+ style:
+ fill: none
+ stroke: "#000000"
+ stroke-width: 1.5
+ opacity: 0.4
+ priority: $priority_barrier
+ - tags: {man_made: embankment}
+ style:
+ fill: none
+ stroke: "#000000"
+ stroke-width: 1.0
+ opacity: 0.3
+ priority: $priority_barrier
+ - tags: {man_made: embankment}
+ parallel_offset: -1.5
+ style:
+ fill: none
+ stroke: "#000000"
+ stroke-width: 3.0
+ opacity: 0.3
+ stroke-dasharray: "1,7"
+ priority: $priority_barrier
+ - tags: {barrier: fence}
+ style:
+ fill: none
+ stroke: "#000000"
+ stroke-width: 1.0
+ opacity: 0.25
+ priority: $priority_barrier
+ - tags: {barrier: retaining_wall}
+ style:
+ fill: none
+ stroke: "#000000"
+ stroke-width: 1.0
+ opacity: 0.25
+ priority: $priority_barrier
+ - tags: {barrier: handrail}
+ style:
+ fill: none
+ stroke: "#000000"
+ stroke-width: 1.0
+ opacity: 0.2
+ priority: $priority_barrier
+ - tags: {barrier: kerb}
+ style:
+ fill: none
+ stroke: "#000000"
+ stroke-width: 1.0
+ opacity: 0.15
+ priority: $priority_barrier
+
+ - tags: {border: "*"}
+ style:
+ stroke: "#FF0000"
+ stroke-width: 0.5
+ stroke-dasharray: 10.0,20.0
+ - tags: {"area:highway": "*"}
+
+ - tags: {boundary: "*"}
+ style:
+ stroke: $boundary_color
+ stroke-width: 0.3
+ stroke-dasharray: 10.0,5.0
+ priority: $priority_boundary
+
+area_tags:
+ - tags: {aeroway: "*"}
+ - tags: {building: "*"}
+ - tags: {landuse: "*"}
+ - tags: {leisure: "*"}
+ - tags: {natural: "*"}
+ exception: {natural: "tree_row"}
+ - tags: {indoor: "corridor"}
+ - tags: {power: "compensator"}
+ - tags: {power: "substation"}
diff --git a/map_machine/slippy/server.py b/map_machine/slippy/server.py
index 2081666..2fb8865 100644
--- a/map_machine/slippy/server.py
+++ b/map_machine/slippy/server.py
@@ -74,7 +74,8 @@ def do_GET(self) -> None:
scheme = Scheme.from_file(
workspace.DEFAULT_SCHEME_PATH
if self.options.scheme == "default"
- else Path(self.options.scheme)
+ else Path(self.options.scheme),
+ workspace.find_scheme_path,
)
tile.draw(
tile_path,
diff --git a/map_machine/slippy/tile.py b/map_machine/slippy/tile.py
index 81bcf1b..fdf36fe 100644
--- a/map_machine/slippy/tile.py
+++ b/map_machine/slippy/tile.py
@@ -543,7 +543,7 @@ def generate_tiles(options: argparse.Namespace) -> None:
logger.fatal("Scheme `%s` not found.", options.scheme)
return
- scheme: Scheme = Scheme.from_file(scheme_path)
+ scheme: Scheme = Scheme.from_file(scheme_path, workspace.find_scheme_path)
cache_path: Path = Path(options.cache)
message: str
diff --git a/map_machine/text.py b/map_machine/text.py
index 6c7d22b..cff872e 100644
--- a/map_machine/text.py
+++ b/map_machine/text.py
@@ -79,10 +79,10 @@ class TextConstructor:
def __init__(self, scheme: Scheme) -> None:
self.scheme: Scheme = scheme
- self.default_color: Color = self.scheme.get_color("text_color")
- self.main_color: Color = self.scheme.get_color("text_main_color")
+ self.default_color: Color = self.scheme.get_color("$text_color")
+ self.main_color: Color = self.scheme.get_color("$text_main_color")
self.default_out_color: Color = self.scheme.get_color(
- "text_outline_color"
+ "$text_outline_color"
)
def label(self, text: str, size: float = DEFAULT_FONT_SIZE) -> Label:
diff --git a/map_machine/ui/cli.py b/map_machine/ui/cli.py
index 7a19084..650e56e 100644
--- a/map_machine/ui/cli.py
+++ b/map_machine/ui/cli.py
@@ -148,28 +148,29 @@ def add_map_arguments(parser: argparse.ArgumentParser) -> None:
parser.add_argument(
"--buildings",
metavar="",
- default=BuildingMode.FLAT,
+ default=None,
choices=[mode.value for mode in BuildingMode],
help=(
- "building drawing mode: "
+ "building drawing mode (overrides scheme): "
+ ", ".join(mode.value for mode in BuildingMode)
),
)
parser.add_argument(
"--roads",
metavar="",
- default=RoadMode.SIMPLE,
+ default=None,
choices=[mode.value for mode in RoadMode],
help=(
- "road drawing mode: " + ", ".join(mode.value for mode in RoadMode)
+ "road drawing mode (overrides scheme): "
+ + ", ".join(mode.value for mode in RoadMode)
),
)
parser.add_argument(
"--mode",
- default=DrawingMode.NORMAL,
+ default=None,
metavar="",
choices=[mode.value for mode in DrawingMode],
- help="map drawing mode: "
+ help="map drawing mode (overrides scheme): "
+ ", ".join(mode.value for mode in DrawingMode),
)
parser.add_argument(
@@ -183,10 +184,10 @@ def add_map_arguments(parser: argparse.ArgumentParser) -> None:
parser.add_argument(
"--labels",
dest="label_mode",
- default=LabelMode.MAIN,
+ default=None,
metavar="",
choices=[mode.value for mode in LabelMode],
- help="label drawing mode: "
+ help="label drawing mode (overrides scheme): "
+ ", ".join(mode.value for mode in LabelMode),
)
parser.add_argument(
@@ -222,18 +223,18 @@ def add_map_arguments(parser: argparse.ArgumentParser) -> None:
)
parser.add_argument(
"--roofs",
- help="draw building roofs",
+ help="draw building roofs (overrides scheme)",
action=argparse.BooleanOptionalAction,
- default=True,
+ default=None,
)
parser.add_argument(
"--building-colors",
help=(
"paint walls (if isometric mode is enabled) and roofs with "
- "specified colors"
+ "specified colors (overrides scheme)"
),
action=argparse.BooleanOptionalAction,
- default=False,
+ default=None,
)
parser.add_argument(
"--show-overlapped",
@@ -249,9 +250,12 @@ def add_map_arguments(parser: argparse.ArgumentParser) -> None:
)
parser.add_argument(
"--background",
- help="enable or disable the background (e.g., to use it as a layer)",
+ help=(
+ "enable or disable the background, e.g., to use it as a layer "
+ "(overrides scheme)"
+ ),
action=argparse.BooleanOptionalAction,
- default=True,
+ default=None,
)
parser.add_argument(
"--crop",
diff --git a/pyproject.toml b/pyproject.toml
index b160027..5373adf 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -71,7 +71,7 @@ include = ["map_machine*"]
[tool.setuptools.package-data]
map_machine = [
"icons/config.json",
- "scheme/default.yml",
+ "scheme/*.yml",
]
[tool.setuptools.dynamic]
diff --git a/tests/__init__.py b/tests/__init__.py
index 8ace68a..ce3250d 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -10,4 +10,5 @@
workspace: Workspace = Workspace(Path("temp"))
+
SCHEME: Scheme = Scheme.from_file(workspace.DEFAULT_SCHEME_PATH)
diff --git a/tests/test_road.py b/tests/test_road.py
index 5f23cad..c02db45 100644
--- a/tests/test_road.py
+++ b/tests/test_road.py
@@ -145,7 +145,7 @@ def test_road_bridge_color() -> None:
border_color: Color = road.get_border_color()
assert border_color is not None
# Bridge should use scheme bridge_color.
- assert border_color == SCHEME.get_color("bridge_color")
+ assert border_color == SCHEME.get_color("$bridge_color")
def test_road_ford_color() -> None:
@@ -154,7 +154,7 @@ def test_road_ford_color() -> None:
border_color: Color = road.get_border_color()
assert border_color is not None
# Ford should use scheme ford_color.
- assert border_color == SCHEME.get_color("ford_color")
+ assert border_color == SCHEME.get_color("$ford_color")
def test_road_embankment_color() -> None:
@@ -163,7 +163,7 @@ def test_road_embankment_color() -> None:
border_color: Color = road.get_border_color()
assert border_color is not None
# Embankment should use scheme embankment_color.
- assert border_color == SCHEME.get_color("embankment_color")
+ assert border_color == SCHEME.get_color("$embankment_color")
def test_road_style_border() -> None:
diff --git a/tests/test_scheme.py b/tests/test_scheme.py
index 257f705..ef26d65 100644
--- a/tests/test_scheme.py
+++ b/tests/test_scheme.py
@@ -9,8 +9,8 @@ def test_verification_right() -> None:
"""Test verification process of tags in scheme."""
tags: dict[str, Any] = {
- "colors": {"default": "#444444"},
- "node_icons": [{"tags": [{"tags": {"a": "b"}}]}],
+ "variables": {"default": "#444444"},
+ "nodes": [{"tags": [{"tags": {"a": "b"}}]}],
}
assert Scheme(tags).node_matchers[0].verify() is True
@@ -19,7 +19,7 @@ def test_verification_wrong() -> None:
"""Tag value should be string, not integer."""
tags: dict[str, Any] = {
- "colors": {"default": "#444444"},
- "node_icons": [{"tags": [{"tags": {"a": 0}}]}],
+ "variables": {"default": "#444444"},
+ "nodes": [{"tags": [{"tags": {"a": 0}}]}],
}
assert Scheme(tags).node_matchers[0].verify() is False
diff --git a/tests/test_style.py b/tests/test_style.py
index d831802..ddfa13e 100644
--- a/tests/test_style.py
+++ b/tests/test_style.py
@@ -20,4 +20,4 @@ def test_style_area() -> None:
"""Test constructing style of landuse=grass."""
style = SCHEME.get_style({"landuse": "grass"})
assert len(style) == 1
- assert style[0].style == {"fill": "#CFE0A8", "stroke": "#BFD098"}
+ assert style[0].style == {"fill": "#C0F0A0", "stroke": "#C0F0A0"}