finds.dev← search

// the find

spatial-go/geoos

★ 530 · Go · LGPL-2.1 · updated Jul 2024

A library provides spatial data and geometric algorithms

Geoos is a pure-Go spatial geometry library covering the usual GIS primitives: WKT/WKB/GeoJSON/GeoBuf encoding, spatial predicates via DE-9IM, overlay operations (union, intersection, difference), simplification, clustering, and spatial indexes. It's aimed at Go developers who need geometry processing without pulling in a CGo dependency on GEOS or GDAL.

The format support is genuinely broad — WKT, WKB, GeoJSON, GeoBuf, and CSV in one library is more than most Go alternatives offer. The spatial index selection (quadtree, kd-tree, HPR-tree with Hilbert encoding, interval R-tree) is solid and gives you real options depending on your data shape. Coordinate transform support including Mercator and Chinese datum offsets (GCJ-02/BD-09) is a practical inclusion that GEOS-based wrappers don't bundle. The DE-9IM relate implementation is comprehensive and well-tested, which is the hard part of getting spatial predicates right.

Last commit was July 2024 and the organization's external docs site (spatial-go.com) appears abandoned — a bad sign for a library where correctness of edge cases matters a lot and bugs need active fixing. No geodetic (spherical/ellipsoidal) support: everything is planar Cartesian, so anything involving real-world coordinates at scale will silently produce wrong answers without explicit projection handling by the caller. The overlay operations (union, intersection) are known to have edge-case failures in polygon clipping — there are open issues and test files with 'copy 2', 'copy 3' variants that suggest workarounds rather than fixes. The LGPL-2.1 license is a practical problem for anyone linking this statically into a proprietary binary.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →