imposm3/model/nodes.go

43 lines
869 B
Go

package model
import "code.google.com/p/goprotobuf/proto"
import "log"
// type Node struct {
// Id int64
// Tags map[string]string
// Lon uint32
// Lat uint32
// }
const COORD_FACTOR float64 = 11930464.7083 // ((2<<31)-1)/360.0
func coordToInt(coord float64) uint32 {
return uint32((coord + 180.0) * COORD_FACTOR)
}
func intToCoord(coord uint32) float64 {
return float64((float64(coord) / COORD_FACTOR) - 180.0)
}
func (this *Node) WgsCoord() (lon float64, lat float64) {
lon = intToCoord(this.GetLong())
lat = intToCoord(this.GetLat())
return
}
func (this *Node) FromWgsCoord(lon float64, lat float64) {
longInt := coordToInt(lon)
latInt := coordToInt(lat)
this.Long = &longInt
this.Lat = &latInt
}
func (this *Way) Marshal() []byte {
data, err := proto.Marshal(this)
if err != nil {
log.Fatal("marshaling error: ", err)
}
return data
}