Bug#857282: ITP: golang-github-golang-geo -- S2 geometry library in Go
Owner: Michael Stapelberg <email@example.com>
* Package name : golang-github-golang-geo
Version : 0.0~git20170112.0.f819552-1
Upstream Author : Google Inc.
* URL : https://github.com/golang/geo
* License : Apache-2.0
Programming Lang: Go
Description : S2 geometry library in Go
S2 is a library for manipulating geometric shapes. Unlike many geometry
libraries, S2 is primarily designed to work with spherical geometry, i.e.,
shapes drawn on a sphere rather than on a planar 2D map. (In fact, the name S2
is derived from the mathematical notation for the unit sphere.) This makes it
especially suitable for working with geographic data.
The library consists of:
* Basic representations of angles, intervals, latitude-longitude points, unit
3D vectors, and conversions among them.
* Various shapes over the unit sphere, such as spherical caps ("discs"),
latitude-longitude rectangles, polylines, and polygons. These are
collectively known as "regions".
* Support for spatial indexing of collections of geometry, and algorithms for
testing containment, finding nearby objects, finding intersections, etc.
* A hierarchical decomposition of the sphere into regions called "cells". The
hierarchy starts with the six faces of a projected cube and recursively
subdivides them in a quadtree-like fashion.
* The ability to approximate arbitrary regions as a collection of cells. This
is useful for building inverted indexes that allow queries over arbitrarily
shaped regions. The implementations attempt to be precise both in terms of
mathematical definitions (e.g. whether regions include their boundaries,
representations of empty and full regions) and numerical accuracy (e.g.
avoiding cancellation error).
Note that the intent of this library is to represent geometry as a
mathematical abstraction. For example, although the unit sphere is
obviously a useful approximation for the Earth's surface, functions that
are specifically related to geography are not part of the core library
(e.g. easting/northing conversions, ellipsoid approximations, geodetic
vs. geocentric coordinates, etc).
github.com/golang/geo is a dependency of cloud.google.com/go, which is a
dependency of upspin.