概括:坐标转换包括同一基准面下的坐标转换和不同基准面之间的转换。
同一基准面:同一基准面下分为高斯正算和反算,正算就是大地转平面,反算就是平面转大地。
不同基准面:不同基准面之间的转换,需要首先按照三参数或者七参数进行两个椭球的变换(平移,旋转,缩放),转换参数的正负和单位极易弄错。
平面X,Y坐标:测量学中平面坐标的X轴为纵轴,以北为正方向,平行于中央子午线,Y为横轴,以东为正方向,平行于赤道。
ArcGIS中的平面坐标系统正好与之相反。
不同基准面之间转换,下面以WGS84转Hong_Kong_1980_Grid(一种地方投影坐标系)为例说明。
1、WGS84大地坐标转WGS84空间直角坐标
public static void BLHtoXYZ(double B, double L, double H, double aAxis, double bAxis, ref double targetX, ref double targetY, ref double targetZ)
2、第二步转换,空间直角坐标系里七参数转换
public static void TransPara7(double targetX, double targetY, double targetZ, ref double newX, ref double newY, ref double newZ, TransParaSeven transParaSeven)
3、第三步转换,空间直接坐标系转换为大地坐标系
public static void XYZtoBLH(double X, double Y, double Z, double aAxis, double bAxis, ref double targetB, ref double targetL, ref double targetZ)
4、通用坐标转换,高斯正算,同一基准面下大地转平面
/// <summary> /// 通用坐标转换,高斯正算,同一基准面下大地转平面 /// </summary> /// <param name="longitude">原经度</param> /// <param name="latitude">原纬度</param> /// <param name="a">长半轴</param> /// <param name="b">短半轴</param> /// <param name="m_Central_Meridian">中央经线</param> /// <param name="latitudeOrige">起始纬度</param> /// <param name="false_Easting">东</param> /// <param name="false_Northing">北</param> /// <param name="scale_Factor">比例</param> /// <param name="X">结果X</param> /// <param name="Y">结果Y</param> public static void GaussBL2XYdifang(double longitude, double latitude, double a, double b, double m_Central_Meridian, double latitudeOrige,double false_Easting,double false_Northing,double scale_Factor, ref double X, ref double Y)
测试结果(WGS84转香港80地方坐标系),转换精度很高:
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/13171.html