Skip to content

Version 2.7.0

Compare
Choose a tag to compare
@joto joto released this 01 Jun 08:24
· 1396 commits to master since this release

Added

  • New functions for iterating over specific item types in buffers
    (osmium::memory::Buffer::select()), over specific subitems
    (osmium::OSMObject::subitems()), and for iterating over all rings of
    an area (osmium::Areas::outer_rings(), inner_rings()).
  • Debug output optionally prints CRC32 when add_crc32 file option is set.

Changed

  • XML parser will not allow any XML entities which are usually not used in OSM
    files anyway. This can help avoiding DOS attacks.
  • Removed SortedQueue implementation which was never used.
  • Also incorporate Locations in NodeRefs into CRC32 checksums. This means
    all checksums will be different compared to earlier versions of libosmium.
  • The completely new algorithm for assembling multipolygons is much faster,
    has better error reporting, generates statistics and can build more complex
    multipolygons correctly. The ProblemReporter classes have changed to make
    this happen, if you have written your own, you have to fix it.
  • Sparse node location stores are now only sorted if needed, ie. when nodes
    come in unordered.

Fixed

  • Output operator for Location shows full precision.
  • Undefined behaviour in WKB writer and types_from_string() function.
  • Fix unsigned overflow in pool.hpp.
  • OSM objects are now ordered by type (nodes, then ways, then relations),
    then ID, then version, then timestamp. Ordering by timestamp is normally
    not necessary, because there can't be two objects with same type, ID, and
    version but different timestamp. But this can happen when diffs are
    created from OSM extracts, so we check for this here. This change also
    makes sure IDs are always ordered by absolute IDs, positives first, so
    order is 0, 1, -1, 2, -2, ...
  • Data corruption bug fixed in disk based indexes (used for the node
    location store for instance). This only affected you, if you created
    and index, closed it, and re-opened it (possibly in a different process)
    and if there were missing nodes. If you looked up those nodes, you got
    location (0,0) back instead of an error.
  • Memory corruption bug showing up with GDAL 2.