WGS84经纬度坐标6度分带高斯投影正算

WGS84坐标系下的经纬度坐标经过投影可以转换为平面坐标,本文采用高斯投影正算,6度带投影。

中央子午线的概念:
由于控制投影变形的大小,所以引入中央子午线的概念控制投影变形。

分带:投影带分为3度带与6度带

带号:
3度分带:以本初子午线东偏1.5度开始,3度为1带。
6度分带:本初子午线起,东偏6度为1带。

带号和中央子午线的关系:
若已知某点的经度为λ,则该点的6º带的带号N由下式计算:
N=int(λ/6)+1 (int为取整的意思)
中央子午线经度 Ln=6°N-3°
若已知某点的经度为L,则该点所在3º带的带号按下式计算:
n=L/3 (四舍五入)
中央子午线经度 Ln=3°n

C# WGS84 6度分带 高斯投影正算的公式如下:
lon lat 为WGS84坐标系下以度为单位的经纬度坐标
yval1 xval1 为投影后的平面坐标。

 //WGS84坐标系下6度带投影坐标
 iPI = Math.PI / 180.0; 3.1415926535898/180.0;   
 ZoneWide = 6; 6度带宽   
 a1 = 6378245.0; f1 = 1.0 / 298.257223563; //WGS84坐标系参数   
 //a1 = 6378245.0; f1 = 1.0 / 298.3; //54年北京坐标系参数
 //a2=6378140.0; f2=1/298.257; //80年西安坐标系参数   
 ProjNo = (int)(lon / ZoneWide);
 longitude0 = ProjNo * ZoneWide + ZoneWide / 2;
 longitude0 = longitude0 * iPI;
 latitude0 = 0;
 longitude1 = lon * iPI; //经度转换为弧度  
 latitude1 = lat * iPI; //纬度转换为弧度  
 e2 = 2 * f - f * f;
 ee = e2 * (1.0 - e2);
 NN = a / Math.Sqrt(1.0 - e2 * Math.Sin(latitude1) * Math.Sin(latitude1));
 T = Math.Tan(latitude1) * Math.Tan(latitude1);
 C = ee * Math.Cos(latitude1) * Math.Cos(latitude1);
 A = (longitude1 - longitude0) * Math.Cos(latitude1);
 //参数转换
 M = a * ((1 - e2 / 4 - 3 * e2 * e2 / 64 - 5 * e2 * e2 * e2 / 256) * latitude1 - (3 * e2 / 8 + 3 * e2 * e2 / 32 + 45 * e2 * e2 * e2 / 1024) * Math.Sin(2 * latitude1) + (15 * e2 * e2 / 256 + 45 * e2 * e2 * e2 / 1024) * Math.Sin(4 * latitude1) - (35 * e2 * e2 * e2 / 3072) * Math.Sin(6 * latitude1));
xval = NN * (A + (1 - T + C) * A * A * A / 6 + (5 - 18 * T + T * T + 72 * C - 58 * ee) * A * A * A * A * A / 120);
yval = M + NN * Math.Tan(latitude1) * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24 + (61 - 58 * T + T * T + 600 * C - 330 * ee) * A * A * A * A * A * A / 720);
X0 = 1000000L * (ProjNo + 1) + 500000L;
Y0 = 0;
xval = xval + X0;
yval = yval + Y0;
yval1 = Convert.ToDouble(xval.ToString().Substring(2, xval.ToString().Length - 3));
xval1 = Convert.ToDouble(yval.ToString().Substring(0, yval.ToString().Length - 5));
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值