1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 地理坐标系:GCJ02和BD09互转

地理坐标系:GCJ02和BD09互转

时间:2024-01-20 10:41:05

相关推荐

地理坐标系:GCJ02和BD09互转

地理坐标系介绍

主流地理坐标系、投影坐标系和投影方法的区别和联系_ 一只博客-CSDN博客/qq_42276781/article/details/122597363

关于坐标系的转换,可以参考如下两个开源项目gcoord和coordtransform

GitHub - hujiulong/gcoord: 地理坐标系转换工具/hujiulong/gcoordGitHub - wandergis/coordtransform: 提供了百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换/wandergis/coordtransform我将gcoord中的GCJ02和BD09互转的代码改写成了C语言的形式,便于大家理解。

#include<stdio.h>#include<math.h>#include<stdlib.h>#define PI 3.1415926535897932384626double baiduFactor = (PI * 3000.0) / 180.0;double* BD09ToGCJ02(double lon_BD, double lat_BD){double *GCJ = (double *)malloc(2*sizeof(double));double x = lon_BD - 0.0065;double y = lat_BD - 0.006;double z = sqrt(x * x + y * y) - 0.00002 * sin(y * baiduFactor);double theta = atan2(y, x) - 0.000003 * cos(x * baiduFactor);GCJ[0] = z * cos(theta);GCJ[1] = z * sin(theta);return GCJ;}double* GCJ02ToBD09(double lon_GCJ, double lat_GCJ){double *BD = (double *)malloc(2*sizeof(double));double z = sqrt(lon_GCJ * lon_GCJ + lat_GCJ * lat_GCJ) + 0.00002 * sin(lat_GCJ * baiduFactor);double theta = atan2(lat_GCJ, lon_GCJ) + 0.000003 * cos(lon_GCJ * baiduFactor);BD[0] = z * cos(theta) + 0.0065;BD[1] = z * sin(theta) + 0.006;return BD;}//testint main(){double lon = 116.487762;double lat = 39.991447;double *p = BD09ToGCJ02(lon, lat);printf("%.10f, %.10f", p[0], p[1]);}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。