Releases: clarisma/geodesk
Version 0.2.1
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
Features
interface is no longer generic. Iterating overFeatures
always
returnsFeature
objects. -
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 asBox
andHeading
) have moved tocom.geodesk.geom
Enhancements
-
Applying spatial filters is now much simpler. Instead of using the
Filters
factory class, filters can now be invoked directly on theFeatures
object.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
Filters
factory 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
,Way
andRelation
will migrate to theFeature
superclass, 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
-
OsmPbfReader
now shuts down cleanly when reading a corrupt source file (clarisma/gol-tool#104) -- this bug causedgol build
to hang on truncated.osm.pbf
files. -
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
MapMaker
now 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
FeatureLibrary
now supportsAutoCloseable
(#85)
Bug Fixes
-
Tags.toMap()
returns an empty collection instead ofnull
for 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
Version 0.1.4
New Features
-
gol build
: Build settings are now accepted as command-line options -
gol build
: Optiontag-duplicate-nodes
(#74) -
gol build
: Optiontag-orphan-nodes
(#73) -
gol info
: Now displays statistics for tiles (-t
) and free pages (-f
);
enhanced statistics for indexes (-i
) -
gol query
: Two new report types for Tag & Role Statistics (-f=stats
):keys
andtags
Breaking Changes
- Placeholder features are now tagged with
geodesk:missing=yes
instead of
geodesk:error=missing
(#75)
Bug Fixes
- Fixed linker behavior for sparse-tile relations that reference missing features;
back-links now work correctly for this edge case.
Version 0.1.3
GeoDesk 0.1.3 Early Access
New Features
gol query
: Tag & Role Statistics (-f=stats
) -- Preview
Enhancements
-
gol query
: XML output now containsupload=never
attribute to signal JOSM (and other editors that support this tag) that the data should not be uploaded to the OSM server (XML output can be viewed in JOSM, but is not suitable for submitting changes since untagged nodes are re-generated with synthetic IDs) -
gol query
(map
output format):-
Set base map and attribution (
-f:basemap
/-f:attribution
) -
Customize color of map markers (Option
-f:color
) -
Clicking on a map marker now navigates to a URL. URL can be specified via option
-f:link
, defaults to main OSM website (clarisma/gol-tool#74)
-
-
--precision
default is now 7 (previously 6) to match the standard OSM coordinate precision
Bug Fixes
-
Fixed rounding error in the conversion of coordinates between WGS-84 and Mercator; conversion is now guaranteed to be lossless up to 100-nanodegree precision (
--precision=7
; excludes latitudes exceeding 85 degrees, which are clipped) -
Fixed bug that caused GOL files to be created non-sparse, which increased storage consumption
-
gol query
: Significantly increased the performance of output formatters (x 10 for certain formats) by fixing a buffering issue
Miscellaneous
ProgressReporter
is now part of the GeoDesk library
Version 0.1.2
GeoDesk 0.1.2 Early Access
This maintenance release includes the following updates:
-
Preview of fast spatial predicates
-
GOQL: keys and values no longer need to be enclosed in quotes if they contain non-ASCII characters
-
Feature
: ImplementeddoubleValue()
andisPlaceholder()
-
Relation.toGeometry()
now createsMultiLineString
andMultiPoint
for homogeneous geometry collections -
Enabled querying parent ways of anonymous nodes
-
Query output in OSM-XML format now recursively adds child relations
(Release 0.1.1 omitted to bring versioning in line with GOL Tool)