Skip to content

Version 2.17.0

Compare
Choose a tag to compare
@joto joto released this 26 Apr 12:46
· 184 commits to master since this release

Added

  • Add "ids" output format. New IDS output format that is similar to the OPL format, but only the entity type and id is written out.
  • Add convenience functions left(), right(), top(), bottom() to access osmium::Box boundaries.
  • Add polygon output to WKB factory.
  • Add functions to access storage from node_locations_for_ways handler.
  • Add flag osmium::io::buffers_type for telling the Reader class whether you want buffers read to only contain a single type of OSM entity.
  • Add convenient named nodes(), ways(), and relations() accessor functions to nwr_array class.
  • Add DeltaDecode::value() accessor function.
  • Add variant of the Buffer::purge_removed() function which doesn't take a callback parameter.

Changed

  • Different varint decoding for faster PBF decoding. This makes PBF decoding about 15% faster.
  • Several code optimmizations in (PBF) writer code that speed up writing of OSM files considerably while using less CPU and spreading the load on multiple CPUs.
  • Use memset/memcpy instead of std::fill_n and std::copy in object builder for some slight speedups.
  • Ignore metadata setting on reader for history/change files. History and change files must be read with metadata, because otherwise the information is lost whether an object is visible or deleted. So ignore this setting in that case.
  • On Linux: Use fadvise() to tell kernel about our reading patterns:
    1. Tell kernel that we are reading OSM files sequentially. This
      should improve pre-fetching of data blocks.
    2. Tell kernel that we are done with block so they can be released.
      This means we don't hog the buffer cache for something that
      will, in all likelyhood, not be needed any more.
  • Use assert() instead of exception in "can not happen" situation in the relations manager code.
  • Various code cleanups.

Fixed

  • Test failure with add_tag_list on some systems.
  • Test framework fix for aarch64 architecture.
  • Remove undefined behaviour in bzip2 compression code.
  • Rename some local variables to not shadow member functions.
  • Wrap osmium::util::MemoryMapping::unmap() in try/catch on Windows also because we call this from a noexcept function.
  • Removed superfluous std::forwards and fixed code that called std::forward multiple times on the same object.
  • Fix in OPL parser which could lead to invalid data being generated.
  • Fixed three bugs in O5M parser which could lead to an infinit loop or segmentation faults.