United States/Map style proposal

From OpenStreetMap Wiki
Jump to navigation Jump to search
Logo.png
This page describes a historic artifact in the history of OpenStreetMap. It does not reflect the current situation, but instead documents the historical concepts, issues, or ideas.
About
Initial brainstorming about an Americentric renderer.
Impact on OpenStreetMap
Resulted in OpenStreetMap Americana.
Reason for being historic
Roadmap and current progress are now tracked on GitHub.
Captured time
2021


Flag of United States Part of United States mapping project.

This page documents a nascent idea for a future "American map style" that is intended to be hosted at openstreetmap.us.

Map / Cartographic goals

  • "[T]he last thing we need is a map that invites a direct comparison to Google Maps, because we can’t win that comparison. A road-centric, road atlas themed style would still make sense as part of a gallery or style switcher, to demonstrate the versatility of our data." -Minh

Right now, this is an unstructured wish list that hasn't been vetted by anyone:

  • Achieve a cartographic style that is consistent with North American maps of North America.
    • Display highway shields (example)
    • Parks, protected areas, and indigenous land boundaries (as borders), possibly with fallback to fills where there's no land cover
      • Differentiate protected areas by access
    • US-style street/road cartography
      • Increased emphasis on physical distinctions, e.g. paved vs unpaved style differences (possibly coloration, possibly dashed). Four levels:
        • Freeways / Super-twos
        • Paved
        • Unpaved, but graded
        • Unpaved and ungraded (two-track roads)
      • Reduced color distinction between classes of roads
      • Routes kept together at a particular zoom level
      • Labels offset from roads rather than squeezed between the casing
    • Muted color schemes for land cover
    • Pattern fills for "some" features (sand, scree, bare rock)
    • Better contrast (?)
    • Beach/shoal
  • Vector tiles
  • Maintain support for tagging that is in wide use
  • Promote mapper engagement
    • Wide rendering of POIs / icons
    • Micromapping at high zoom levels
    • Special icons for capitals of administrative divisions
  • Demonstrate integration of wikidata
    • Brand logos for businesses
  • Render labels of bus stops with route_ref=* (list of routes that stop there) instead of, or in addition to, name=*

Unresolved cartographic decisions

  • Should parks & protected areas be rendered as a fill or as a border?
    • Possible solution: render fill on the bottom, land cover in the middle, border on the top. This achieves the best of both worlds and still shows a fill when there's no land cover.
  • Should forested areas (natural=wood / landuse=forest) even be rendered at all?
  • Icon set for POIs
    • openstreetmap-carto
    • Maki
    • Temaki
    • FontAwesome
  • Holistic style details

Tech Stack

A vector tile technology stack is desired because it allows:

  • Continuous zoom, pan, tilt, and rotate
  • Styles are applied in the viewer's web browser, which allows for viewer-specific customizations, such as:
    • Label language
    • Turn on/off layers
    • Accessibility (e.g. color-blind friendly color schemes)
  • Programmatic rendering hooks in javascript, which allows for programmatic customizations.
  • A method for rendering highway shields (under development)

A vector-based stack includes the following elements:

  • A tile server, which serves PBF-format vector tiles corresponding to tile contents at a particular zoom and location.
  • A style, which determines how the vector tiles are displayed in the user's web browser.
  • A renderer, which applies the style to the vector tile and produces the map.
  • Customization elements which add client-side logic that's too complex for the renderer to handle natively.

The openstreetmap-america project has chosen the following technology stack:

  • Tile server: OpenMapTiles. OpenMapTiles is a data schema and supporting imposm3, SQL, and scripts which build a tile file in the MapBox Vector Tiles (MVT) format as well as a postgres / PostGIS capable of running postserve.
    • Initially the schema will be a default build of OpenMapTiles hosted by MapTiler.
    • Additional custom layers will need to be developed to add elements not present in the out-of-the-box OpenMapTiles build.
    • For resource efficiency, a customized fork of OpenMapTiles will eventually be needed in order to filter the data down to what is actually used in the project.
    • A deployed capability will consist of two pieces:
      • A tiles.mbtiles which is periodically generated for the planet and re-deployed, for lower-level zooms, and served with tileserver-gl.
      • A postgres database which is minutely updated for higher-level zooms, and served with postserve.
    • We will attempt to contribute upstream to OpenMapTiles to the extent that our customizations are of global interest to the OpenMapTiles community.
  • Renderer: maplibre-gl-js
  • Style: The style is generated in javascript rather than external JSON files. This allows for programmatic access to the style and for refactoring copy/paste code.
  • Customization: Javascript code to customize features not possible in native maplibre-gl-js. This is expected to be used for highway shields.

Blockers

Prototypes

Discussions

This idea has been discussed in the following fora:

Cartographic References