imposm3/proj/proj.go

31 lines
691 B
Go

package proj
import (
"github.com/omniscale/imposm3/element"
"math"
)
const pole = 6378137 * math.Pi // 20037508.342789244
func WgsToMerc(long, lat float64) (x, y float64) {
x = long * pole / 180.0
y = math.Log(math.Tan((90.0+lat)*math.Pi/360.0)) / math.Pi * pole
return x, y
}
func MercToWgs(x, y float64) (long, lat float64) {
long = 180.0 * x / pole
lat = 180.0 / math.Pi * (2*math.Atan(math.Exp((y/pole)*math.Pi)) - math.Pi/2)
return long, lat
}
func NodesToMerc(nodes []element.Node) {
for i, nd := range nodes {
nodes[i].Long, nodes[i].Lat = WgsToMerc(nd.Long, nd.Lat)
}
}
func NodeToMerc(node *element.Node) {
node.Long, node.Lat = WgsToMerc(node.Long, node.Lat)
}