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 @@ -Ponte TowerPonte TowerRendering: Map MachineRendering: Map MachineData: © OpenStreetMap contributorsData: © OpenStreetMap contributors \ No newline at end of file +Ponte TowerPonte TowerRendering: Map MachineRendering: Map MachineData: © OpenStreetMap contributorsData: © OpenStreetMap contributors \ 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 @@ -111117175533441313161618181515141416161111101088771010661515Rendering: Map MachineRendering: Map MachineData: © OpenStreetMap contributorsData: © OpenStreetMap contributors \ No newline at end of file +111117175533441313161618181515141416161111101088771010661515Rendering: Map MachineRendering: Map MachineData: © OpenStreetMap contributorsData: © OpenStreetMap contributors \ 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 @@ -Rendering: Map MachineRendering: Map MachineData: © OpenStreetMap contributorsData: © OpenStreetMap contributors \ No newline at end of file +Rendering: Map MachineRendering: Map MachineData: © OpenStreetMap contributorsData: © OpenStreetMap contributors \ 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 @@ -Macy'sMacy'sUrban Yoga SpaUrban Yoga SpaMattress FirmMattress FirmAce HardwareAce HardwareAlexandra'sAlexandra'sEscalaEscalaSecurities BuildingSecurities BuildingWestlake CenterWestlake Center16241624TEKsystemsTEKsystemsImpark Lot 106Impark Lot 106USPSUSPSOlive Way & 4th AveOlive Way & 4th Ave19041904170517054154151927192719011901191619163143143103101601160119131913190919091907190719051905Rendering: Map MachineRendering: Map MachineData: © OpenStreetMap contributorsData: © OpenStreetMap contributors \ No newline at end of file +Macy'sMacy'sUrban Yoga SpaUrban Yoga SpaMattress FirmMattress FirmAce HardwareAce HardwareAlexandra'sAlexandra'sEscalaEscalaSecurities BuildingSecurities BuildingWestlake CenterWestlake Center16241624TEKsystemsTEKsystemsImpark Lot 106Impark Lot 106USPSUSPSOlive Way & 4th AveOlive Way & 4th Ave19041904170517054154151927192719011901191619163143143103101601160119131913190919091907190719051905Rendering: Map MachineRendering: Map MachineData: © OpenStreetMap contributorsData: © OpenStreetMap contributors \ 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 @@ -City ToiletteCity Toilette88Rendering: Map MachineRendering: Map MachineData: © OpenStreetMap contributorsData: © OpenStreetMap contributors \ No newline at end of file +City ToiletteCity Toilette88Rendering: Map MachineRendering: Map MachineData: © OpenStreetMap contributorsData: © OpenStreetMap contributors \ 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 @@ -102102BZ II/11BZ II/114411W11W22333312W12W11205205217_1217_12213W13W2062063322207207212212208208170170171171172172169169209209223W3W2W2W1W1W216_1216_1ZeestowZeestowKirschenwegKirschenweg494494Wu-Gel 1;Wu-Ket 2Wu-Gel 1;Wu-Ket 261056105Wu-Or1;Wu-Hen2Wu-Or1;Wu-Hen2BrN-Wu 5;BrH-Wu 6BrN-Wu 5;BrH-Wu 6494;498494;498Wustermark Awn - AwbWustermark Awn - Awb294; 295294; 295294; 295294; 295294;295294;2952a2a1b1b2b2b3a3aRendering: Map MachineRendering: Map MachineData: © OpenStreetMap contributorsData: © OpenStreetMap contributors \ No newline at end of file +102102BZ II/11BZ II/114411W11W22333312W12W11205205217_1217_12213W13W2062063322207207212212208208170170171171172172169169209209223W3W2W2W1W1W216_1216_1ZeestowZeestowKirschenwegKirschenweg494494Wu-Gel 1;Wu-Ket 2Wu-Gel 1;Wu-Ket 261056105Wu-Or1;Wu-Hen2Wu-Or1;Wu-Hen2BrN-Wu 5;BrH-Wu 6BrN-Wu 5;BrH-Wu 6494;498494;498Wustermark Awn - AwbWustermark Awn - Awb294; 295294; 295294; 295294; 295294;295294;2952a2a1b1b2b2b3a3aRendering: Map MachineRendering: Map MachineData: © OpenStreetMap contributorsData: © OpenStreetMap contributors \ 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 @@ -113344112-32-3Cine ChromatixCine ChromatixGoethestr. 3, 10623 BerlinGoethestr. 3, 10623 Berlin1144LOOMLOOM2-32-3SteineckeSteineckeAufgang BAufgang BVDI/VDE-ITVDI/VDE-ITAufgang DAufgang DPrognosPrognosSpirit JogaSpirit Joga338484Hof 1Hof 111118484878787A87ARendering: Map MachineRendering: Map MachineData: © OpenStreetMap contributorsData: © OpenStreetMap contributors \ No newline at end of file +113344112-32-3Cine ChromatixCine ChromatixGoethestr. 3, 10623 BerlinGoethestr. 3, 10623 Berlin1144LOOMLOOM2-32-3SteineckeSteineckeAufgang BAufgang BVDI/VDE-ITVDI/VDE-ITAufgang DAufgang DPrognosPrognosSpirit JogaSpirit Joga338484Hof 1Hof 111118484878787A87ARendering: Map MachineRendering: Map MachineData: © OpenStreetMap contributorsData: © OpenStreetMap contributors \ 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 @@ -МедиацентрМедиацентрMedia CenterMedia CenterМедиацентрМедиацентрЛугЛугЛугЛугСтепьСтепьBirchBirch↕ 1 m↕ 1 mRendering: Map MachineRendering: Map MachineData: © OpenStreetMap contributorsData: © OpenStreetMap contributors \ No newline at end of file +МедиацентрМедиацентрMedia CenterMedia CenterМедиацентрМедиацентрЛугЛугЛугЛугСтепьСтепьBirchBirch↕ 1 m↕ 1 mRendering: Map MachineRendering: Map MachineData: © OpenStreetMap contributorsData: © OpenStreetMap contributors \ 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 @@ -Rendering: Map MachineRendering: Map MachineData: © OpenStreetMap contributorsData: © OpenStreetMap contributors \ No newline at end of file +Rendering: Map MachineRendering: Map MachineData: © OpenStreetMap contributorsData: © OpenStreetMap contributors \ 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"}