admin管理员组文章数量:1536362
2024年6月13日发(作者:)
龙源期刊网
高精度差分在高德地图上的多点实时定位
作者:李庭威 王峰 汪进 夏佩 邱文添 龙保任 李学易
来源:《电脑知识与技术》2017年第23期
摘要:为了将高精度差分位置信息显示在高德地图上,通过搭建基于Python的服务器读
取rtklib传来的位置信息,提取出经纬度并传给浏览器。通过编写基于JavaScfipt的HTML文
件,调用高德地图API,利用AJAX技术,在地图上实时更新测量点的位置。实验结果实现了
多点高精度差分定位的可视化。
关键词:rtklib;Python服务器;高德地图;JavaScript;实时定位
1背景
GPS(Global Positioning svstem)全球定位系统现在已经广泛应用于各行各业,可以提供
覆盖全球的导航以及定位服务。高精度的GPS测量必须要采用载波相位观测值。RTK定位技
术基于载波相位观测值,能够实时地提供测量点的三维定位坐标,而且可以精确到厘米级。
本项目用到的RTKLIB是日本东京海洋大学(Tokyo University of Marine Science and
Technology)开发的开源程序包,供标准的GNSS全球导航系统使用。高德地图是高德软件开
发的一款免费在线导航产品,被广泛应用于智能手机和电脑上。由于RTKLIB一次只能输出一
个信号,所以本项目通过打开多个RT—KLIB窗口并设置不同的输出端口,传给基于Python
开发的多线程后台。为了能在智能手机和电脑上都能实时显示定位点的位置,本项目开发了适
用于多平台多终端的前端页面,并利用AJAX(Asynchronous Javascript And XML,异步的
Javascript与XML技术),使得不用刷新页面也能在浏览器页面的高德地图中实时更新位置。
2高德地图多点实时定位的实现
2.1搭建基于Python的服务器
Python是一种面向对象、直译式的电脑程序语言。它包含了一组功能完备的标准库,能够
轻松完成很多常见的任务。本项目主要用到了Bottle框架。Bottle是一个简单高效的遵循
WSGI的微型python Web框架。说微型,是因为它只有一个文件。本项目用了Bottle框架的
Route和Server特性,Route能把请求映射到函数,建立简洁动态的URLs。在浏览器请求URL
的时候,bottle框架会根据URL调用与之相应的函数,然后将函数的返回值发送到浏览器。打
开RTKLIB并设置好端口后,需要将数据传给Python后台,这里需要用到TCP(传输控制协
议)和IPf网际协议)。所以在Python中需要用到socket编程。可以先创建TCP/IP套接字并
绑定本地端口(RTKLIB传送数据来的端口),然后接收从指定端口传送过来的数据。
因为要接受多个RTKLIB端口传送过来的数据,所以这一步骤需要重复几次。由于
RTKLIB里的经纬度格式与高德地图中的不相同,所以在这里需要对RTKLIB传来的经纬度信
龙源期刊网
息进行转化。通过在代码中添加print语句,可以在窗口中实时显示各点的经纬度信息(本项
目用到了3个点),如图1所示。得到的经纬度信息需要实时传送给前端页面,所以需要用到
Pvthon的ison模块。JSON是一种轻量级的数据交换语言,以文字为基础,且易于让人阅读。
尽管JSON是Javascript的一个子集,但JSON是独立于语言的文本格式。Python的json模块
提供了一种很简单的方式来编码和解码JSON数据,可以利用{方法可以对简单数据
类型进行编码,然后将编码后的JSON数据返回给前端页面。此外,在运行Pvthon后台时,还
需要绑定与前端页面通信的本地端口并自动打开前端的HTML文件。
2.2编写基于Javascfipt的HTML文件
JavaScript是一门面向对象的脚本语言,被广泛应用于web应用开发。它常被用来向网页
添加各种各样的动态功能,让用户能享受到流畅美观的浏览器页面。为了提高编写效率,本项
目采用了JavaScript的jQuery框架。iQuery封装了JavaScript常用的功能代码,优化了对
HTML文档的操作、事件的处理以及Ajax交互。我们利用iQuery框架可以很方便地获取从
Pvthon后台传来的json格式的数据。
为了提高网站的美观度以及适应各种大小的浏览器页面,我们采用了时下流行的Bootstrap
框架。Bootstrap来自Twitter,是最受欢迎的HTML、CSS和JS框架,用于开发响应式布局、
移动设备优先的WEB项目。利用Bootstrap中的栅格系统可以轻松布局适应多种屏幕的浏览器
界面。我们还调用了Bootstrap中的字体和按钮样式,让整个页面看上去更美观。
由于我们要在高德地图上显示出测量点的位置,所以必须要调用高德地图JavaSeriptAPI,
它是由iavaScript语言编写的应用程序接口。我们需要编写在高德地图中添加点的函数,这些
点的图标可以从高德提供的网址上实时下载,为了区分不同测量点的序号,我们必须调用不同
的图标。为了实时更新测量点的位置,我们调用了javaScript中的定时器函数,使得前端页面
每隔半秒就向后台请求一次数据。为了能把所有测量点合理的全部显示在浏览器视口中,我们
写了一个按钮,点击它可以调用高德地图API中的setFitView函数,自动的缩放地图,从而显
示所有测量点的位置。
2.3定位结果显示
服务器和浏览器是通过HTTP(Hypertext Transfer Protocol,超文本传输协议)协议通信
的。浏览器向服务器发送HTTP请求,服务器会在HTTP响应中回送所请求的数据。所幸的
是,使用Pvthon自带的标准库BaseHTTPServer就可以快速地搭建一个微型的HTTP服务器。
搭建成功后,点击最下方的地图自适应显示按钮,成功地把高精度差分测量点显示在浏览器中
了,如图2所示。
3结束语
龙源期刊网
高精度差分能实现厘米级的定位,但是rtklib输出的信息并不直观。本项目通过编写多线
程的Pvthon服务器,从rtklib输出的信息中提取出经纬度,并传送给浏览器。在编写浏览器
HTML文件时,我们采用了最新的Bootstrap框架,调用了高德地图最新的API,将高精度差
分测量点的位置信息直观地显示在了高德地图上。
版权声明:本文标题:高精度差分在高德地图上的多点实时定位 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1718223088a655221.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论