simplefeatures v0.59.0 Release Notes
Release Date: 2026-03-27 // 3 months ago-
- ➕ Add
geos.ClipByRectfunction that clips a geometry to an axis-aligned rectangle (defined by ageom.Envelope). This wraps the GEOSGEOSClipByRectoperation, which is faster than computing a fullIntersectionwith a rectangular polygon.
- ➕ Add
Previous changes from v0.58.0
-
2026-02-15
➕ Add
PreparedGeometrytype andPreparefunction for efficient repeated spatial predicate evaluation. When a geometry is prepared, it caches spatial indices so that subsequent calls toIntersects,Contains,ContainsProperly,CoveredBy,Covers,Crosses,Disjoint,Overlaps,Touches, andWithinagainst different test geometries are fast. The implementation is based on a port of JTS.➕ Add
Bufferfunction that computes the buffer of a geometry at a given distance. Options are available for controlling quad segments, end cap style (round, flat, square), join style (round, mitre, bevel), single-sided mode, and simplify factor. The implementation is based on a port of JTS. This means thatBufferis now available natively in Go without need for the GEOS dependency.🔄 Change
GeometryCollection.Dimension()to return -1 for empty geometry collections (previously returned 0). This change is consistent with GEOS.🛠 Fix overlay operations (Union, Intersection, Difference, SymmetricDifference) to return dimension-appropriate empty geometries. For example, the difference of two equal polygons now returns
POLYGON EMPTYrather thanGEOMETRYCOLLECTION EMPTY.⚡️ Optimize Intersection to return early when input envelopes are disjoint.
⚡️ Optimize overlay operations (Intersection, Difference) for GeometryCollections by using R-Tree indexing to reduce O(M×N) to O(M log N) complexity.