Description
Bidirectional UTM-WGS84 converter for golang. It's port from UTM python version by Tobias Bieniek
UTM alternatives and similar packages
Based on the "GIS" category.
Alternatively, view UTM alternatives based on common mentions on social networks and blogs.
-
go-geom
Package geom implements efficient geometry types for geospatial applications. -
polyline
Package polyline implements a Google Maps Encoding Polyline encoder and decoder. -
go-kml
Package kml provides convenience methods for creating and writing KML documents. -
go-sypexgeo
SypexGeo library for Go (provides access data from SypexGeo IP database files) -
go-gpx
Package gpx provides convenience types for reading and writing GPX files.
Access the most powerful time series database as a service
Do you think we are missing an alternative of UTM or a related project?
Popular Comparisons
README
UTM
Bidirectional UTM-WGS84 converter for golang. It use logic from UTM python version by Tobias Bieniek
Usage
go get github.com/im7mortal/UTM
Convert a latitude, longitude into an UTM coordinate
easting, northing, zoneNumber, zoneLetter, err := UTM.FromLatLon(40.71435, -74.00597, false)
Convert an UTM coordinate into a latitude, longitude.
latitude, longitude, err := UTM.ToLatLon(377486, 6296562, 30, "V")
Since the zone letter is not strictly needed for the conversion you may also
the northern
parameter instead, which is a named parameter and can be set
to either true
or false
. In this case you should define fields clearly(!).
You can't set ZoneLetter or northern both.
latitude, longitude, err := UTM.ToLatLon(377486, 6296562, 30, "", false)
The UTM coordinate system is explained on this Wikipedia page
Speed
Benchmark | Amount of iterations | Average speed |
---|---|---|
ToLatLon | 10000000 | 123 ns/op |
ToLatLonWithNorthern | 10000000 | 121 ns/op |
FromLatLon | 20000000 | 80.6 ns/op |
go test -bench=.
Full example
package main
import (
"github.com/im7mortal/UTM"
"fmt"
)
func main() {
easting, northing, zoneNumber, zoneLetter, err := UTM.FromLatLon(40.71435, -74.00597, false)
if err != nil {
panic(err.Error())
}
fmt.Println(
fmt.Sprintf(
"Easting: %d; Northing: %d; ZoneNumber: %d; ZoneLetter: %s;",
easting,
northing,
zoneNumber,
zoneLetter,
))
easting, northing, zoneNumber, zoneLetter, err = UTM.FromLatLon(40.71435, -74.00597, true)
if err != nil {
panic(err.Error())
}
fmt.Println(
fmt.Sprintf(
"Easting: %d; Northing: %d; ZoneNumber: %d; ZoneLetter: %s;",
easting,
northing,
zoneNumber,
zoneLetter,
))
latitude, longitude, err := UTM.ToLatLon(377486, 6296562, 30, "", true)
fmt.Println(fmt.Sprintf("Latitude: %.5f; Longitude: %.5f;", latitude, longitude))
latitude, longitude, err = UTM.ToLatLon(377486, 6296562, 30, "V")
fmt.Println(fmt.Sprintf("Latitude: %.5f; Longitude: %.5f;", latitude, longitude))
}
Authors
- Petr Lozhkin [email protected]