Documentation

Frequently Asked Questions

...and their answers

Sections: Building · Features · Upgrading · Miscellaneous

▶ Building

Which operating systems are supported?

Libosmium and other related software on this site is developed on Linux and works well there. With tiny exceptions everything also works on macOS out of the box. Most software also works on Windows. A CMake configuration which should work on all operating systems is supplied for all projects.

I can't find out how to build the Osmium Library?

The C++ Osmium Library is a header-only library. You dont' have to build it. Just install the header files and include them as needed from your code.

Which build system is used?

We are using CMake.

▶ Features

Can Osmium work with OSM history files? Change files? Changesets?

Yes. They are all supported. See the manual for details.

Can Osmium do Coordinate Transformations?

Yes. Osmium has builtin support for the OSM native format WGS84 (EPSG 4326) and Web Mercator (EPSG 3857). It can also use the PROJ.4 library to transform to about any coordinate reference system out there.

▶ Upgrading

What is the difference between "old" and "new" Osmium?

The "old" Osmium was developed from 2010 to 2013. With the experience gained and with the new possibilities of C++11 we started on the "new" Osmium in 2013, a more or less complete rewrite of the C++ Osmium Library. Today the "new" Osmium Library has all the functionality of the old one plus a lot more.

The old Osmium is still available from github.com/joto/osmium, but it is in maintainance mode, ie no new functionality will be added.

Unless you don't have a C++11 capable compiler, we recommend using the "new" osmium available from this web site.

Where is "osmjs"?

The "old" Osmium had a command line program called "osmjs" that allowed you to use the functionality of the Osmium C++ library from Javascript. This has been superseeded by the Node Osmium NodeJS module. The NodeJS module allows you to use thousands of existing NodeJS modules out there in your program making this approach much more flexible.

▶ Miscellaneous

Wait, I am confused! Is Osmium a library or a program or what?

The core is a C++ header-only library called "Osmium Library" or "libosmium", but sometimes just called "Osmium". Built on top of that are many programs with their own names, one is the command line multipurpose "Osmium Tool" or short "Osmium". In addition there are bindings of the C++ library for Javascript ("Node Osmium") and Python ("PyOsmium").

The old version of the Osmium Library was also just called "Osmium".

I don't want to program in C++. Can I use Osmium from other languages?

Yes. There is the PyOsmium Python module (written by Sarah Hoffmann). There is also a now unsupported Node Osmium NodeJS module for Javascript developers (written by Dane Springmeyer and Jochen Topf) and Not all functionality available from C++ is available through those modules and you'll take a performance hit, but they are much easier to use for the average programmer.

If you are interested in making Osmium available in other languages, come talk to us.