用c++代码写一个把笛卡尔坐标系转换成wgs84的示例

在进行坐标转换时,通常需要使用椭球体参数进行转换。WGS84坐标系中使用的椭球体参数如下:

  • 长半轴 a = 6378137.0 m
  • 短半轴 b = 6356752.314245 m
  • 扁率 f = (a-b)/a = 1/298.257223563

下面是一个使用C语言实现的示例代码,可以将笛卡尔坐标系的坐标转换为WGS84坐标系的坐标:

#include <stdio.h> #include <math.h>

#define PI 3.14159265358979323846 #define DEG_TO_RAD(deg) ((deg) * PI / 180.0) #define RAD_TO_DEG(rad) ((rad) * 180.0 / PI)

// 椭球体参数 #define A 6378137.0 #define B 6356752.314245 #define F ((A - B) / A)

// 笛卡尔坐标系的原点 #define X0 500000.0 #define Y0 0.0

// 将笛卡尔坐标系的坐标转换为WGS84坐标系的坐标 void cartesian_to_wgs84(double x, double y, double *lat, double *lon) { double e2 = F * (2 - F); double l = atan((y - Y0) / (x - X0)); double k = sqrt(1 - e2 * sin(l) * sin(l)); *lat = RAD_TO_DEG(atan((y - Y0) / (x - X0)) / (1 - e2 * k * k / 2.0)); *lon = RAD_TO_DEG(l / k); }

int main(int argc, char *argv[]) { double x = 600000.0; double y = 200000.0; double lat, lon;

// 将笛卡尔坐标系的坐标(x, y)转换为WGS84坐标系的坐标 cartesian_to_wgs84(x, y, &lat, &lon);

printf("(%f, %f) -> (%f, %f)\n", x, y, lat, lon);

return 0; }

在运

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值