https://github.com/wroge/wgs84
A zero-dependency Go package for coordinate transformations.
https://github.com/wroge/wgs84
coordinate-conversion coordinate-converter coordinate-transformation epsg etrs89 geodetic-datum latitude longitude nad83 osgb36 utm web-mercator wgs84
Last synced: 5 months ago
JSON representation
A zero-dependency Go package for coordinate transformations.
- Host: GitHub
- URL: https://github.com/wroge/wgs84
- Owner: wroge
- License: mit
- Created: 2019-06-08T17:17:59.000Z (almost 7 years ago)
- Default Branch: v2
- Last Pushed: 2025-02-22T09:44:17.000Z (about 1 year ago)
- Last Synced: 2025-05-24T11:04:25.478Z (10 months ago)
- Topics: coordinate-conversion, coordinate-converter, coordinate-transformation, epsg, etrs89, geodetic-datum, latitude, longitude, nad83, osgb36, utm, web-mercator, wgs84
- Language: Go
- Homepage:
- Size: 15.7 MB
- Stars: 138
- Watchers: 2
- Forks: 18
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-go - WGS84 - Library for Coordinate Conversion and Transformation (ETRS89, OSGB36, NAD83, RGF93, Web Mercator, UTM). (Geographic / Search and Analytic Databases)
- awesome-Char - WGS84 - Library for Coordinate Conversion and Transformation (ETRS89, OSGB36, NAD83, RGF93, Web Mercator, UTM). (Geographic / Advanced Console UIs)
- awesome-go-cn - WGS84
- go-awesome-with-star-updatetime - WGS84 - Library for Coordinate Conversion and Transformation (ETRS89, OSGB36, NAD83, RGF93, Web Mercator, UTM). (Geographic / Advanced Console UIs)
- awesome-go-info - wgs84
- awesome-go-plus - WGS84 - Library for Coordinate Conversion and Transformation (ETRS89, OSGB36, NAD83, RGF93, Web Mercator, UTM).  (Geographic / Search and Analytic Databases)
- awesome-go-cn - WGS84
- awesome-go - wroge/wgs84 - dependency Go package for coordinate transformations. ☆`140` (Geographic / Search and Analytic Databases)
- awesome-go-cn - WGS84
- awesome-go - WGS84 - Library for Coordinate Conversion and Transformation (ETRS89, OSGB36, NAD83, RGF93, Web Mercator, UTM). (Geographic / Advanced Console UIs)
- fucking-awesome-go - WGS84 - Library for Coordinate Conversion and Transformation (ETRS89, OSGB36, NAD83, RGF93, Web Mercator, UTM). (Geographic / Search and Analytic Databases)
- awesome-go - WGS84 - Library for Coordinate Conversion and Transformation (ETRS89, OSGB36, NAD83, RGF93, Web Mercator, UTM). (Geographic / Search and Analytic Databases)
- awesome-go - WGS84 - Library for Coordinate Conversion and Transformation (ETRS89, OSGB36, NAD83, RGF93, Web Mercator, UTM). (Geographic / Search and Analytic Databases)
- awesome-go - WGS84 - Library for Coordinate Conversion and Transformation (ETRS89, OSGB36, NAD83, RGF93, Web Mercator, UTM). (Geographic / Search and Analytic Databases)
- awesome-go-extra - wgs84 - dependency Go package for coordinate transformations.|87|7|0|2019-06-08T17:17:59Z|2022-06-05T08:34:33Z| (Geographic / Advanced Console UIs)
- awesome-go-with-stars - WGS84 - 02-22 | (Geographic / Search and Analytic Databases)
- awesome-go - WGS84 - Library for Coordinate Conversion and Transformation (ETRS89, OSGB36, NAD83, RGF93, Web Mercator, UTM). (Geographic / Search and Analytic Databases)
- awesome-go - WGS84 - Library for Coordinate Conversion and Transformation (ETRS89, OSGB36, NAD83, RGF93, Web Mercator, UTM). (Geographic / Search and Analytic Databases)
README
[](https://pkg.go.dev/github.com/wroge/wgs84@v2.0.0-alpha.13)
## WGS84 - Coordinate Transformations
```
go get github.com/wroge/wgs84/v2@v2.0.0-alpha.13
```
I am currently in the process of rewriting the package. Some things will change and some new features will be added. One of these features is the support of NTv2 grid transformations and other projections, such as Krovak. If you would like to help or have any comments, please report them in the issues.
### Web Mercator
```go
package main
import (
"fmt"
"github.com/wroge/wgs84/v2"
)
func main() {
transform := wgs84.Transform(wgs84.EPSG(4326), wgs84.EPSG(3857)).Round(3)
east, north, _ := transform(10, 50, 0)
fmt.Println(east, north)
// 1.113194908e+06 6.446275841e+06
// echo 10 50 | cs2cs +init=epsg:4326 +to +init=epsg:3857 -d 3
// 1113194.908 6446275.841
}
```
### OSGB
```go
package main
import (
"fmt"
"github.com/wroge/wgs84/v2"
)
func main() {
transform := wgs84.Transform(wgs84.EPSG(4326), wgs84.EPSG(27700)).Round(3)
east, north, h := transform(-2.25, 52.25, 0)
fmt.Println(east, north, h)
// 383029.296 261341.615 0
// echo -2.25 52.25 | cs2cs +init=epsg:4326 +to +init=epsg:27700 -d 3
// 383029.296 261341.615 0.000
}
```