All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
- Add area matching to
tags-filtercommand can now match "areas" using the "a/" prefix. Areas in this sense are all closed ways with 4 or more nodes and all relations with tag "type=multipolygon" or "type=boundary".
--geometry-typesoption to the
exportcommand allowing you to restrict the geometry types written out.
1.8.0 - 2018-03-31
- Support for negative IDs in export command.
- Lots of tests with missing metadata (Thanks to Michael Reichert).
- Add metadata options to the extended output of fileinfo command (Thanks to Michael Reichert).
- Add progress bars to many commands.
--redactoption to the
apply-changescommand to redact (patch) history files. The change files can contain any version of any object which will replace that version of that object from the input. This allows changing the history! This mode is for special use only, for instance to remove copyrighted or private data.
- Needs libosmium 2.14.0.
- Update included
catch.hppto version 1.12.1.
- Removed Makefile. Undocumented and possibly confusing way of building. As documented, use CMake directly instead.
- Allow bbox setting with any two opposing corners, instead of insisting on bottom-left and top-right corner. This affects the changeset-filter and extract commands.
- Allow GeoJSON input file to have a FeatureCollection instead of a Feature. Only the first feature of this collection is used.
- Bug in the derive-changes command if it is used without
--keep-details. A deletion of any type of object was written as a deletion of a node. (Thanks to Michael Reichert.)
- Fix assertion failure in diff command.
- Throw exception instead of using assert to catch broken rings.
- Disable progress bar if STDOUT isn't a tty.
- Show error when there are no extracts specified in extract command.
- Improve STDIN handling in extract command. STDIN can now be used with the
simplestrategy, with other strategies it will give you a nice error message.
- Lots of code cleanups based on
clang-tidywarnings making the code more robust.
- Only install manpage directories, not CMake files. (Thanks Bas Couwenberg.)
1.7.1 - 2017-08-25
- Extended some man pages.
- Allow any OSM file header option with
fileinfo -g. There is no final list of possible options, so any option should be allowed.
- Needs libosmium 2.13.1.
- Specifying extracts in config files was broken. The
extractcommand was not reading config files correctly and all resulting OSM files were empty. Specifying an extract on the command line using
--polygonwas still working.
- Allow zero-length index files in renumber.
1.7.0 - 2017-08-15
exportcommand for exporting OSM data into GeoJSON format. The OSM data model with its nodes, ways, and relations is very different from the data model usually used for geodata with features having point, linestring, or polygon geometries. The export command transforms OSM data into a more usual GIS data model. Nodes will be translated into points and ways into linestrings or polygons (if they are closed ways). Multipolygon and boundary relations will be translated into multipolygons. This transformation is not loss-less, especially information in non-multipolygon, non-boundary relations is lost. All tags are preserved in this process. Note that most GIS formats (such as Shapefiles, etc.) do not support arbitrary tags. Transformation into other GIS formats will need extra steps mapping tags to a limited list of attributes. This is outside the scope of this command.
changeset-filtercommand. Only changesets with bounding boxes overlapping this bounding box are copied to the output.
- Support for the new
flex_memindex type for node location indexes. It is used by default in the
exportcommands. The new man page
osmium-index-typesdocuments this and other available indexes.
- The order of objects in an OSM file expected by some commands as well as
the order created by the
sortcommand has changed when negative IDs are involved. (Negative IDs are sometimes used for objects that have not yet been uploaded to the OSM server.) The negative IDs are ordered now before the positive ones, both in order of their absolute value. This is the same ordering as JOSM uses.
- The commands
renumbernow also work with negative object IDs.
- Allow leading spaces in ID files for
- Various error messages and man pages have been clarified.
- Updated minimum libosmium version required to 2.13.0.
- Update version of Catch unit test framework to 1.9.7.
- Libosmium fix: Changesets with more than 2^16 characters in comments now work.
- Libosmium fix: Changeset bounding boxes are now always output to OSM files (any format) if at least one of the corners is defined. This is needed to handle broken data from the main OSM database which contains such cases. This now also works when reading OPL files.
1.6.1 - 2017-04-10
- Clarify differences between
derive-changescommands in man pages.
- Needs current libosmium 2.12.1 now.
- Use empty header for apply-changes instead of the one from input file.
- Call 'less' with -R when using ANSI colors with 'show' command.
- Do not show progress options on show command.
1.6.0 - 2017-03-07
tags-filtercommand for filtering OSM files based on tag keys and values.
- Add option
apply-changesfor updating files created with
- Add optional
output_headeron extracts in config file. (#47)
apply-changesformat for setting format of change files.
- Now requires libosmium 2.12.
getidcommand in favour of
--with-historyfor consistency with other commands.
- Use new
RelationsMapIndexfrom libosmium for
- Update included version of Catch unit test framework to 1.8.1 which required some changes in the tests.
osmium::util::file_sizeinstead of our own
- Miscellaneous code cleanups and improved warning messages and man pages.
-pthreadcompiler and linker options on Linux/OSX. This should fix a problem where some linker versions will not link binaries correctly when the
--as-neededoption is used.
- Typo in GeoJSON parser which broke MultiPolygon support.
- Wrong description of -S option in extract man page.
- Windows build problem related to forced build for old Windows versions.
- All but the first polygon in a GeoJSON multipolygon were ignored by the
- Zsh command line completion for some commands.
1.5.1 - 2017-01-19
- Build with warnings in all build types, not only "Dev".
- Better error messages for command line errors.
- A dereference of end iterator in
- You can not specify the special file name "-" (to read from STDIN) several times for commands reading multiple files.
1.5.0 - 2017-01-18
extractcommand to cut out geographical regions from an OSM file using a bounding box or (multi)polygon.
1.4.1 - 2016-11-20
- Add hint to error message about
--overwriteoption when trying to open an existing file.
- Check the required libosmium version in CMake build.
- Add --ignore-missing-nodes to
add-locations-to-wayssubcommand. If this is not set, the command will now fail if there are missing nodes needed for ways.
getidsubcommands now use the IdSet class from the newest libosmium making them more efficient (especially on very large input files).
- Improved error messages for low-level errors.
- Now requires at least libosmium 2.10.2 and protozero 1.4.5.
- Consistently handle
--output-headeroption in all commands that create standard OSM files.
- Handling of some output options was not correct in
diffcommand. They do now what is documented and it is documented what they do.
- Progress bar and output from verbose mode will now be kept separate.
1.4.0 - 2016-09-15
- The new manual is a more gentle introduction into the capabilities of Osmium Tool. Numerous man page additions.
mergecommand to merge any number of sorted OSM files.
derive-changescommand to create change file from two OSM data files.
diffcommand to show differences between OSM files.
renumbercommand can now optionally only renumber some object types.
- Version information is now printed including the git commit id and always shown in verbose mode.
iwyutarget to CMake config.
- Progress bars will be shown on some commands. (This is configurable at
run time with the
apply-changessubcommand now detects whether it is updating a normal OSM file or an OSM history file based on file name suffix (can be forced with
--with-history). The options
--remove-deletedare now deprecated (a warning will be written to stderr). For normal OSM files, output is always simplified and deleted objects are removed, for OSM history files, all versions of all objects are kept.
- Also check ordering of changesets in
osmium fileinfo -e.
-Ican now be used multiple times.
- More consistent warning messages.
- Compiles much faster due to include optimizations.
- Update the included RapidJSON to version 1.1.0.
- CMake now creates
- Wrapper script now works with quoted arguments.
1.3.1 - 2016-06-08
- Check that input files are correctly ordered in the
- Most commands now show the memory used in verbose mode.
- New option
--helpon most commands shows command line options.
--default-typeoption to getid command.
getidcommand can now recursively add all referenced objects.
showcommand to quickly see OSM file contents.
- Much faster and more memory efficient implementation of the
getidcommand can now read IDs from stdin.
- Also show libosmium version when running
1.3.0 - 2015-11-17
- Add new
sortsubcommand for sorting OSM data files, history files, and change files.
- Add new
- New option
--fsyncon all subcommands that write an OSM file. Will call fsync after writing any file.
- Uses new libosmium version now (use at least libosmium version 2.5.3).
1.2.1 - 2015-08-31
- Uses new libosmium version now (use at least libosmium version 2.4.1).
- Several Windows line ending issues were fixed. Consistently uses files in binary mode now with LF line endings.
- CRC calculation fixed in libosmium.
1.2.0 - 2015-08-18
- Added lots of tests.
- Uses new libosmium version now (use at least libosmium version 2.3.0).
- Many corrections and updates in manual pages.
- Change CRC32 implementation. The new implementation uses the newly added CRC functions from libosmium. This should make the CRC independent of host architecture and endianness.
- Lots of refactoring code cleanups.
- Remove license that's not applicable from LICENSE-rapidjson.txt.
- Renumbering didn't work properly in some cases.
- Fix error checking in renumber command.
1.1.1 - 2015-07-04
- Osmium fileinfo --show-variables didn't work properly.
- Improved zsh autocompletion
1.1.0 - 2015-07-04
- New getid subcommand to filter by node/way/relation IDs.
- New renumber subcommand to renumber IDs in OSM files.
- New check-refs subcommand to check referential integrity in OSM files.
- Improved testing framework and added some functional tests.
- Fileinfo subcommand can now output a single variable using
- Fileinfo subcommand can now output all data in JSON format using the RapidJSON library (which is included in the code).
- Fileinfo subcommand now also shows largest ID of each type.
- Lots of refactoring to handle command line parsing for different subcommands in a uniform manner. Now pretty much all command line options concerning file input and output are consistent across subcommand.
- Uses newest libosmium.
- Time-fiter subcommand: Fixed case where objects are updated twice in the same second.
- Some corrections in man pages.
1.0.1 - 2015-03-31
- Minor updates to documentation and build system