zoukankan      html  css  js  c++  java
  • GPS数据转换为OneNet需要的数据

    GPS的数据格式是DDMM.MMMMMM

    获取到的GPS帧数据比如是:$GNRMC,112317.000,A,3438.1633,N,11224.4992,E,0.19,186.95,240916,,,A*7D
    说明
    经度112°24.4992′
    纬度34°38.1633′

    OneNet支持的GPS数据经测试是DD.DDDDD,因此需要转换

    经度为 112+24.4992/60 = 112.40832
    纬度为 34+38.1633/60 = 34.636055

    上传到GPS的数据流为

    {"datastreams":[{"id":"location","datapoints":[{"value":{"lon":112.40832,"lat":34.636055}}]}]}

    OneNet的GPS坐标是经过百度地图纠偏过的,所以这部分转换交给平台,直接上传上面的数据即可

    用Arduino测试下转换计算过程:

    char lon_str[] = "11224.4992";
    char lat_str[] = "3438.1633";
    
    
    double longitudeToOnenetFormat()
    {
      double lon_temp = 0;
      long lon_Onenet = 0;
      int dd_int = 0;
      long mm_int = 0;
      double lon_Onenet_double = 0;
    
      lon_temp = atof(lon_str);
      lon_Onenet =lon_temp*100000;  //转换为整数
    
      dd_int = lon_Onenet/10000000; //取出dd
    
      mm_int = lon_Onenet%10000000;  //取出MM部分
    
    
      lon_Onenet_double = dd_int + (double)mm_int/60/100000;//换算为Onenet格式
      return  lon_Onenet_double;
    }
    
    double latitudeToOnenetFormat()
    {
      double lat_temp = 0;
      long lat_Onenet = 0;
      int dd_int = 0;
      long mm_int = 0;
    
      double lat_Onenet_double = 0;
    
      lat_temp = atof(lat_str);
      lat_Onenet =lat_temp*100000;  //转换为整数
    
      dd_int = lat_Onenet/10000000; //取出dd
    
      mm_int = lat_Onenet%10000000;  //取出MM部分
    
      lat_Onenet_double = dd_int + (double)mm_int/60/100000;//换算为Onenet格式
      return  lat_Onenet_double;
    }
    
    void setup() {
      // put your setup code here, to run once:
    
      Serial.begin(9600);
      while (!Serial) {
        ; // wait for serial port to connect. Needed for Leonardo only
      }
    
      Serial.println(longitudeToOnenetFormat(),5);
      Serial.println(latitudeToOnenetFormat(),5);
    }
    
    void loop(){
    
    }
    
    

    串口计算后输出内容

    用到double类型,略微有偏差,这个偏差经过计算大概在地图上能差别1米内

    112.40832
    34.63605
    
  • 相关阅读:
    file & iconv
    UML类图思考
    Rust PhantomData and dropck rgb
    golang recover rgb
    帮上小学的女儿写的一篇文章春夏秋冬
    SAP B1在添加物料主数据时,出现错误提示‘xxxx代码已存在’的解决方法
    SAP B1外协物料处理方法
    SAP B1外发加工件成本的处理方法(曹玉平于奥莱照明)
    SAP B1存在的BUG
    交叉表的实殃及向SQL SERVER数据库中插入数据时,出现乱码或???(问号)的解决方法。
  • 原文地址:https://www.cnblogs.com/Mysterious/p/5904057.html
Copyright © 2011-2022 走看看