经纬度度与度分格式转换方法详解

前言

        在做定位服务的时候,惯导设备的经纬度数据经常以度分格式的形式输出,而我们要进行业务处理时,则经常要将度分格式转化为度的格式,方便计算。在查找了一些资料之后,记录了解决的办法,方便后面查看。


一、度分秒是什么?

        通过百度百科可知:在数学中,表示角度的度、分、秒分别使用°、′、″符号进行表示,度与分 、分与秒之间一律采用六十进制,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;
    }
    

    总结

    以上就是经纬度度与度分格式相互转化的方法,

    物联沃分享整理
    物联沃-IOTWORD物联网 » 经纬度度与度分格式转换方法详解

    发表评论