Skip to content

Releases: osmcode/libosmium

Version 2.11.4

15 Aug 15:37
Compare
Choose a tag to compare

This is a bugfix-only release for a stable branch.

Fixed

  • Output coordinate with value of -2^31 correctly.
  • Buffers larger than 2^32 bytes do now work.

Version 2.12.2

03 May 08:18
Compare
Choose a tag to compare

Added

  • Add two argument (key, value) overload of TagMatcher::operator().

Changed

  • Detect, report, and remove duplicate ways in multipolygon relations.
  • Change EOF behaviour of Reader: The Reader::read() function will now always return an invalid buffer exactly once to signal EOF.
  • Update QGIS multipolygon project that is part of the test suite to show more problem types.
  • Copy multipolygon QGIS file for tests to build dir in cmake step.
  • Some code cleanups and improved debug output in multipolygon code.
  • Refactor I/O code to simplify code.
  • Disable some warnings on MSVC.
  • Various small code and build script changes.

Fixed

  • Two bugs in area assembler affecting very complex multipolygons and multipolygons with overlapping or nearly overlapping lines.
  • Invalid use of iterators leading to undefined behaviour in area assembler code.
  • Area assembler stats were not correctly counting inner rings that are areas in their own right.
  • Fix a thread problem valgrind found that might or might not be real.
  • Read OPL file correctly even if trailing newline in file is missing.
  • Include order for osmium/index/map headers and osmium/index/node_locations_map.hpp (or osmium/handler/node_locations_for_ways.hpp) doesn't matter any more.

Version 2.11.3

03 May 12:03
Compare
Choose a tag to compare

Fixed

  • Two bugs in area assembler affecting very complex multipolygons and multipolygons with overlapping or nearly overlapping lines.
  • Invalid use of iterators leading to undefined behaviour in area assembler code.
  • Read OPL file correctly even if trailing newline in file is missing.

Version 2.12.1

10 Apr 06:49
Compare
Choose a tag to compare

Added

  • New TagsFilter::set_default_result() function.

Changed

  • Use larger capacity for Buffer if necessary for alignment instead of
    throwing an exception. Minimum buffer size is now 64 bytes.
  • Check order of input data in relations collector. The relations collector
    can not deal with history data or a changes file. This was documented as a
    requirement, but often lead to problems, because this was ignored by users.
    So it now checks that the input data it gets is ordered and throws an
    exception otherwise.
  • When writing an OSM file, set generator to libosmium if not set by app.

Fixed

  • Infinite loop in Buffer::reserve_space(). (Issue #202.)
  • ObjectPointerCollection::unique() now removes elements at end.
  • Tests comparing double using == operator.
  • Build on Cygwin.

Version 2.11.2

10 Apr 06:55
Compare
Choose a tag to compare

Fixed

  • Use minimum size of 64 bytes for buffers. This fixes an infinite loop
    when buffer size is zero.

Version 2.12.0

07 Mar 12:52
Compare
Choose a tag to compare

Added

  • TagMatcher and TagsFilter classes for more flexibly matching tags and
    selecting objects based on tags. This obsoletes the less flexible classes
    based on osmium::tags::Filter classes.
  • Extended index::RelationsMap(Stash|Index) classes to also allow
    parent-to-member lookups.
  • New nrw_array helper class.
  • ObjectPointerCollection::unique() function.

Changed

  • Area assembler can now detect invalid locations and report them in the
    stats and through the problem reporter. If the new config option
    ignore_invalid_locations is set, the Assembler will pretend they weren't
    even referenced in the ways. (Issue #195.)
  • osmium::area::Assembler::operator() will now return a boolean reporting
    whether building of the area(s) was successful.
  • Split up area Assembler class into three classes: The
    detail::BasicAssembler is now the parent class. Assembler is the child
    class for usual use. The new GeomAssembler also derives from
    BasicAssembler and builds areas without taking tags into account at all.
    This is to support osm2pgsql which does tag handling itself. (Issue #194.)
  • The Projection class can do any projection supported by the Proj.4
    library. As a special case it now uses our own Mercator projection
    functions when the web mercator projection (EPSG 3857) is used. This is
    much faster than going through Proj.4.
  • Better error messages for low-level file utility functions.
  • Mark build_tag_list* functions in builder_helper.hpp as deprecated. You
    should use the functions from osmium/builder/attr.hpp instead.
  • Improved performance of the osmium::tags::match_(any|all|none)_of
    functions.
  • Improved performance of string comparison in tags::Filter.
  • Update version of Catch unit test framework to 1.8.1. This meant some
    tests had to be updated.
  • Use get_noexcept() in NodeLocationsForWays handler.
  • And lots of code and test cleanups...

Fixed

  • Terminate called on full non-auto-growing buffer. (Issue #189.)
  • When file formats were used that were not compiled into the binary, it
    terminated instead of throwing. (Issue #197.)
  • Windows build problem related to including two different winsock versions.
  • Windows build problem related to forced build for old Windows versions.
    (Issue #196.)
  • Clear stream contents in ProblemReporterException correctly.
  • Add -pthread compiler and linker options on Linux/OSX. This should fix
    a problem where some linker versions will not link binaries correctly when
    the --as-needed option is used.
  • The Filter::count() method didn't compile at all.
  • XML reader doesn't fail on relation member ref=0 any more.

Version 2.11.1

07 Mar 12:55
Compare
Choose a tag to compare

Fixed

  • Terminate called on full non-auto-growing buffer. (Issue #189.)
  • When file formats were used that were not compiled into the binary, it
    terminated instead of throwing. (Issue #197.)
  • The Filter::count() method didn't compile at all.

Version 2.11.0

14 Jan 10:51
Compare
Choose a tag to compare

Added

  • New index::RelationsMap(Stash|Index) classes implementing an index for
    looking up parent relation IDs given a member relation ID.
  • Add get_noexcept() method to all index maps. For cases where ids are
    often not in the index using this can speed up a program considerably.
  • New non-const WayNodeList::operator[].
  • Default constructed "invalid" Coordinates.
  • Tile constructor from web mercator coordinates and some helper
    functions for tile arithmetic.
  • Tag matcher matching keys using a regex.
  • New envelope() functions on NodeRefList, Way, and Area returning a
    Box object with the geometric envelope of the object.
  • Add amenity_list example.

Changed

  • Replaced the implementation for the web mercator projection using the usual
    tan-formula with a polynomial approximation which is much faster and good
    enough for OSM data which only has ~1cm resolution anyway. See
    https://github.com/osmcode/mercator-projection for all the details and
    benchmarks. You can disable this by defining the macro
    OSMIUM_USE_SLOW_MERCATOR_PROJECTION before including any of the Osmium
    headers.
  • Removed the outdated Makefile. Always use CMake directly to build.
  • Refactoring of osmium::apply() removing the resursive templates for faster
    compile times and allowing rvalue handlers.
  • Lots of code and test cleanups and more documentation.

Fixed

  • Handle endianess on FreeBSD properly.
  • Fixed doxygen config for reproducible builds.

Version 2.10.3

20 Nov 16:26
Compare
Choose a tag to compare

Changed

  • Round out ObjectPointerCollection implementation and test it.
  • Updated embedded protozero to 1.4.5.

Version 2.10.2

16 Nov 09:24
Compare
Choose a tag to compare

Changed

  • Updated embedded protozero to 1.4.4.

Fixed

  • Buffer overflow in osmium::Buffer.