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 (default to one-directional);
motorway_link (speed depends on curvature).trunk, primary, secondary, tertiary, unclassified;
trunk_link, primary_link, secondary_link, tertiary_link.residential (in residential area), service (in private property or parking lots);living_street (slow traffic has absolute right-of-way), pedestrian (normally forbidden for motor vehicles), road (classification unknown);traffic_signals, mini_roundabout, stop (stop signs), bus_stop;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)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: