- 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_CALL
backend (#516)
OSMEntitySnapshot
now also returns thelastContributionTimestamp
for 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)
CellIterator
is 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
,osmTag
andosmEntityFlter
(which were replaced by OSHDBfilter
s) (#451) OSMType.toString
returns lower-case name. (#459)- rework of handling separate keytables, see #470 (#470)
prefix
is now a mandatory parameter forOSHDBJdbc
andOSHDBIgnite
. (#478)OSHDBH2
no longer supportsDataSource
s as argument. (#478)
- allow to flexibly combine (automatic) aggregation methods (like
aggregateByGeometry(…)
oraggregateByTimestamp()
) with each other and withfilter
ormap
/flatMap
, regardless of the order of the applied operations (#451) - add new OSHDB filters:
perimeter
,geometry.vertices
,geometry.outers
,geometry.inners
,geometry.roundness
andgeometry.squareness
(#436) - add OSHDB-helpers module providing two helpers (
OSHDBDriver
andOSHDBApplication
) 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
OSHDBRole
and 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.0
which prevents queries from being executed on an ignite cluster backend (#417)
- reorganize java packages, moving them from
org/heigit/bigspatialdata
toorg/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
OSHDBTemporal
andOSHDBBoundable
(#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
where
andosmTypes
(#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.filter
toorg.heigit.ohsome.oshdb.filter
. - the following enum constants, methods, classes and packages were renamed or moved:
old new moved and renamed module oshdb-tool/etl
oshdb-etl
moved and renamed module oshdb-tool/oshpbf-parser
oshdb-oshpbf-parser
renamed method OSMWay.getRef()
OSMWay.getMember()
renamed method OSMWay.getRefEntities(long)
OSMWay.getMemberEntities(long)
renamed method OSHDBTimestamp.getRawUnixTimestamp()
OSHDBTimestamp.getEpochSecond()
moved class oshdb.util.OSHDBTimestamp
oshdb.OSHDBTimestamp
moved class oshdb.util.OSHDBBoundingBox
oshdb.OSHDBBoundingBox
deprecated 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.OSHDBTag
oshdb.OSHDBTag
moved class CellIterator.OSHEntityFilter
oshdb-util/oshdb.osh.OSHEntityFilter
moved class CellIterator.OSMEntityFilter
oshdb-util/oshdb.osm.OSMEntityFilter
moved class oshdb-api.generic.function
oshdb-util/oshdb.util.function
renamed enum constants ComputeMode.LocalPeek
,….ScanQuery
,….AffinityCall
ComputeMode.LOCAL_PEEK
,….SCAN_QUERY
,….AFFINITY_CALL
moved class org.heigit.ohsome.oshdb.api.object.OSMContribution
org.heigit.ohsome.oshdb.util.mappable.OSMContribution
moved class org.heigit.ohsome.oshdb.api.object.OSMEntitySnapshot
org.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
aggregateByGeometry
robust 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
groupByEntity
queries. (#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
IsoDateTimeParser
fromISODateTimeParser
and adjust how input timestamps (e.g. inMapReducer.timestamps()
) are handled: only the UTC time zone identifierZ
is supported. (#265) - Removed
UNKOWN
from theOSMType
enumeration 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
aggregateByGeometry
queries. (#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=value
statements 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.areaOf
when 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
, andHOURLY
as 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
getModificationTimestamps
method 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 (
where
filter →osmTag
andosmEntityFilter
,osmTypes
filter →osmType
) and refactored some methods to accept a wider range of input objects. GeometryCollection
geometries 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
getChangeset
method to `getChangesetId. (#35)
- renamed bounding box class to
OSHDBBoundingBox
and 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_Ignite
OSHDBIgnite
is nowOSHDbGeometryBuilder
OSHDBGeometryBuilder
- re-introduced
oshdb-util
module- some classes/packages have been moved to this module (e.g. the
geometry
andtime
helpers, as well astagInterpreter
,tagTranslator
,cellIterator
,export
, …) - moved some functionality from
OSM
,OSH
andGrid
classes 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
OSHDBTimestamp
objects- 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_CHANGE
OSMContribution
s
- 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
getModificationTimestamps
method (which is called once for every matching entity when using the oshdb-api)
- oshdb-api: includes
slf4j-simple
logging 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.distanceOf
toGeo.lengthOf
- moved osmatrix processing code into its own repository
CellIterator.iterateAll
now groups consecutive changes by changeset id- added
TagTranslator
helper 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.