{"id":16940703,"url":"https://github.com/twpayne/go-proj","last_synced_at":"2025-03-17T08:36:51.879Z","repository":{"id":57494534,"uuid":"48585868","full_name":"twpayne/go-proj","owner":"twpayne","description":"Package proj provides an interface to PROJ.","archived":false,"fork":false,"pushed_at":"2025-02-13T14:09:26.000Z","size":78,"stargazers_count":41,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-15T02:47:15.170Z","etag":null,"topics":["cartography","coordinate-ref","crs","geo","geospatial","gis","go","golang","proj","projection"],"latest_commit_sha":null,"homepage":"https://proj.org/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","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}},"created_at":"2015-12-25T16:33:23.000Z","updated_at":"2025-03-14T13:30:53.000Z","dependencies_parsed_at":"2023-12-30T11:31:40.555Z","dependency_job_id":"0f5119c5-6972-4323-91a9-e4f5e9cfa061","html_url":"https://github.com/twpayne/go-proj","commit_stats":{"total_commits":53,"total_committers":2,"mean_commits":26.5,"dds":"0.30188679245283023","last_synced_commit":"32de924a6a48b71771ed57af5f6ab02b43c859c6"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twpayne%2Fgo-proj","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twpayne%2Fgo-proj/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twpayne%2Fgo-proj/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twpayne%2Fgo-proj/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/twpayne","download_url":"https://codeload.github.com/twpayne/go-proj/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243852425,"owners_count":20358270,"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":["cartography","coordinate-ref","crs","geo","geospatial","gis","go","golang","proj","projection"],"created_at":"2024-10-13T21:07:43.943Z","updated_at":"2025-03-17T08:36:51.837Z","avatar_url":"https://github.com/twpayne.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# go-proj\n\n[![GoDoc](https://pkg.go.dev/badge/github.com/twpayne/go-proj/v11)](https://pkg.go.dev/github.com/twpayne/go-proj/v11)\n\nPackage go-proj provides an interface to [PROJ](https://proj.org).\n\n## Features\n\n* High performance bulk transformation of coordinates.\n* Idiomatic Go API, including complete error handling.\n* Supports PROJ versions 6 and upwards.\n* Compatible with all geometry libraries.\n* Convenience functions for handling coordinates as `[]float64`s.\n* Automatically handles C memory management.\n* Well tested.\n\n## Install\n\n```console\n$ go get github.com/twpayne/go-proj/v11\n```\n\nYou must also install the PROJ development headers and libraries. These are\ntypically in the package `libproj-dev` on Debian-like systems, `proj-devel` on\nRedHat-like systems, and `proj` in Homebrew.\n\n## Example\n\n```go\nfunc ExamplePJ_Forward() {\n\tpj, err := proj.NewCRSToCRS(\"EPSG:4326\", \"EPSG:3857\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\t// Start with Zürich's WGS84 latitude/longitude.\n\tzurich4326 := proj.NewCoord(47.374444, 8.541111, 408, 0)\n\tfmt.Printf(\"initial: x=%.6f y=%.6f z=%.6f\\n\", zurich4326.X(), zurich4326.Y(), zurich4326.Z())\n\n\t// Convert Zürich's WGS84 latitude/longitude to Web Mercator.\n\tzurich3857, err := pj.Forward(zurich4326)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Printf(\"forward: x=%.6f y=%.6f z=%.6f\\n\", zurich3857.X(), zurich3857.Y(), zurich3857.Z())\n\n\t// ...and convert back.\n\tzurich4326After, err := pj.Inverse(zurich3857)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Printf(\"inverse: x=%.6f y=%.6f z=%.6f\", zurich4326After.X(), zurich4326After.Y(), zurich4326After.Z())\n\n\t// Output:\n\t// initial: x=47.374444 y=8.541111 z=408.000000\n\t// forward: x=950792.127329 y=6003408.475803 z=408.000000\n\t// inverse: x=47.374444 y=8.541111 z=408.000000\n}\n```\n\n## Comparisons with other PROJ bindings\n\nThere are many existing bindings for PROJ. Generally speaking, these:\n\n* Only transform one coordinate a time, making them extremely slow when\n  transforming large number of coordinates.\n\n* Are tied to a single geometry representation.\n\n* Do not handle errors during transformation.\n\n* Are no longer maintained.\n\nThese existing bindings include:\n\n* [`github.com/everystreet/go-proj`](https://github.com/everystreet/go-proj),\n  latest commit December 11, 2021.\n\n* [`github.com/go-spatial/proj`](https://github.com/go-spatial/proj) is an\n  incomplete rewrite of PROJ4 in Go with the last commit on October 25, 2019.\n\n* [`github.com/omniscale/go-proj`](https://github.com/omniscale/go-proj) has\n  limited functionality.\n\n* [`github.com/pebbe/go-proj-4`](https://github.com/pebbe/go-proj-4) has limited\n  functionality with the last commit on February 20, 2021.\n\n* [`github.com/xeonx/proj4`](https://github.com/xeonx/proj4) has limited\n  functionality with a last commit on December 23, 2015.\n\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwpayne%2Fgo-proj","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftwpayne%2Fgo-proj","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwpayne%2Fgo-proj/lists"}