- Fix crash while building geometry of multipolygon with zero-node way members under certain circumstances (#529)
- skip/abort some query filter optimization if normalization exceeds reasonable limits (#530)
- upgrade dependencies: ignite to v2.16, guava to v33, caffeine to v3.1.8 (#521), postgresql to v42.6 (#523)
- rename development branch to
main(#522)
- Fix performance degradation in the streaming endpoints when running on Ignite using the
AFFINITY_CALLbackend (#516)
OSMEntitySnapshotnow also returns thelastContributionTimestampfor each snapshot (#495)
- Significantly improve performance of queries which use filters and don't use
flatMap(#511)
areaOfInterest(bbox)should not override previously set bbox (#512)- Fix a (rare) bug which can cause relation-versions with no members to be misinterpreted (#510)
CellIteratoris now decoupled from implementation of the "Grid" (#495)- Enhance geometry builder with methods to generate geometries from entities when their members are already pre-resolved for a specific timestamp (#501)
- Upgrade "ohsome parent" repository to version 2.14.0 (#513)
- update ignite dependency to 2.15.0 (#506)
- update ignite dependency to 2.14.0-heigit1 (#491)
- java 17 is now a requirement (#488)
- dependency version updates (#488)
- remove class
oshdb-util:util.time.TimestampFormatter(#419) - drop "old" etl module (#447)
- remove Comparable interface from OSMEntity (#449)
- remove deprecated filter methods
osmType,osmTagandosmEntityFlter(which were replaced by OSHDBfilters) (#451) OSMType.toStringreturns lower-case name. (#459)- rework of handling separate keytables, see #470 (#470)
prefixis now a mandatory parameter forOSHDBJdbcandOSHDBIgnite. (#478)OSHDBH2no longer supportsDataSources as argument. (#478)
- allow to flexibly combine (automatic) aggregation methods (like
aggregateByGeometry(…)oraggregateByTimestamp()) with each other and withfilterormap/flatMap, regardless of the order of the applied operations (#451) - add new OSHDB filters:
perimeter,geometry.vertices,geometry.outers,geometry.inners,geometry.roundnessandgeometry.squareness(#436) - add OSHDB-helpers module providing two helpers (
OSHDBDriverandOSHDBApplication) to simplify database setup (#474)
- fix building valid geometries for multipolygons with shells which share a single point (#424)
- change geometry filters to be based on full (unclipped) geometries (#433)
- make sure area computation never returns negative results (instead zero is returned for the invalid geometries which previously resulted in negative values) (#438)
- remove deprecated method
OSHEntity.getRawTagKeys(#441) - remove deprecated method
OSMEntity.getRawTags(#443) - remove
OSMMember.getRawRoleId(#453) - refactor
OSHDBRoleand move to oshdb-core (#453) - update jts dependency to version 1.18.2
- update ignite dependency to version 2.14.0 (#459, #467)
- add natural order to
OSHDBTag(#454) - throw exception when invalid timestamp strings are supplied to the MapReducer (#260)
- fix a bug which causes queries using the geometry filters
length:andarea:to fail when executed on an ignite cluster (#426) - fix a bug which cause ComputeJobs to keep processing for a while despite they are already canceled (#428)
- fix a bug where contribution-based filters are not applied when used in an and/or operation. (#409)
- fix a regression in
0.7.0which prevents queries from being executed on an ignite cluster backend (#417)
- reorganize java packages, moving them from
org/heigit/bigspatialdatatoorg/heigit/ohsome - integrate ohsome-filter module fully into this repository, renaming it to
oshdb-filter(#306) - rename and move submodules of
oshdb-tool(#384) - rename some classes, methods and enum constants; move some classes/interfaces (#369, #374)
- move the oshdb-api's ignite backend implementation into its own submodule
oshdb-api-ignite(#387) - refactoring of internal coordinate representation form long to int, mainly
OSHDBBoundingBox,OSMNode,OSHEntity(#395)
See the upgrading from 0.6 section below for instructions how to update your code according to these breaking changes.
- enhance functionality of oshdb-filter: add new
changeset: <id|(ids)>and (optional)contributor: <id|(ids)>filters (#380)
- replace an unnecessarily used Map with a more lightweight implementation using a List. (#352)
- make sure predicate-filters are always serializable (#353)
- improve maintainability of parts of important central processing algorithms for determining entity modification history: refactoring improves code structure, adds inline documentation and enhances test coverage (#327)
- reorganize and update ohsome parent module, requires maven version 3.6 or higher (#360, #375)
- add new interfaces
OSHDBTemporalandOSHDBBoundable(#369) - major improvements to code style guide adherence; fix some potential bugs found in static code analyis (#374)
- upgrade apache ignite to version 2.10.0 (#386)
- drop deprecated oshdb-api methods
whereandosmTypes(#308) - clarify documentation of OSMContributionView results (#292)
- if cluster state is not active an exception will thrown (#337)
- when filtering for
geometry:other: also consider GeometryCollections occurring as a side effect of clipping (#338)
- Since the java package namespace was updated, you need to change your imports to the new path, e.g.:
import org.heigit.ohsome.oshdb.api.db.OSHDBDatabase; import org.heigit.ohsome.oshdb.api.db.OSHDBH2;
- If you used the “ohsome filter” functionality from OSHDB version 0.6 and imported one or more classes from the ohsome filter module, you would need to adjust the package names from
org.heigit.ohsome.filtertoorg.heigit.ohsome.oshdb.filter. - the following enum constants, methods, classes and packages were renamed or moved:
old new moved and renamed module oshdb-tool/etloshdb-etlmoved and renamed module oshdb-tool/oshpbf-parseroshdb-oshpbf-parserrenamed method OSMWay.getRef()OSMWay.getMember()renamed method OSMWay.getRefEntities(long)OSMWay.getMemberEntities(long)renamed method OSHDBTimestamp.getRawUnixTimestamp()OSHDBTimestamp.getEpochSecond()moved class oshdb.util.OSHDBTimestamposhdb.OSHDBTimestampmoved class oshdb.util.OSHDBBoundingBoxoshdb.OSHDBBoundingBoxdeprecated method new OSHDBBoundingBox(double, double, double, double)replaced by OSHDBBoundingBox.bboxWgs84Coordinates(...)renamed method OSHDBBoundingBox.get(Max/Min)(Lon/Lat)Long()OSHDBBoundingBox.get(Max/Min)(Longitude/Latitude)()moved class oshdb.util.OSHDBTagoshdb.OSHDBTagmoved class CellIterator.OSHEntityFilteroshdb-util/oshdb.osh.OSHEntityFiltermoved class CellIterator.OSMEntityFilteroshdb-util/oshdb.osm.OSMEntityFiltermoved class oshdb-api.generic.functionoshdb-util/oshdb.util.functionrenamed enum constants ComputeMode.LocalPeek,….ScanQuery,….AffinityCallComputeMode.LOCAL_PEEK,….SCAN_QUERY,….AFFINITY_CALLmoved class org.heigit.ohsome.oshdb.api.object.OSMContributionorg.heigit.ohsome.oshdb.util.mappable.OSMContributionmoved class org.heigit.ohsome.oshdb.api.object.OSMEntitySnapshotorg.heigit.ohsome.oshdb.util.mappable.OSMEntitySnapshot - if you are using the ignite backend, you need to add the following dependency to your project:
<dependency> <groupId>org.heigit.ohsome</groupId> <artifactId>oshdb-api-ignite</artifactId> <version>0.7.0</version> </dependency>
- make
aggregateByGeometryrobust against broken geometries causing topology exceptions (regression in version 0.6) (#362) - fix a crash caused by the use of non-existent tags in OSHDB filters (#363)
- fix an infinite loop caused by certain invalid multipolygons with touching inner rings which are partially incomplete. (#343)
- don't change cluster state when executing queries on an Ignite cluster. (#335)
- fix bug when building multipolygon geometries with certain invalid inner ring configurations (e.g. duplicate inner rings). (#334)
- fix a crash caused when oshdb-filters are used in
groupByEntityqueries. (#321) - fix a crash when relations reference redacted ways. (#325)
- reorganize maven packages: rename group parent to ohsome-parent, rename local parent to oshdb-parent, and change groupId to
org.heigit.ohsome. (#234, #257)
When switching to the OSHDB version 0.6 you need to adapt your pom.xml to the new groupId, e.g.:
<dependency>
<groupId>org.heigit.ohsome</groupId>
<artifactId>oshdb-api</artifactId>
<version>0.6.0</version>
</dependency>- Timestamp parser class renamed to
IsoDateTimeParserfromISODateTimeParserand adjust how input timestamps (e.g. inMapReducer.timestamps()) are handled: only the UTC time zone identifierZis supported. (#265) - Removed
UNKOWNfrom theOSMTypeenumeration class. (#239)
- improve accuracy of built-in geometry helper functions which calculate the geodesic lengths and areas of OSM geometries. (#193)
- integrate ohsome filter functionality. (#253)
- better handling of OSM multipolygons with touching inner rings. This improves performance considerably in some cases (especially large complex multipolygons). (#249)
- improve performance of
aggregateByGeometryqueries. (#272) - improve performance of geometry-building of relations with a huge number members. (#287)
- compatibility fix to allow building of javadoc under Java 11
- fix bug where in some cases, instead of an OSHDBTimeoutException an IgniteException was thrown. (#258)
- various code style and code quality improvements
- the OSHDB is now published on Zenodo for easier citation using the DOI
10.5281/zenodo.4146991
- fix a crash when relations reference redacted ways (backported from version 0.6.1). (#325)
- update Ignite to version 2.9.0
- update Ignite to version 2.8.0
- fix a regression in 0.5.7 when using OSHDB on Ignite, restoring binary compatibility when running clients with different oshdb 0.5 versions in parallel. (#235)
- fix a bug in the geometry builder utility causing exceptions to be thrown for certain invalid OSM multipolygons. (#231)
- fix regression in version 0.5.6 which made queries run slowly when executed on ignite using the (default) “LocalPeek” backend. (#229)
- throw an exception if the
aggregateByTimestamps(callback)is fed with timestamps outside the query's time range. Before this change, this used to cause unspecific exceptions or undefined behaviour. (#158) - improve querying of tag from keytables. (#224)
- minor bug fixes and coding clean up. (#216, #198, #206)
- fix how osm-type filters work when called multiple times: now, like with other filters, osm entity must match all supplied type filters. (#157)
- osmTag filters are more flexible: when used with a list of tags, it now accepts also
tagKey=*statements (which can be mixed withkey=valuestatements as before). (#209) - fix a bug where polygonal areas of interest would throw an exception in some (rare) edge cases. (#204)
- improved performance of data streaming queries on ignite (using AffinityCall backend).
- make monthly time intervals more intuitive to use. (#201)
- fix a regression where broken referential integrity in OSM data causes a crash during geometry building
- update Ignite to version 2.7.5
- fix calculation of insertIds / entities stored in too high zoom levels, which resulted in partially missing data in some queries (#183)
- prevent crashes while building certain invalid multipolygon relation geometries (#179)
- oshdb-util: Fix a bug in
Geo.areaOfwhen applied to polygons with holes. Before this fix, the method erroneously skipped the first inner ring when calculating the total area of a polygon. This affected geometries constructed from OSM multipolygon relations. - oshdb-util: Implemented
QUARTERLY,WEEKLY,DAILY, andHOURLYas additional time intervals.
- JTS library was updated to version 1.16. Because this library is now maintained by a different company, import statements need to be adjusted as explained in their JTS migration guide. (#75)
- Fix incorrect detection of deletions in queries using the ContributionView.
- Return the correct changeset id in case of concurrent updates on entities by different changesets.
- Fix crash while checking empty geometries resulting from erroneous OSM data. (#57)
- Fix a crash when trying to build polygons on partially incomplete OSM ways. (#31)
- Make importer work with “factory-settings” ignite system. (#49)
- Refactored how result aggregation by custom groupings works. It is now possible to combine multiple aggregation groupings.
- Add methods to aggregate results by sub-regions.
- Results of data extraction queries can now also be streamed and immediately post-processed. (#19)
- Include of t-digest algorithm to calculate estimated quantiles of results. (#34)
- All backends now support query timeouts. (#47, #68)
- Tweaked data format slightly to avoid overly full grid cells at low zoom levels. (#130)
- Make the
getModificationTimestampsmethod of OSHEntities faster, resulting in general performance improvement of every query, but especially when analyzing complex relations. (#10) - Improve performance of bbox-in-polygon checking routines. (#33)
- Avoid unnecessary clipping of geometries. (#66)
- Improve building of complex multipolygon geometries. (#111)
- Many small performance improvements.
- Improve speed and functionality of the ETL module.
- Source code is now released as open-source under GNU Lesser General Public License version 3.
- Dependencies are updated and reduced to the minimum. Also, they are now declared in the modules where needed instead of the top level. You might therefore have to declare dependencies of your code explicitly when upgrading. (#79, #5)
- Drop most deprecated methods from OSHDB version 0.4.0
- More examples and documentation are available.
- Many small bugfixes and improvements, especially for the Ignite-backend. Ignite can now be considered stable and used to analyze a global data set.
- oshdb-api: renamed some methods (
wherefilter →osmTagandosmEntityFilter,osmTypesfilter →osmType) and refactored some methods to accept a wider range of input objects. GeometryCollectiongeometries are no longer ignored when calculating lengths or areas of features. (#51)- Restructured core OSHDB data structures to be more flexible in upcoming version changes. (#138)
- Rename
getChangesetmethod to `getChangesetId. (#35)
- renamed bounding box class to
OSHDBBoundingBoxand change order of constructor parameters tominLon, minLat, maxLon, maxLat(wasminLon, maxLon, minLat, maxLat), for example:(0.3 code)new BoundingBox(9.4,17.5,46.4,49.1)new OSHDBBoundingBox(9.4,46.4,17.5,49.1)(0.4)
- fixed naming scheme of OSHDB related classes:
OSHDB(as well asOSM,OSH) are written in upper case:is nowOSHDB_IgniteOSHDBIgniteis nowOSHDbGeometryBuilderOSHDBGeometryBuilder
- re-introduced
oshdb-utilmodule- some classes/packages have been moved to this module (e.g. the
geometryandtimehelpers, as well astagInterpreter,tagTranslator,cellIterator,export, …) - moved some functionality from
OSM,OSHandGridclasses into the oshdb-util package (these methods are now found in more specific classes like theOSHDBGeometryBuilder)
- some classes/packages have been moved to this module (e.g. the
- all timestamps related to OSHDB objects (osm entities, etc.) return
OSHDBTimestampobjects- if you need to access the raw unix timestamp (
long) value, use….getTimestamp().getRawUnixTimestamp()
- if you need to access the raw unix timestamp (
- introduce specific classes for osm tags (
OSMTag), tag-keys (OSMTagKey), roles (OSMRole) and their OSHDB counterparts (OSHDBTag, …)- these will be returned e.g. by
OSMEntity.getTags()instead of the raw tag (int) ids – if you need these, useOSMEntity.getRawTags()or the appropriate getter function of the new objects (e.g.OSHDBTag.getKey())
- these will be returned e.g. by
- the celliterator is now a (reusable) object instead of a set of static functions
- drop
from analyzed contribution types ofMEMBERLIST_CHANGEOSMContributions
- slightly tweaked database cell structure:
- higher max-zoom level (up to level 15 instead of 12)
- move content from almost empty cells to higher zoom levels
- store objects in cells where they fit fully
- (note: OSHDB database files created with this format are backwards compatible with oshdb version 0.3.1 as long as the max-zoom parameter is kept at
12)
- add possibility to aggregate results by custom timestamp values
- add possibility to zero-fill custom aggregation indices
- add method to get unclipped geometries
- add method to get changeset id of OSMContribution objects
- add option to cache all data in memory when using the H2 backend for faster queries (at the cost of slower startup times and higher memory usage)
- rewritten importer (.osh.pbf → .oshdb) etl toolchain
- generated OSHDB files include metadata about the included (osm) data
- oshdb-api: much faster processing of queries with polygonal areas of interest
- oshdb-api: implement lazy evaluation of geometries (large speed up for queries like
count()that don't require entity geometries) - oshdb-api: slightly more performant querying of data cells (both in H2 as well as Ignite backends)
- oshdb-util: significant performance improvements of internal
getModificationTimestampsmethod (which is called once for every matching entity when using the oshdb-api)
- oshdb-api: includes
slf4j-simplelogging framework by default - oshdb-util: more robust geometry building, e.g. incomplete relations or broken multipolygon relations are now returned as GeometryCollections
- the git repository now includes the documentation and basic usage tutorial
- moved “parent” maven module outside this repository
- improve code quality all over the place (reduced duplicate code, reduced or annotated type casting warnings, reduced usage of raw types)
- various bugfixes
- make java API methods work with updated “0.4” OSHDB schema
- mark some methods as deprecated that are removed in 0.4
- added a new easy to use “functional programming style” API abstraction level that works on local OSHDB files as well as on an Ignite cluster
- OSMEntitySnapshotMapper – iterates over entity “snapshots” at given timestamps
- OSMContributionMapper – iterates over all OSM contributions for each entity (i.e. creation, modifications, deletion)
- (breaking) renamed properties of
CellIterator.iterateAll's results - (breaking) renamed
Geo.distanceOftoGeo.lengthOf - moved osmatrix processing code into its own repository
CellIterator.iterateAllnow groups consecutive changes by changeset id- added
TagTranslatorhelper class - switched logging system to slf4j
- improved javaDoc in a lot of places
- extended unit test coverage
- various bugfixes
- …
Starting point of changelogs. First stable DB schema with data cells in multiple zoom levels. Raw access to data is possible.