[JT] Jochen Topf's Blog
Wed 2015-09-02 00:20

Osmium is growing up

It has been a long time since I wrote something about Osmium in this blog. Considering that I have worked on Osmium and related software almost every day for many months now, this is a huge omission. I want to make up for this a little bit with this posting.

Osmium has grown up without me really noticing. A year ago it was still a little project, by now it has grown considerably and become a stable piece of software. Today OSRM uses it, Osm2pgsql is in the process of switching from its own OSM file reading code to using Libosmium (the Nominatim-version of Osm2pgsql already uses it on the OSMF servers), a lot of the OSM Inspector is powered by Osmium-based tools behind the scenes, Mapbox (who is paying for my work on Osmium, thanks!) and others use it internally. The Osmium command line tool brings some of the functionality of the library to the command line. And slowly but surely I am getting more questions and bug reports showing that people are actually using it.

There are two bindings for higher level languages: PyOsmium for Python 2 and 3 and node-osmium for NodeJS (replacing the old osmjs). You can not do everything in those languages that you can do with libosmium from C++ and they are quite a bit slower than using C++ code directly, but — depending on your use case — they can be useful tools. Both bindings haven’t been used much and must still be considered somewhat experimental.

The support for Windows has improved much over the last half a year or so. Nearly all functionality of the library is available on Linux, OSX, and Windows. And we check this with automated tests using Travis CI and Appveyor. I am not aware of anybody actually using the Windows version, but I could imagine that some people are using it through OSRM or osm2pgsql or so.

For several months now we have been doing more or less regular releases of the C++ library (libosmium), the Osmium command line tool (osmium-tool) and the Python and NodeJS bindings.

Bas Couwenberg of the Debian GIS Project has been busy publishing Debian packages for libosmium, osmium-tool, pyosmium and osmcoastline. They are available for unstable/testing and in jessie-backports and they are making their way into the upcoming Ubuntu 15.10, too. Note that the packages in Debian for the new Osmium are called libosmium2-dev, libosmium2-doc and osmium-tool. The old, now deprecated Osmium version is still available as libosmium-dev and osmjs. And Tom Hughes has contributed Fedora packages for libosmium. Node-osmium is available through npm.

One big issue is still documentation. The Osmium library can do quite a lot of things which aren’t documented properly. The reference documentation isn’t that bad, but it is hard to get the big picture, see how all the building blocks fit together. There is the Osmium Concepts Manual and the Osmium C++ Library Manual, but they are rather incomplete. Documentation and more example code is something I need to focus on in the coming months. The situation is better for the command line tool which comes with complete manual pages.

And I still have a ton of plans and ideas how to improve Osmium and related tools, but I’ll leave that for future blog posts. Maybe I will even write about what Osmium can actually do for you. For now you can find out more on osmcode.org.

Tags: openstreetmap · osmium