Releases: clarisma/geodesk
Version 2.0.0
This release supports Version 2.0 of the Geo-Object Library file format.
Important: GOL 2.0 is incompatible with GOL 1.0. To create GOLs from OSM data, use GOL Tool 2.0 (download • repo).
We've prepared a Migration Guide to ensure your upgrade goes smoothly.
Breaking changes
-
Requires GOLs created with GOL Tool 2.0
-
Removed
Feature.isPlaceholder()(the concept of placeholder features no longer exists in GOL 2.0) -
Removed the
Filtersclass (previously deprecated) -
Removed rarely-used auto-load functionality (resolves #87)
-
Mercator.xFromLon()andMercator.yFromLat()(and relatedMercatorfunctions) now returnintinstead ofdouble, and throwIllegalArgumentExceptionif longitude or latitude are invalid; valid latitudes that fall outside the Mercator-projection range (+/- ~86 degrees) are clamped (#103) -
Box.ofWSEN()now also checks and clamps longitude/latitude values (#86)
Enhancements
-
Added ability to open GOLs via
Features.open() -
GOLs can now optionally store IDs for all nodes (#57)
-
Numeric parsing of tag values is now lenient ("55mph" returns 55), matching the behavior of the C++ and Python SDKs (#64)
Performance enhancements
- Queries are typically 6% faster due to efficiency improvements in the GOL 2.0 file format
Bug fixes
- Fixed: Parent relation iterator may fail for large GOLs (#80)
Deprecations
- Opening a GOL via
new FeatureLibrary()is deprecated. UseFeatures.open()instead.
Documentation
Version 1.1.0
Enhancements
- Queries based on a feature's ID (but see documentation for important notes on performance)
Bug fixes
- Fixed strict-mode Decimal parsing (#102)
Version 1.0.2
Performance improvements
- Improved parallelism to speed up queries on systems with high core count (#96)
Other
- Switched documentation to Markdown style
Version 0.2.1
This release completes the transition to the streamlined API (introduced in 0.2).
Version 0.2
This release introduces the streamlined API we've announced in 0.1.10.
Most importantly, we've simplified the type system. OpenStreetMap features are represented as nodes, ways and relations, and GeoDesk has corresponding Node, Way and Relation interfaces, which derive from the Feature supertype. In 0.2, these subtypes still exist as marker interfaces, but their specialized methods have moved to the supertype. This means that all features can simply be treated as a Feature, which removes the need for casting and awkward generics. When working with feature sets, you'll no longer need to declare Features<?> or Features<Node> -- you'll simply use Features.
This change aligns more closely with how users think about OSM data. Most points-of-interest can be modeled as nodes, ways or relations -- for example, a museum could be marked as a single point, a simple polygon (as a closed way) or a building with a courtyard (requiring a multipolygon relation). In those cases where the OSM type matters, use .isNode(), .isWay() or .isRelation() (or type()).
We've prepared a Migration Guide to ensure your upgrade goes smoothly.
Breaking changes
-
The
Featuresinterface is no longer generic. Iterating overFeaturesalways
returnsFeatureobjects. -
The typed methods (
memberNodes(),parentRelations(), etc.) have been
removed. To constrain a type, usemembers().nodes(),parents().relations(),
or include the feature type in a query string (members("n"),parents("r")). -
All classes from
com.geodesk.core(such asBoxandHeading) have moved tocom.geodesk.geom
Enhancements
-
Applying spatial filters is now much simpler. Instead of using the
Filtersfactory class, filters can now be invoked directly on theFeaturesobject.So instead of
biotopes.select(Filters.coveredBy(area))simply use
biotopes.coveredBy(area)Note that several spatial filter methods have changed names:
contains()->containing()
crosses()->crossing()
intersects()->intersecting()
overlaps()->overlapping()
touches()->touching()These changes make your code read more naturally:
bridges.crossing(river)
adminAreas.touching(county)This change also resolves the ambiguity concerning
contains():Features.contains(Object)checks if the given feature is part of this feature set.Features.containing(Feature)returns the features whose geometry contains the given feature.
Deprecations
- The
Filtersfactory class has been deprecated and may be removed in future releases.
The preferred way to use filters is to call the filter methods onFeatures, as discussed above.
Version 0.1.10
Bug Fixes
-
gol query: CSV output fills empty cells to maintain proper column structure (clarisma/gol-tool#108)
Deprecations
- We will introduce a simpler, streamlined API in Version 0.2. Specifically, methods from
Node,WayandRelationwill migrate to theFeaturesuperclass, eliminating the need for casting and use of awkward generics (Features<?>becomes justFeatures). The most common filters will be accessible directly fromFeatures(roads.select(crosses(river))becomesroads.crosses(river)). These changes are part of our broader effort to align the Java and Python toolkits and make it easier for developers to transition between them.
Version 0.1.9
Bug Fixes
-
OsmPbfReadernow shuts down cleanly when reading a corrupt source file (clarisma/gol-tool#104) -- this bug causedgol buildto hang on truncated.osm.pbffiles. -
gol build: Fixed encoding bug that caused access to certain way-nodes to fail (clarisma/gol-tool#105)
Note: We recommend re-building any GOL with more than 16K tiles
Other Changes
MapMakernow uses the standard OSM Carto style by default (clarisma/geodesk-py#17)
Version 0.1.8
Bug Fixes
query: Newlines in tag values are now properly escaped in GeoJSON output, as well as other output formats (clarisma/gol-tool#93; clarisma/gol-tool#101)
Other
- Upgraded JUnit from version 4.12 to 4.13.2
Version 0.1.7
Enhancements
FeatureLibrarynow supportsAutoCloseable(#85)
Bug Fixes
-
Tags.toMap()returns an empty collection instead ofnullfor features without tags (#84) -
build: Fixed bug which caused analysis to fail if none of the strings in a batch meet the minimum string count (clarisma/gol-tool#99) -
build:Buildcontext.getTileCatalog()explicitly unmaps the metadata segment; an active mapping could prevent the created GOL from closing properly in cases where GC does not run (clarisma/gol-tool#100)
Version 0.1.6
Performance Improvements
gol build: Building planet-size GOLs completes faster and consumes less storage for temporary files
Bug Fixes
-
gol build: Fixed deadlock with invalid input files (clarisma/gol-tool#92) -
gol build: Fixed potential race condition (clarisma/gol-tool#96) -
gol build: Suppressed Analyzer log message