Everything about OpenStreetMap.
Keys can have suffixes, e.g lanes:bus:forward=1
; multiple values can be delimited by semicolon.
Metadata: author, timestamp, etc.
OSM Cheat Sheet: tags and keyboard shortcuts.
Names:
name
, the primary tag used for common names;ref
, reference numbers or codes.alt_name
, less common names.highway
is the main tag (confusingly) used to classify any kind of road, street or path:
motorway
(one-directional by default);
motorway_link
(speed depends on curvature).trunk
(high capacity road without limited access), primary
, secondary
, tertiary
;
trunk_link
, primary_link
, secondary_link
, tertiary_link
.residential
(in residential area), unclassified
(minor public roads, non-residential);living_street
(slow traffic has absolute right-of-way), service
(in private property or parking lots), pedestrian
(normally forbidden for motor vehicles), road
(classification unknown);traffic_signals
, stop
(stop signs), bus_stop
, mini_roundabout
;area=yes
or type=multipolygon
.Other tags that can classify ways as part of a road network:
lanes
(lanes:forward
, lanes:backward
) indicate number of lanes (in a given direction);turn:lanes
(left, through, right) and parking:lane
indicate turning lanes and parking lanes;bridge
, tunnel
for bridges and tunnels;junction=roundabout
, a single lane roundabout (one-directional);Restrictions:
access
additionally describes legal access to an entity via all or particular forms of transport.maxspeed
, maximum legal speed limit (default in kilometers per hour).oneway
(yes, no, -1).hgv
, heavy goods vehicle.Spatial relation:
is_in
;place
(continent, country, state, region, county, city, town, village, hamlet, suburb, island);boundary=administrative
and admin_level=8
;barrier
, a physical structure that blocks or impedes movement (toll_booth, etc).
Turn restriction: tag type=restriction
restriction
no_right_turn
, no_left_turn
, no_u_turn
, no_straight_on
;only_right_turn
, only_left_turn
, only_straight_on
;no_entry
, no_exit
;except
, exception by vehicle type.day_on
, day_off
, hour_on
, hour_off
.from
, to
, via
.Format consideration: compression ratio, processing speed.
.osm
, an XML format..pbf
, Protocol buffer Binary Format, the primary binary format that uses Google Protocol Buffers as low-level storage.
(<50% the size of XML format).o5m
, a flat binary format.
Nobody uses it.Protocol buffers is a language-neutral, platform-neutral extensible mechanism for serializing structured data. Delta coding and variable-byte coding are applied throughout.
Characteristics of OSM PBF:
For better compression of OSM data, Conveyal invented a binary format called Vanilla Extract eXchange format (.vex).
Converting map data between OSM and external formats:
iD is the default online map editor for openstreetmap.org.
The OSM Editing API (API v0.6) is a RESTful HTTP API accessible via http://api.openstreetmap.org/.
Overpass API is a read-only API for querying an OpenStreetMap database and extracting features over the web. Overpass Turbo is a Web frontend of Overpass API.
OSM turn restrictions:
osmosis
is a command line Java application for processing OSM data, which can extract data inside a bounding box or polygon.
osmconvert
can convert and process OSM files faster than osmosis but has less functionality; it has a few special functions.
osmium
also has a command line tool to convert file format, apply changeset, and extract historical data.
JOSM, Java OpenStreetMap, is the offline editor of OSM data, with many plugins. Features: validator feature can check and fix invalid data. JOSM plugins for fixing missing turn restrictions: ScoutSigns, ImproveOsm.
KeepRight, data consistency checks (quality assurance) for OSM.
PostgreSQL Loader: osm2pgsql
; osm2pgrouting
, imports OSM topology to PostgreSQL database; other java programs.
Programming Frameworks for accessing, processing, map rendering (static, interactive), geocoding, and navigation with OpenStreetMap data. Debian GIS Blend meta-package for OpenStreetMap already include many of these tools and libraries.
Accessing:
osm-common
(Java): accessing, processing, geocoding; supports Overpass.osmapi
(Python): Python wrapper for the OpenStreetMap API.osmaR
(R): access OpenStreetMap data from file or API, and convert to other classes.Data processing / parsing:
pbf2osm
, osmpbf
; LibOsm
(SQLlite); osmium
;Gosmparse
, osmpbf
;osmosis
, osm4j
, BasicOSMParser
, OSMemory
;imposm.parser
, osmread
;Navigation:
Geocoding: Gisgraphy (Java)
Map rendering: