将ROS中的/sensor_msgs/NavSatFix数据导入google earth显示轨迹
将ros中的gps_msg数据导入google earth显示轨迹
1. 获取GPS数据
- 将ros中发布的gps topic输出到文本中
rostopic echo -p /gpsData>gpsData
得到如下格式的数据
- 数据格式转换
因为google earth支持的kml文件中需要导入longitude,latitude,altitude 格式的数据,所以需要对生成的数据文件进行处理,这里我使用python和正则表达式写了个小程序实现数据格式的转换
import re
f_in = open(r'/home/nico/gpsData')
f_out = open(r'/home/nico/gps_kml','w')
a=f_in.readlines()
for line in a[1:]:
m=re.match(r'^(\w*\,){6}([\d\-]*\.\d*)\,([\d\-]*\.\d*)\,([\d\-]*\.\d*)(\,\d*\.\d*){9}(\,\d*)$',line)
lon=m.group(3)
lat=m.group(2)
alt=m.group(4)
gpsData = lon+','+lat+','+alt+' '
f_out.write(gpsData)
f_in.close()
f_out.close()
输出的gps_kml文件即为转换后的结果
2. 将GPS数据导入kml模板显示轨迹点
因为要在google earth中显示轨迹,需要导入kml文件,链接中包含相关语法教程这里使用一个比较简便的方法,从google earth 中生成一个kml模板,把其中的gps数据替换成我们自己的数据即可,具体步骤如下:
在Temporary Places单击右键add一个Folder
此处命名为sia
在sia处单击右键选择add->path
这里可以自行设置轨迹的线宽颜色等,然后在google earth 上按住鼠标左键拖动绘制你想要显示的轨迹,完成后点击ok
保存
sia文件夹处单击右键选择save place as...则可以在目标文件夹看到生成的kml文件替换gps数据
找到kml文件中的coordinate处,将其中的gps数据替换成自己的gps数据即可以看到轨迹
注意替换成自己数据时保证数据格式为lon,lat,alt lon,lat,alt lon,lat,alt lon,lat,alt ...这样的格式,即经纬高之间用‘,’隔开,不可包含空格等符号,否则显示错误轨迹,gps点与点的三个坐标之间使用空格或换行符均可。
3. 轨迹显示
点击File->open->选择替换成自己数据后的kml文件
这是导入一组实验数据后生成的轨迹,符合实测情况
将ROS中的/sensor_msgs/NavSatFix数据导入google earth显示轨迹的更多相关文章
- html页面下拉列表中动态添加后台数据(格式化数据,显示出数据的层次感)
html页面下拉列表中动态添加后台数据(格式化数据,显示出数据的层次感) 效果图: 运行原理和技术: 当页面加载完毕,利用jquery向后台发送ajax请求,去后台拼接<select>&l ...
- DWG/DGN格式导入Arcgis;转化为shp格式;更改地理坐标;导入Google Earth【转】
其实本来,我就是需要把一个autocad的dwg/dgn格式的东西导入到google earth里面:但是首先我对dwg/dgn格式的东西根本就不熟:其次我拿到的dwg/dgn格式文件是用的HK8 ...
- java中 Excel表实现数据导入导出
需要引入依赖: <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> < ...
- docker中mysql数据库的数据导入和导出
导出数据 查看下 mysql 运行名称 docker ps 结果:  执行导出(备份)数据库命令: 由第一步的结果可知,我们的 mysql 运行在一个叫 mysql_server 的 docker ...
- 将页面中指定表格的数据导入到Excel中
function AutoExcel(){ var oXL = new ActiveXObject("Excel.Application"); //创建应该对象 var o ...
- java将数据库中查询到的数据导入到Excel表格
1.Maven需要的依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> ...
- ACCESS删除datagridview和数据库中的一条数据,同时更新显示的方法源码
//删除,行删除 private void 删除_Click(object sender, EventArgs e) { int dgrcount = dataGridView1.SelectedRo ...
- 在table中选中某条数据,让其显示对应详细信息
在第一个页面中使用 ccms.dialog.open({url:url+$(this).attr("code"),id:"dialogPic",width:10 ...
- 使用navicat for sqlserver 把excel中的数据导入到sqlserver数据库
以前记得使用excel向mysql中导入过数据,今天使用excel向sqlserver2005导入了数据,在此把做法记录一下 第一步:准备excel数据,在这个excel中有3个sheet,每个she ...
随机推荐
- java程序测试之字节流
package filestream; import java.io.FileInputStream; import java.io.FileNotFoundException; import jav ...
- iframe的优缺点?
1.`<iframe>`优点: 解决加载缓慢的第三方内容如图标和广告等的加载问题 Security sandbox 并行加载脚本 2.`<iframe>`的缺点: *ifram ...
- C#开发人员应该知道的13件事情
本文讲述了C#开发人员应该了解到的13件事情,希望对C#开发人员有所帮助. 1. 开发过程 开发过程是错误和缺陷开始的地方.使用工具可以帮助你在发布之后,解决掉一些问题. 编码标准 遵照编码标准可以编 ...
- KMP算法的正确性证明及一个小优化
直接把作业帖上来是不是有点不太公道呀... 无所谓啦反正各位看着开心就行 KMP算法 对于模式串$P$,建立其前缀函数$ N$ ,其中$N [q] $ 表示在$P$中,以$q$位置为结束的可以匹配到前 ...
- jQuery中绑定事件bind() on() live() one()的异同
jQuery中绑定事件的四种方法,他们可以同时绑定一个或多个事件 bind()-------------------------版本号小于3.0(在Jquery3.0中已经移除,相应unbind()也 ...
- 用OC和Swift一起说说二叉树
前言: 一:在计算机科学中,二叉树是每个节点最多有两个子树的树结构.通常子树被称作"左子树"(left subtree)和"右子树"(right subt ...
- Vue2.0音乐播放器
学习了几周的vuejs,学习的过程中做了一个音乐播放器WebApp (顺便听听音乐~) ,过程中也有借鉴过别人做的,感觉受益匪浅 链接 项目在线地址 : 音乐播放器 github : https:// ...
- VisualStudio2017下ASP.NET CORE的TagHelper智能提示解决办法
之前在VS2017RC中就发现该问题,安装了依赖,但是前段一直点不出来asp-for,后来查了发行说明, 才知道在VS2017rc中暂时无法解决,所以一直等到VS2017正式版的发布,急冲冲的装好, ...
- 巧用*_his表记录操作历史
文章转载自「开发者圆桌」一个关于开发者入门.进阶.踩坑的微信公众号 许多OLTP应用的开发者都知道,一些重要的操作要记录操作历史,把操作前的数据备份到历史表,然后再执行相应的修改操作.这样可以获取某个 ...
- asp.net mvc源码分析-Route的GetRouteData
我知道Route这里东西应该算路由,这里把它放到mvc里面有些不怎么合适,但是我想大家多数遇到路由都是在mvc的时候吧.首先我们还是来看看GetRouteData方法吧 [csharp] public ...