RSS Feed icon

Blog

Download Server News

4.05.2018 | Frederik Ramm

As mentioned two months ago, we have made some changes to our download server at download.geofabrik.de. The publicly available files now don’t contain user or changeset information any longer (see below for details). You can still get everything that was there before, but files that do contain user information were moved to a server that requires you to have an OSM login.

The public server continues to be download.geofabrik.de, and the URLs and paths have been unchanged. The new server that requires a login is called osm-internal.download.geofabrik.de, and while it looks largely the same as the public server, the files it offers will have a name component of -internal in order not to confuse them with the public files.

Here’s a table that explains which files to get where:

public server internal server
.osm.pbf files for all regions (original OSM data) yes, without user data yes, with user data
.osc.gz files (diff updates) yes, without user data yes, with user data
.osh.pbf files for all regions (original OSM data with full history) no yes, with user data
.osm.bz2 files (old XML OSM data format) yes, without user data no
.shp.zip files for all regions (ESRI shape files) yes no

Update: backward compatibility with Osmosis and older versions of Libosmium

The change was originally made on 03 May. Unfortunately osmosis and older versions of osmium, and all programs depending on them (e.g. osm2pgsql < 0.96.0) don’t work with PBF files lacking metadata fields. They fail to read PBF files which don’t have any username, user and changeset field set. To work around that, starting 05 May, we’re now writing empty strings to all user fields and zeros to all user and uid fields.

Update: scripted access to extracts and diffs with full metadata

OSM extracs and diffs with full metadata are still available but you have to log in with your OSM account.
For security reasons, it is not enough to pick the cookie out of the developer console of your web browser. The cookie will become invalid after 48 hours and the server will redirect you to authorization form of openstreetmap.org if you send that cookie after it has expired. That’s why you have to retrieve a new cookie every 48 hours or any other time the server forces you to do so.

We have published a client program written in Python (read the documentation) automating the cookie retrieval. The repository containing the client also contains the server software if you are curious or want to use it on your own server providing sensitive data.

This blog post may be updated as things develop.

On May 1st this year, we’ll make the following changes to the standard download.geofabrik.de server:

  • all .osm.bz2, .osm.pbf, and .osc.gz files (regional extracts and diffs) will be without user information (no username, uid and changeset fields), and might* have their timestamp fields diluted
  • .osh.pbf files (full history extracts) will cease to be available

The general functioning of the server and all URLs will remain unchanged. We believe that the majority of users of our download server, who use the extracts to populate rendering, routing, or geocoding engines, will not be affected by the changes.

In case you want to double-check if your software supports the files with missing fields, here are sample files for the UK county of Rutland with user data removed: osm.pbf, osm.bz2, osc.gz

If you need more test data, you can generate these files on your own using the latest (unreleased) Osmium Tool and the latest (unreleased) Libosmium library. The following Osmium Tool command removes all metadata except version and timestamp fields from a file:

osmium cat -o without-user-data.osm.pbf --output-format pbf,add_metadata=version+timestamp input.osm.pbf
(and similar for .osm.bz2 or .osc.gz)

At the same time, we will introduce a new service, osm-internal.download.geofabrik.de, which will be like the “old” download service, offering full history files, regional extracts, and diffs with full user information and un-diluted time stamps. This service will be 100% free of charge like the main download server, but will require an OAuth login with the openstreetmap.org web site and might* also require a click-through user agreement in order to safeguard personal data.

*) Some details are still being worked out.

Relaunch of the Public Transport Views

24.10.2017 | Michael Reichert

We recently rewrote the Public Transport views of our OSM Inspector. The old views had been used rarely and were of limited use, so we went for a full rewrite. While the old views aimed to give an overview on both the infrastructure and the network, the new views are focussed on the routes and stops.

The public transport schema used today was proposed back in 2010/2011 but it was adopted rather slowly. Also, many mappers made lots of mistakes when trying to use the schema because the documentation on the wiki was confusing. To clearly distinguish public transport mapping that follows this schema from old-style public transport mapping, new schema is now called “public transport v2″ – even though there really wasn’t ever a version 1.

The new views of OSM Inspector try to support good mapping according to the “public transport v2″ scheme, and act as a validator.

Here’s how you can use the two new views to do some public transport mapping:

The Stops View

The Stops view shows stop positions and platforms (multipolygons are not supported yet). Go to an area you are familiar with and check if there are missing bus stops. Use this view on zoom levels 10 and 11 to spot (rural) areas where no bus stops are mapped at all. Just take your car or bicycle and visit them!

screenshot of view "Public Transport - Stops" in Thüringen, Germany

Platforms are rendered in blue, stop positions in green. Bus stops with highway=bus_stop but without a public_transport=* tag are rendered in orange. They are not errors if they are the only object that represent a bus stop (per direction).

The Routes View

The Routes view shows route relations which claim to be v2 route relations (they have the tag public_transport:version=2). The view shows whether a route is valid (green) or not (black) and highlights objects which are either the reason of invalidity or which are located next to the invalidity (orange and purple).

screenshot of view "Public Transport - Routes" in Wuppertal-Elberfeld, Germany

When is a route valid?

The tagging schema defines minimum requirements a route must comply with:

  • The order of the members of the route is important. The list of members is not an unordered collection.
  • One route relation represents only one variant of a line. Therefore, you need at least two route relations for most lines, one for the forward direction and one for the backward direction.
  • The first member is the first stop of the route (where it starts). It either uses the role stop or stop_entry_only.
  • The second member is the second stop of the route and so on.
  • If a stop is mapped by both a stop position and a platform, add both to the relation but the stop first and immediately followed by the platform. Platforms use the roles platform, platform_entry_only or platform_exit_only.
  • The list of the ways the vehicle uses is at the end of the relation member list (i.e. after the last stop). These ways use an empty role.

(Even though many mappers seem to think so, you do not have to map both the stop position and the platform. One is enough. Especially for vehicles where the platform and the vehicle are short, adding stop positions is overkill. But if a stop has both, both have to be added to the route relation.)

A correct route relation of a bus line would look like this (roles are given in parentheses):


- stop position of station 1 (stop)
- platform object of station 1 (platform)
- stop position of station 2 (stop)
- platform object of station 2 (platform)
- ...
- stop position of station n (stop)
- platform of station n (platform)
- first way with highway=* ()
- second way with highway=* ()
- ...
- last way with highway=* ()

That’s how it would look like in JOSM’s relation editor:

screenshot relation editor

As said above, mapping both stops and platforms is not mandatory. One of the two is enough. (If you know the location of the platform and/or the bus stop sign, add it. Otherwise the stop position is a good replacement.) Therefore, the route could also look like this:

screenshot relation editor showing a route relation with less members

What does OSMI currently check?

To get quickly a working validator, we decided not to implement all checks. Here is the list of implemented validation tests:

  • A route must have stops or platforms.
  • A route must have members which are neither stops nor platforms.
  • Member nodes must have one of the following roles: stop, stop_entry_only, stop_exit_only, platform, platform_entry_only, platform_exit_only.
  • Member ways must have one of the following roles: stop, stop_entry_only, stop_exit_only, platform, platform_entry_only, platform_exit_only or an empty role.
  • Member relations must have one of the following roles: platform, platform_entry_only, platform_exit_only.
  • The member list must begin with the list of stops and platforms.
  • There must not be any member with a non-empty role after the first member with an empty role.
  • Train, tram and subway routes must use railway tracks. Buses and trolleybuses must use roads. Trolleybuses need trolley_wire=yes (or trolley_wire:forward/backward=yes). Roads/tracks under construction trigger errors.
  • The route=* tag of a route relation must have one of the following values: train, tram, subway, bus, trolleybus, ferry, aerialway.

There are some ideas for more tests but they haven’t been implemented yet:

  • Correct order of stops and platforms is not checked.
  • It is not checked if all stop positions of a route are located on a member way with an empty role.
  • There is no test which checks if platforms are located next to the route/stop position.
  • Access tags of member ways are not checked.
  • If a platform is followed by another platform, users who follow the schema exactly will read two stations. If both platforms share some nodes, it is very likely an error.

osmi_pubtrans3 is free software, and patches are welcome.

Tagging and Routing View Got Additional Layers

4.09.2017 | Michael Reichert

The Tagging view of our OpenStreetMap Inspector tool got two new checks (represented as layers) a few days ago. Both look for oddities in OSM data.

Hidden Non-Operational Tagging

screen shot of OSM Inspector showing a toilet with disused=yes

The freedom of OpenStreetMap to tag what you want can lead to tagging errors. One common but maybe dangerous error is the usage of tags like disused=yes, abandoned=yes, construction=yes and proposed=yes on objects.

For example, if a mapper wants to map a road which is under construction, they usually tag highway=construction + construction=secondary/tertiary/<whatever>. This is a good way of tagging because data consumers who look for roads and who are not interested in roads under construction can just look at the value of the highway=* key and check if its value is in a defined set of “good” values (primary, secondary, tertiary, …).

Unfortunately, some mappers tend(ed) to use highway=secondary/tertiary/<whatever> + construction=yes in this case. This tagging is misleading. Data users have to check if an object is marked as being under construction. Because a minor key [1] such as disused=* inverts another tag, we call this tagging style “misleading”. OSM should be easy to use and that’s why the tagging of these objects should be improved.

Currently, the processing software only checks for misleading tagging if there is at least one of the following “main” keys and inverting keys:

Main keys are:

  • highway
  • railway
  • amenity

If the value of a main key is disused, abandoned, razed, dismantled, proposed or construction, it is ignored, further checks are skipped, and the object is not reported as errorenous.

Inverting keys are:

  • disused=*
  • abandoned=*
  • razed=*
  • dismantled=*
  • construction=*
  • proposed=*

Inverting keys with a value of no are ignored because they do not invert the meaning of the main key.

As a side effect, objects with mixed tagging like highway=primary + construction=primary are reported as errors, too. They occur if a mapper changed the object from highway=construction to highway=primary but forgot to remove construction=primary. It is an indicator that these objects might be worth checking.

Name/Description without Important Tags

screen shot of OSM Inspector showing a node which onyl has a name tag

It occurs rather often that newbies add objects to OSM without proper tags. They manage to add a name, a description and/or a website but that’s it. This is caused by both a lack of experience and a suboptimal user interface of the editor being used (and in rare cases a lack of suitable tags). These objects are more or less hidden from any data consumer because nobody wants to parse the value of a name or description tag to guess what it represents.

The processing software distinguishes between non-feature keys and feature keys.

A key is considered a non-feature key if it begins with one of the following strings:

  • name
  • description
  • comment
  • website
  • contact:website

The following keys are considered being feature keys, i.e. they describe what the object represents:

building, landuse, highway, railway, amenity, shop, natural, waterway, power, barrier, leisure, man_made, tourism, boundary, public_transport, sport, emergency, historic, route, aeroway, place, craft, entrance, playground, aerialway, healthcare, military, building:part, training, traffic_sign, xmas:feature, seamark:type, waterway:sign, university, pipeline, club, golf, junction, historic

The office tag is only a feature tag if it has a value other than yes.

Keys are considered being feature keys if the begin with one of the following strings:

historic, razed, demolished, abandoned, disused, construction, proposed, temporary, TMC

All other keys are considered being neutral and do not influence the evaluation.

If an object has a non-feature key but no feature key it is flagged as an error.

How To Repair?

If you find such an object, please check the following:

  • If the object has a description tag and the description contains either non-factual information “the best bakery in A-Town, founded by James Smith in 1786″, it might be some kind of search engine optimization. Remove all non-factual information (it might be justified to delete the description completely).
  • If the object has a website tag, check if the website still exists. We don’t need closed shops.
  • Check if the object is located properly. If it is obviously wrong (e.g. center of the road) or on top of an existing object, it might have been be uploaded automatically.
  • Look for a proper tagging of the object. Add these tags. There are various sources of information:
  • Is the user a newbie and joined OSM recently? If yes, write a friendly welcome message. If it is more than a month ago and they is not active any more, use your time for more useful tasks.

If you help fixing these errors, you will have to do a lot of research for tags. Consider this a valuable experience – you will learn lots of tags you did not know and you will learn what could be mapped or is mapped at OSM.

Changes To The Routing View

Due to changes in OSRM we had to set up our own process which looks for routing errors. We now use Open Source Routing Machine’s “small components” extractor but with the default car profile. Don’t be frightened. There are lots of new errors because our validation is now strict and flags everything which is unreachable using the default car profile most OSRM users probably use.

screen shot of OSMI showing islands and sinks & sources layer

We added a new layer, called “sinks and sources”. A similar layer existed a few years ago. It will show all one-way roads (using the default OSRM car profile) which lead into nowhere or start nowhere, i.e. are not connected to the network at both ends. See the OSM wiki for
further instructions.

[1] The OSM data model itself does not differentiate between major and minor, more or less important keys. But the usage of tags which has established since 2004 does and there are tags like amenity=shelter which are further distinguished by using shelter_type=*.

Changes To The OpenStreetMap Inspector

30.06.2017 | Michael Reichert

Places View of OpenStreetMap Inspector

We have rolled out some changes to the OpenStreetMap Inspector in the last days. They affect the views Geometry, Tagging, Places and Highways.

From now on the data which powers the rendering of these views is generated by a tool called osmi_simpleviews. We released its code on Github under GPLv3. It’s a C++ program which uses the libosmium library by Jochen Topf to read the planet and work with the objects in it, and GDAL to write the errors to a Spatialite database (other formats are also possible, but not properly tested). It generates one Spatialite file per view. It’s open source and you can run it on your own.

The Spatialite database is copied from a processing server at Hetzner’s data centre to the machine where all our tools available at tools.geofabrik.de are hosted on. It uses the Spatialite file as a data source for the WMS service (Mapserver).

While the main goal was to reimplement things in C++ (instead of Perl and C previously), we changed some things which we want to explain here. Have a look at the OpenStreetMap Wiki where the full documentation of the views is located.

Geometry

This view (documentation) shows errors and potential errors regarding the geometry of ways.

  • Ways with long segments displays ways which have very long segments between two nodes. The threshold for what counts as “very long” as been changed from 0.3 degrees (previously) to 20 km.
  • Duplicate node in way used to only flag ways that contained the same node twice in sequence, and has been extended to also flag ways that contain two different nodes which share the same location.
  • We increased the minimum zoom level of some layers to speed up rendering on low zoom levels.

Tagging

Tagging errors and strange tags are shown by the Tagging view (documentation).

  • The layer Misspelled key has been removed. Some of the functionality is provided by the “Similar” tab in Taginfo. Just search for a well known key on Taginfo and open the Similar tab of this key. It looks like this for the key building.
  • The layer Tagged with FIXME was modified. It shows every node and way which has fixme=* and todo=* or which has any key with the value fixme. This means that fixme=continue, fiXme=something, or highway=FixMe are shown. Values which contain fixme preceeded or followed by different characters are not shown any more to reduce the number of false positives.

Please keep in mind that the Tagging view is no invitation to do mechanical edits like changing all occurences of a wrong-spelled tag using the search&replace feature of your favourite editor. Please review all the objects manually, look into their history and check why they were written wrong. Maybe you will uncover a much larger problem which should be fixed at its roots instead by just cutting of the parts above ground. Read OpenStreetMap’s guideline for mechanical edits.

Places

Places are a core feature of many maps and good data of places in OSM is important. But not only names are important, population numbers are a rather objective method to classify places of equal category and help map renderers to prefer the larger of two neighbouring cities.

The Places view (documentation) is a special-topic map showing places and only places above or without a base map. It highlights missing names and anomalies in the data.

  • This view now also supports place=neighbourhood and place=hamlet. They are not flagged as “unknown value” any more. We added two new layers for them.
  • The layer population number format was merged into population not a number as part of the rewrite. Every object is flagged if the value is not a plain number. The number must be an integer equal to or larger than 0 and must not be prefixed or followed by any characters – not even spaces – to make it easier for data users to parse the number.
  • Unusual population size was extended by some more checks.
  • We increased the minimum zoom level of some layers to speed up rendering on low zoom levels.

Highways

How should you reach a place if there is no way (highway=*)? Some checks are done by our Highways view (documentation). We did not change very much with this view:

  • The layer deprecated was removed. It used to show highway=unsurfaced and highway=minor, two very old and deprecated tags which completely disappeared from OSM some time ago, i.e. the layer was empty.

Open Source OSM Inspector

From now the processing software of almost all views are open source. You can search for the errors on your own, e.g. if you need more frequent updates.

  • osmi_simple_views is the program which powers the views Geometry, Tagging, Places and Highways.
  • osmcoastline by Jochen Topf powers the Coastlines View.
  • area_stats_and_report by Jochen Topf powers the Areas Views which shows broken polygons and multipolygon relations.
  • osmi-addresses by Lukas Toggenburger powers the Addresses View.
  • osmi-water by Nathanael Lang powers the Water View.