墨卡托和经纬度相互转
2016-06-03 11:47:27 访问(1288) 赞(0) 踩(0)
/// <summary>
/// 经纬度转墨卡托
/// </summary>
/// <param name="lon"></param>
/// <param name="lat"></param>
/// <returns></returns>
public string LonLat2Mercator(double lon, double lat)
{
double M_PI = Math.PI;
double x = lon * 20037508.342789 / 180;
double y = Math.Log(Math.Tan((90 + lat) * M_PI / 360)) / (M_PI / 180);
y = y * 20037508.34789 / 180;
return x.ToString() + "," + y.ToString();
}
/// <summary>
/// 经纬度转墨卡托
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public SignInfoXY LonLat2MercatorInfo(SignInfoXY info)
{
double lon = info.X;
double lat = info.Y;
double M_PI = Math.PI;
double x = lon * 20037508.342789 / 180;
double y = Math.Log(Math.Tan((90 + lat) * M_PI / 360)) / (M_PI / 180);
y = y * 20037508.34789 / 180;
return new SignInfoXY(x, y);
}
/// <summary>
/// 墨卡托转经纬度
/// </summary>
/// <param name="mercatorX"></param>
/// <param name="mercatorY"></param>
/// <returns></returns>
public string Mercator2LonLat(double mercatorX, double mercatorY)
{
double M_PI = Math.PI;
double x = mercatorX / 20037508.34 * 180;
double y = mercatorY / 20037508.34 * 180;
y = 180 / M_PI * (2 * Math.Atan(Math.Exp(y * M_PI / 180)) - M_PI / 2);
return x.ToString() + "," + y.ToString();
}
/// <summary>
/// 墨卡托转经纬度
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public SignInfoXY Mercator2LonLatInfo(SignInfoXY info)
{
double mercatorX = info.X;
double mercatorY = info.Y;
double M_PI = Math.PI;
double x = mercatorX / 20037508.34 * 180;
double y = mercatorY / 20037508.34 * 180;
y = 180 / M_PI * (2 * Math.Atan(Math.Exp(y * M_PI / 180)) - M_PI / 2);
return new SignInfoXY(x, y);
}
标签:
墨卡托和经纬度相互转 


上一条:
下一条:
相关评论
发表评论