A Go library providing types and utilities for 2D geometric and geospatial data, including GeoJSON and Mapbox Vector Tiles.
Orb is a Go library that provides a set of types and utilities for working with 2D geometric and geospatial data. It solves the problem of handling geometry data in Go by offering idiomatic types for points, lines, polygons, and collections, along with tools for GeoJSON, Mapbox Vector Tiles, and database integration.
Go developers working with geospatial data, GIS applications, mapping services, or any project requiring 2D geometry manipulation and encoding/decoding of standard formats.
Developers choose Orb for its clean, idiomatic Go design that leverages native language features, its comprehensive set of sub-packages for geospatial operations, and its seamless integration with formats like GeoJSON and MVT without heavy dependencies.
Types and utilities for working with 2d geometry in Golang
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Geometry types like LineString are defined as slices, enabling natural use of Go built-ins like append and len, which simplifies code and improves readability, as shown in the README examples.
Provides full GeoJSON marshalling/unmarshalling with generic feature types for custom properties and MVT encoding/decoding, including projection and simplification, as detailed in the geojson and encoding/mvt sub-packages.
Allows direct scanning of WKB/EWKB data from databases into Orb types via the encoding/ewkb sub-package, reducing boilerplate code for spatial database interactions.
Offers a rich set of sub-packages for clipping, simplification, quadtrees, and more, enabling developers to use only the needed operations without heavy dependencies.
Focuses exclusively on 2D geometric data, lacking support for 3D spatial calculations or volumetric analysis, which limits its use in applications requiring elevation or complex 3D modeling.
While the core README is clear, understanding and integrating the various sub-packages requires navigating individual package documentation, which can be inconsistent and increase initial setup complexity.
As a pure Go library, it may not match the raw performance of lower-level C/C++ geospatial libraries for compute-intensive operations, though it benefits from Go's concurrency and ease of use.