Package geom implements efficient geometry types for geospatial applications.
- OpenGeo Consortium-style geometries.
- Support for 2D and 3D geometries, measures (time and/or distance), and unlimited extra dimensions.
- Encoding and decoding of common geometry formats (GeoJSON, KML, WKB, and
driver.Valueinterface implementations for easy database integration.
- 2D and 3D topology functions.
- Efficient, cache-friendly internal representation.
- Optional protection against malicious or malformed inputs.
Encoding and decoding
Protection against malicious or malformed inputs
The WKB and EWKB formats encode geometry sizes, and memory is allocated for
those geometries. If the input is malicious or malformed, the memory allocation
can be very large, leading to a memory starvation denial-of-service attack
against the server. For example, a client might send a
MultiPoint with header
indicating that it contains 2^32-1 points. This will result in the server
reading that geometry to allocate 2 * sizeof(float64) * (2^32-1) = 64GB of
memory to store those points. By default, malicious or malformed input
protection is disabled, but can be enabled by setting positive values for
- github.com/twpayne/go-gpx GPX encoding and decoding
- github.com/twpayne/go-kml KML encoding
- github.com/twpayne/go-polyline Google Maps Polyline encoding and decoding
- github.com/twpayne/go-vali IGC validation