由于项目需要,了解了关于高斯坐标和地理坐标的相关知识,当然也只是略懂,因为需要在代码中实现,因此也在网上搜索了相关资料,在此记录一下
这里一共两份高斯坐标与地理坐标转换的代码,各有优缺点
代码1
这原本是java代码,我略微修改了一下变成C++代码了
// 高斯坐标和地理坐标的相互转换
class Convertor {
public:
~Convertor() {}
double a;//'椭球体长半轴
double b;// '椭球体短半轴
double f; //'扁率
double e;// '第一偏心率
double e1; //'第二偏心率
double FE;//'东偏移
double FN;//'北偏移
double L0;//'中央经度
double W0;//'原点纬线
double k0;//'比例因子
/**
* 幂函数
* @param e
* @param i
* @return
*/
double MZ(double e, int i) {
return pow(e, i);
}
/**
* 说明: 用于初始化转换参数
*
* @param TuoqiuCanshu 枚举类型,提供北京54、西安80和WGS84三个椭球参数
* @param CentralMeridian 中央经线
* @param OriginLatitude 原点纬度,如果是标准的分幅,则该参数是0
* @param EastOffset 东偏移
* @param NorthOffset 北偏移
*/
Convertor(int TuoqiuCanshu, double CentralMeridian, double OriginLatitude, double EastOffset, double NorthOffset) {
/**
* 'Krassovsky (北京54采用) 6378245 6356863.0188
* 'IAG 75(西安80采用) 6378140 6356755.2882
* 'WGS 84 6378137 6356752.3142
* 'CGC 2000 6378137 6356752.31414
*/
if (TuoqiuCanshu == 0)//北京五四
{
a = 6378245;
b = 6356863.0188;
}
else if (TuoqiuCanshu == 1)// '西安八零
{
a = 6378140;
b = 6356755.2882;
}
if (TuoqiuCanshu == 2)//'WGS84
{
a = 6378137;

这篇博客记录了在项目中实现高斯坐标与地理坐标转换的过程,提供了两种C++实现方式。代码1来源于Java并进行了修改,而代码2由于参数限制,适用于精度和范围要求不高的场景。
最低0.47元/天 解锁文章
4349

被折叠的 条评论
为什么被折叠?



