前言
在做定位服务的时候,惯导设备的经纬度数据经常以度分格式的形式输出,而我们要进行业务处理时,则经常要将度分格式转化为度的格式,方便计算。在查找了一些资料之后,记录了解决的办法,方便后面查看。
一、度分秒是什么?
通过百度百科可知:在数学中,表示角度的度、分、秒分别使用°、′、″符号进行表示,度与分 、分与秒之间一律采用六十进制,1°=60′,1′=60″ ,1°=3600″。经纬度是经度与纬度组成的坐标系,是一种利用三度空间的球面来定义地球上的空间的球面坐标系统,能够标示地球上的任何一个位置。
二、转化方法
1.度转化成度分格式
度分格式的经纬度的转换可以如下实现:
将度数的整数部分(例如从dd.ddddd中的dd)乘以100,作为分数部分。将度数的小数部分(例如从dd.ddddd中的.ddddd)乘以60,并与整数部分相加,即得到dddmm.mmmm。
具体代码如下:
#include <stdio.h>#include <math.h>void convert_to_dddmm_mmmm(double ddd, int *dddmm, double *mmmm){*dddmm = (int)ddd;*mmmm = (ddd - *dddmm) * 60;}int main(void){double ddd = 123.456789;int dddmm;double mmmm;convert_to_dddmm_mmmm(ddd, &dddmm, &mmmm);printf("%.6f -> %d %.4f\n", ddd, dddmm, mmmm);return 0;}
2.度分格式转化成度格式
读取度、分和秒的值将分和秒的值除以60,得到小数部分将度的值加上小数部分得到的结果就是度格式的值以下是从dddmm.mmmm格式转换为dd.ddddd格式的C语言代码:
#include <stdio.h>#include <math.h>void convert_to_dd_ddddd(int dddmm, double mmmm, double *ddd){*ddd = dddmm + mmmm / 60;}int main(void){int dddmm = 123;double mmmm = 45.6789;double ddd;convert_to_dd_ddddd(dddmm, mmmm, &ddd);printf("%d %.4f -> %.6f\n", dddmm, mmmm, ddd);return 0;}
总结
以上就是经纬度度与度分格式相互转化的方法,