United States/Map style proposal
Jump to navigation
Jump to search
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
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
- Increased emphasis on physical distinctions, e.g. paved vs unpaved style differences (possibly coloration, possibly dashed). Four levels:
- 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
- Pictorial highway shields in CartoCSS will need either a patch to, fork of, or alternative infrastructure to Carto (not osm-carto), because it currently doesn't have GroupSymbolizer support.
- Carto issue to add GroupSymbolizer (What is a GroupSymbolizer?)
- https://github.com/gravitystorm/openstreetmap-carto/issues/508
Prototypes
- Kevin Kenney's OSM shields
- Highway shields prototype (source)
- MapZen/NetZen prototype with international shields
- OpenStreetMap Americana prototype (github repo)
Discussions
This idea has been discussed in the following fora:
- April 25, 2021 discussion on OSM US Slack
- Channel #american-map-style on OSM US Slack.