GPS数据转换为OneNet需要的数据
2024-09-03 07:06:30
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
最新文章
- SecureCRT中设置 \n 为回车换行,和 \r\n 的行为一致
- [Nhibernate]二级缓存(一)
- Java项目多数据源配置
- Datatable转换Json
- 【数论】二进制GCD
- miniproject black jack--Fail
- int a[5]={1,2,3,4,5}; int *p=(int*)(&;a+1); printf(";%d";,*(p-1)); 答案为什么是5?
- fill与memset的区别
- 当xcode里点运行出现treating unicode character as whites
- Java 8:如何使用流方式查询数据库?
- Oracle VM VirtualBox 随系统自动启动虚拟机的方法
- WPF 3D:MeshGeometry3D的定义和光照
- 内核对象kobject和sysfs(1)——概述
- Windows下Java如何调用本地获取mac地址
- Git里有些费解的术语和设计
- Echarts CPU监控 (折线仪表盘,图例混搭)
- 类型转化&;WCF不同binding的区别
- windows下通过VNC图形化访问Ubuntu桌面环境
- 设计模式(11)--Flyweight(享元模式)--结构型
- table表格frame属性
热门文章
- Laravel之视图和Blade模板引擎
- 斯坦福《机器学习》Lesson4感想--1、Logistic回归中的牛顿方法
- Windows web服务器搭建---阿里云
- iOS时间间隔判断
- JS 正则 钱
- AngularJS路由 $state服务、路由事件、获取路由参数
- stage3D基础五-----Working with 3D cameras(转)
- 篇章三:[AngularJS] 使用AngularCSS動態載入CSS
- Apache + Tomcat集群 + 负载均衡
- 机器学习5—logistic回归学习笔记