58 lines
2.1 KiB
C#
58 lines
2.1 KiB
C#
|
|
using NetTopologySuite.Geometries;
|
|||
|
|
|
|||
|
|
namespace LY.App.Common
|
|||
|
|
{
|
|||
|
|
public static class CoordConvert
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 经纬度转Web墨卡托(单位:米)
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="longitude">经度</param>
|
|||
|
|
/// <param name="latitude">纬度</param>
|
|||
|
|
/// <returns>转换后的位置</returns>
|
|||
|
|
public static CoordPoint WGS84ToMercator(double lon, double lat)
|
|||
|
|
{
|
|||
|
|
var x = lon * Math.PI / 180 * Parameters.LongRadius;
|
|||
|
|
var param = lat * Math.PI / 180;
|
|||
|
|
var y = Parameters.LongRadius / 2 * Math.Log((1.0 + Math.Sin(param)) / (1.0 - Math.Sin(param)));
|
|||
|
|
return new CoordPoint(x, y);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 经纬度转Web墨卡托(单位:米)
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="longitude">经度</param>
|
|||
|
|
/// <param name="latitude">纬度</param>
|
|||
|
|
/// <returns>转换后的位置</returns>
|
|||
|
|
public static CoordPoint WGS84ToMercator(Coordinate coord)
|
|||
|
|
{
|
|||
|
|
return WGS84ToMercator(coord.Lon, coord.Lat);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Web墨卡托转经纬度
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="x">X坐标值(单位:米)</param>
|
|||
|
|
/// <param name="y">Y坐标值(单位:米)</param>
|
|||
|
|
/// <returns>转换后的位置</returns>
|
|||
|
|
public static Coordinate MercatorToWGS84(double x, double y)
|
|||
|
|
{
|
|||
|
|
var lon = x / Parameters.MercatorLength * 180;
|
|||
|
|
var lat = y / Parameters.MercatorLength * 180;
|
|||
|
|
lat = 180 / Math.PI * (2 * Math.Atan(Math.Exp(lat * Math.PI / 180)) - Math.PI / 2);
|
|||
|
|
return new Coordinate(lon, lat);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Web墨卡托转经纬度
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="x">X坐标值(单位:米)</param>
|
|||
|
|
/// <param name="y">Y坐标值(单位:米)</param>
|
|||
|
|
/// <returns>转换后的位置</returns>
|
|||
|
|
public static Coordinate MercatorToWGS84(CoordPoint point)
|
|||
|
|
{
|
|||
|
|
return MercatorToWGS84(point.X, point.Y);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|