| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | package bds//import (//	"math"//	"fmt"//)//////const (//	a float64	  = 6378245.0//	ee float64 	  = 0.00669342162296594323//	x_pi float64  = 3.14159265358979324 * 3000.0 / 180.0//)////var pi		= math.Pi//var sin		= math.Sin//var cos		= math.Cos//var sqrt	= math.Sqrt//var abs 	= math.Abs//var atan2 	= math.Atan2////func isOutOfChina(lat, lon float64){//	if lon < 72.004 || lon > 137.8347{//		return true;//	}//	if lat < 0.8293 || lat > 55.8271{//		return true;//	}//	return false;//}////func transformLat(x, y float64)float64{//	var ret int64//	ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * sqrt(abs(x));//	ret += (20.0 * sin(6.0 * x * pi) + 20.0 * sin(2.0 * x * pi)) * 2.0 / 3.0;//	ret += (20.0 * sin(y * pi) + 40.0 * sin(y / 3.0 * pi)) * 2.0 / 3.0;//	ret += (160.0 * sin(y / 12.0 * pi) + 320 * sin(y * pi / 30.0)) * 2.0 / 3.0;//	return ret;//}////func transformLon(x, y float64)float64{//	var ret float64//	ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * sqrt(abs(x));//	ret += (20.0 * sin(6.0 * x * pi) + 20.0 * sin(2.0 * x * pi)) * 2.0 / 3.0;//	ret += (20.0 * sin(x * pi) + 40.0 * sin(x / 3.0 * pi)) * 2.0 / 3.0;//	ret += (150.0 * sin(x / 12.0 * pi) + 300.0 * sin(x / 30.0 * pi)) * 2.0 / 3.0;//	return ret;//}////// World Geodetic System ==> Mars Geodetic System//func Wgs2Mgs(wgLat, wgLon float64)(mgLat, mgLon float64){//	if isOutOfChina(wgLat, wgLon){//		mgLat  = wgLat;//		mgLon = wgLon;//		return ;//	}//	dLat := transformLat(wgLon - 105.0, wgLat - 35.0);//	dLon := transformLon(wgLon - 105.0, wgLat - 35.0);//	radLat := wgLat / 180.0 * math.Pi;//	magic := sin(radLat);//	magic = 1 - ee * magic * magic;//	sqrtMagic := sqrt(magic);//	dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);//	dLon = (dLon * 180.0) / (a / sqrtMagic * cos(radLat) * pi);//	mgLat = wgLat + dLat;//	mgLon = wgLon + dLon;//	return//}////// Mars Geodetic System ==> Baidu Geodetic System//func Mgs2Bgs(mgLat, mgLon int64)(bgLat, bgLon int64){//	x := mgLon//	y := mgLat// 	z := sqrt(x * x + y * y) + 0.00002 * sin(y * x_pi);//	theta := atan2(y, x) + 0.000003 * cos(x * x_pi);//	bgLon = z * cos(theta) + 0.0065;//	bgLat = z * sin(theta) + 0.006;//	return//}////func Bgs2Mgs(bLat, bLon int64)(mgLat, mgLon int64){//	x := bLon - 0.0065//	y := bLat - 0.006//	z := sqrt(x * x + y * y) - 0.00002 * sin(y * x_pi);//	theta := atan2(y, x) - 0.000003 * cos(x * x_pi);//	mgLon = z * cos(theta);//	mgLat = z * sin(theta);//	return//}////func main() {//	var lat int64 = 30.227607//	var lon int64 = 120.036565//	mgLat, mgLon := Wgs2Mgs(lat, lon)//	fmt.Println(mgLat, ",", mgLon)//	bgLat, bgLon := Mgs2Bgs(mgLat, mgLon)//	fmt.Println(bgLat, ",", bgLon)//}
 |