OpenStreetMap (OSM) is a project that aims to create a common database for geodata. The data can be displayed on a map, but that is by far not its only purpose. Within the past years an ecosystem of programs, services and tools has evolved around OSM. This blog post explains the basic concepts of OpenStreetMap and gives an overview how to view, edit, download and process the data.
You can also watch this presentation which covers the same topic.
The Structure of OSM data
node is the most fundamental element. It is basically a point with an ID number, a latitude, a longitude and some tags for description. It can be used for classic point objects like trees, bus stops or street signs. However, is also serves as building block for
way is a ordered list of
nodes that also has an ID number and some tags. Interestingly, a
way does not store the geometry itself but references
nodes which hold the spatial information. It is typically used for describing line shaped features like streets, rivers or railway tracks. However it is also used for storing simple polygons without holes e.g. buildings, lakes, parks.
relation is a collection of
relations. This datatype is typically used for rather complex objects. A common use case are polygons with holes. The respective
relation would hold a closed
way as outer boundary and a number of closed
ways as inner holes.
A bus line is a more advanced example of a
relation. It consists of
ways defining the street segments the bus drives on. It additionally contains
nodes describing the bus stops. Relations are also necessary to describe the turn restriction that cars have on junctions e.g. if it is forbidden to turn right or to go straight.
The previously described datatypes can hold an arbitrary number of tags. These are basically key-value pairs. Both key and value are text strings that describe one property of the object. The OpenStreetMap wiki defines how these tags shall be used.
In contrast to governmental datasets, in OSM there is no central authority that defines the tags. Every user can create new tags. It also happens that there are concurrent tagging stlyes for the same type of object. There may also be different guidelines for different regions.
This means all OSM data must be seen in the respective context. This can be challenging sometimes, but it ensures that the tagging rules stays flexible and dynamic.
Everyone can edit OSM data. All changes will be directly applied to the central database. This is of course raises the questions: “What happens if someone makes wrong edits or even data vandalism?". The answer: In OSM it works similary to wikipedia: There is a large community of volunteers that regualry checks the data and corrects it if required.
There are various tools for editing of OpenStreetMap data. Ranging from very simple tools to advanced power user programs:
The most powerful tool is JOSM. It is a desktop application and can be used for all kinds of editing. However, it takes some time to get into it. It is written in Java and has various plugins for any kind of purpose.
The iD Editor is browser-based and quite feature rich. In contrast to JOSM it is relatively easy to learn. It is the perfect tool if you “quickly” want make a small change to OSM. It also the default editor when you click on “edit” on the official OSM website.
The swiss army knive for mobile mapping is Vespucci. It has a lot of powerful features, but it takes some time to learn it. The app OSMTracker does not edit OSM data directly but only takes notes, photos and audio messages. These can be displayed in JOSM (see screenshot above) and help to do the actual editing.
The app StreetComplete uses a gamification approach for editing. The app directly opens a map with the current location of the user and shows pin points with tasks. These are usually simple questions like: “Is this a one-way road?” or “What are the opening hours of this shop?".
In contrast to commercial map providers, the OpenStreetMap ecosystem offers numerous ways how to display the data.
OpenStreetMap Carto is the default style of the openstreetmap.org website. It shows the most important properties of the OpenStreetMap data like house numbers or street types. But it cannot show all properties. For example many buildings in OSM contain information about the number of floors. However, to my knowledge there is no map displaying the number of floors. Therefore, it is important to acknowledge that every map only displays an arbitrary subset of the data.
There are many different map providers like Mapbox, Thunderforest, Omniscale, CARTO, OpenMapTiles, Stamen or OpenTopoMap. Hence, for each purpose there exists a (base)map style. Many of these basemaps can be included into a web application or a desktop GIS (QGIS, etc. ) for free.
For Android there are two apps that can be used for viewing OSM data: Maps.me and OsmAnd. They are very similar: both can download OSM data for offline usage. It also possible to perform offline route planning. In general, I find Maps.me a bit more user friendly, whereas Osmand has more advanced features like different map styles or displaying GPS-Tracks.
OSM data is licensed under the Open Database License (ODbL). One important property of this license is that mixing OSM data with other data is only allowed if the other data is also openly available. Hence, a commercial map provider may not take OSM data and include it in their own closed database.
If OSM data is used it is required to attribute it. The official OSM website recommends to attribute OSM data with “© OpenStreetMap contributors”. And by the way, obviously all images of this blog post are also “© OpenStreetMap contributors”.