{"id":13551056,"url":"https://github.com/twpayne/go-geom","last_synced_at":"2025-05-13T18:10:50.497Z","repository":{"id":14757506,"uuid":"17478791","full_name":"twpayne/go-geom","owner":"twpayne","description":"Package geom implements efficient geometry types for geospatial applications.","archived":false,"fork":false,"pushed_at":"2025-04-14T20:31:45.000Z","size":1124,"stargazers_count":904,"open_issues_count":8,"forks_count":112,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-05-06T18:11:59.567Z","etag":null,"topics":["2d","3d","decoding","encoding","ewkb","geo","geojson","geom","geometry-functions","geospatial","gis","go","golang","kml","wkb","wkt"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/twpayne.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-03-06T13:39:28.000Z","updated_at":"2025-04-30T23:05:46.000Z","dependencies_parsed_at":"2023-02-14T02:16:06.394Z","dependency_job_id":"e989b60f-c799-45c8-a2da-e1b74b9abe67","html_url":"https://github.com/twpayne/go-geom","commit_stats":{"total_commits":543,"total_committers":23,"mean_commits":"23.608695652173914","dds":"0.19705340699815843","last_synced_commit":"66e0b2e440e1634b84fe5da7b469c6bf1e60f717"},"previous_names":["twpayne/gogeom2"],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twpayne%2Fgo-geom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twpayne%2Fgo-geom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twpayne%2Fgo-geom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twpayne%2Fgo-geom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/twpayne","download_url":"https://codeload.github.com/twpayne/go-geom/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254000854,"owners_count":21997442,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2d","3d","decoding","encoding","ewkb","geo","geojson","geom","geometry-functions","geospatial","gis","go","golang","kml","wkb","wkt"],"created_at":"2024-08-01T12:01:41.732Z","updated_at":"2025-05-13T18:10:50.475Z","avatar_url":"https://github.com/twpayne.png","language":"Go","funding_links":[],"categories":["Go","Geospatial Library","golang"],"sub_categories":["Go","Tools","[Tools](#tools-1)"],"readme":"# go-geom\n\n[![PkgGoDev](https://pkg.go.dev/badge/github.com/twpayne/go-geom)](https://pkg.go.dev/github.com/twpayne/go-geom)\n[![Go Report Card](https://goreportcard.com/badge/github.com/twpayne/go-geom)](https://goreportcard.com/report/github.com/twpayne/go-geom)\n\nPackage `geom` implements efficient geometry types for geospatial applications.\n\n## Key features\n\n* OpenGeo Consortium-style geometries.\n* Support for 2D and 3D geometries, measures (time and/or distance), and\n  unlimited extra dimensions.\n* Encoding and decoding of common geometry formats (GeoJSON, KML, WKB, and\n  others) including [`sql.Scanner`](https://pkg.go.dev/database/sql#Scanner) and\n  [`driver.Value`](https://pkg.go.dev/database/sql/driver#Value) interface\n  implementations for easy database integration.\n* [2D](https://pkg.go.dev/github.com/twpayne/go-geom/xy) and\n  [3D](https://pkg.go.dev/github.com/twpayne/go-geom/xyz) topology functions.\n* Efficient, cache-friendly [internal representation](INTERNALS.md).\n* Optional protection against malicious or malformed inputs.\n\n## Examples\n\n* [PostGIS, EWKB, and GeoJSON](https://github.com/twpayne/go-geom/tree/master/examples/postgis).\n\n## Detailed features\n\n### Geometry types\n\n* [Point](https://pkg.go.dev/github.com/twpayne/go-geom#Point)\n* [LineString](https://pkg.go.dev/github.com/twpayne/go-geom#LineString)\n* [Polygon](https://pkg.go.dev/github.com/twpayne/go-geom#Polygon)\n* [MultiPoint](https://pkg.go.dev/github.com/twpayne/go-geom#MultiPoint)\n* [MultiLineString](https://pkg.go.dev/github.com/twpayne/go-geom#MultiLineString)\n* [MultiPolygon](https://pkg.go.dev/github.com/twpayne/go-geom#MultiPolygon)\n* [GeometryCollection](https://pkg.go.dev/github.com/twpayne/go-geom#GeometryCollection)\n\n### Encoding and decoding\n\n* [GeoJSON](https://pkg.go.dev/github.com/twpayne/go-geom/encoding/geojson)\n* [IGC](https://pkg.go.dev/github.com/twpayne/go-geom/encoding/igc)\n* [KML](https://pkg.go.dev/github.com/twpayne/go-geom/encoding/kml) (encoding only)\n* [WKB](https://pkg.go.dev/github.com/twpayne/go-geom/encoding/wkb)\n* [EWKB](https://pkg.go.dev/github.com/twpayne/go-geom/encoding/ewkb)\n* [WKT](https://pkg.go.dev/github.com/twpayne/go-geom/encoding/wkt) (encoding only)\n* [WKB Hex](https://pkg.go.dev/github.com/twpayne/go-geom/encoding/wkbhex)\n* [EWKB Hex](https://pkg.go.dev/github.com/twpayne/go-geom/encoding/ewkbhex)\n\n### Geometry functions\n\n* [XY](https://pkg.go.dev/github.com/twpayne/go-geom/xy) 2D geometry functions\n* [XYZ](https://pkg.go.dev/github.com/twpayne/go-geom/xyz) 3D geometry functions\n\n## Protection against malicious or malformed inputs\n\nThe WKB and EWKB formats encode geometry sizes, and memory is allocated for\nthose geometries. If the input is malicious or malformed, the memory allocation\ncan be very large, leading to a memory starvation denial-of-service attack\nagainst the server. For example, a client might send a `MultiPoint` with header\nindicating that it contains 2^32-1 points. This will result in the server\nreading that geometry to allocate 2 × `sizeof(float64)` × (2^32-1) = 64GB of\nmemory to store those points. By default, malicious or malformed input\nprotection is disabled, but can be enabled by setting positive values for\n`wkbcommon.MaxGeometryElements`.\n\n## Related libraries\n\n* [github.com/twpayne/go-gpx](https://github.com/twpayne/go-gpx) GPX encoding and decoding\n* [github.com/twpayne/go-kml](https://github.com/twpayne/go-kml) KML encoding\n* [github.com/twpayne/go-polyline](https://github.com/twpayne/go-polyline) Google Maps Polyline encoding and decoding\n* [github.com/twpayne/go-vali](https://github.com/twpayne/go-vali) IGC validation\n\n## License\n\nBSD-2-Clause","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwpayne%2Fgo-geom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftwpayne%2Fgo-geom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwpayne%2Fgo-geom/lists"}