怎样从GPS模块中读取信息

怎样从GPS模块中读取信息,第1张

GPS模块只要处于工作状态就会源源不断地把接收并计算出的GPS导航定位信息通过串口传送单片机中,在没有进一步处理之前,传送的数据是一长串字节流信息。因此必须经过程序将其转化为有实际意义的;可供高层决策使用的定位信息数据。与其他通信协议类似,GPS模块都遵循NMEA-0183协议。NMEA-0183的数据信息有十几种,这些信息的作用分别是:$GPGGA:输出GPS的定位信息;$GPGSA:输出卫星DOP值信息;$GPGSV:输出可见的卫星信息;$GPRMC:输出最小数据量的GPS信息;$GPVTG:地面速度信息;$GPGLL:输出大地坐标信息;$GPZDA:输出UTC时间信息;$GPGST:输出定位标准差信息;$GPALM:输出卫星星历信息;通过串口输出NMEA-0183协议格式的数据,解析获得下述信息:

◆定位:提供经度、纬度、高度(海拔)信息;

◆授时:提供精确UTC时间,闰秒修正预报;提供日期信息;

◆其他:提供速度,航向(运动方向)信息;

◆卫星信息:如PRN,SNR,仰角,方位角等;

1 什么是网络服务?

Google Maps API 提供这些网络服务作为从外部服务中请求 Google Maps API 数据以及在您的地图应用程序中使用它们的接口。这些网络服务使用特定网址的 >

一个典型的网络服务请求通常采用以下形式:

htt p:/ /mapsg oogl eco m/maps/api/service/outputparameters

其中 service 表示所请求的特定服务,output 表示响应格式(通常为 json 或 xml)。

2地址解析与反地址解析

地址解析是将地址(如“1600 Amphitheatre Parkway, Mountain View, CA”)转换为地理坐标(如纬度 37423021 和经度 -122083739)的过程,您可以根据转换得到的坐标放置标记或定位地图。Google Geocoding API 可让您通过 >

3 地址查询(反向地址解析)请求

Google Geocoding API 请求必须采用以下形式:

htt p:/ /mapsg oogl ec om/maps/api/geocode/outputparameters

其中,output 可以是以下值之一:

json(建议)表示以 JavaScript 对象表示法 (JSON) 的形式输出

xml 表示以 XML 的形式输出

有些参数是必需的,有些是可选的。根据网址的标准,所有参数均使用字符 & (&) 分隔。下面枚举了这些参数及其可能的值。

Google Geocoding API 使用以下网址参数定义地址查询请求:

latlng(必需)- 您希望获取的、距离最近的、可人工读取地址的纬度/经度文本值。

bounds(可选)- 要在其中更显著地偏移地址解析结果的可视区域的边框。

region(可选)- 区域代码,指定为 ccTLD(“顶级域”)双字符值。

language(可选)- 传回结果时所使用的语言。请注意,我们会经常更新支持的语言,因此该列表可能并不详尽。如果未提供 language,地址解析器将尝试尽可能使用发送请求的区域的本地语言。

sensor(必需)- 指示地址解析请求是否来自装有位置传感器的设备。该值必须为 true 或 false。

注意:bounds 和 region 参数只会影响地址解析器返回的结果,但不能对其进行完全限制。

实例一:创建查询坐标(39910093,116403945)的地址信息的请求,要求以xml格式输出响应,语言为简体中文(zh-CN)。

注意:经纬度书写的顺序为(纬度,经度)。

实例二:利用C#在客户端程序中创建上述请求。

1 WebClient client = new WebClient();

2 string url = "htt p:/ /m apsg oogl eco m/maps/api/geocode/xm llatln g=39910  093,116403945&language=zh-CN&sensor=false";

3 clientEncoding = EncodingUTF8;

4 string responseTest = clientDownloadString(url);

5 地址查询(反向地址解析)响应

地址解析响应将以网址请求路径中的 output 标记所指示的格式传回。XML 响应包含一个 <GeocodeResponse>和两个顶级元素:

<status> 包含请求中状态代码。(非常重要)

零或多个 <result> 元素,每个元素都包含单独的一组地址解析地址信息和几何图形信息。

地址解析响应对象中的 "status" 字段包含请求的状态,并且可能包含调试信息,以帮助您追溯地址解析未正常工作的原因。

"status" 字段可能包含以下值:

"OK" 表示未发生错误;地址成功进行了解析并且至少传回了一个地址解析结果。(判断请求是否成功响应)

"ZERO_RESULTS" 表示地址解析成功,但未返回结果。如果地址解析过程中传递的偏远位置 address 或 latlng 并不存在,则会出现这种情况。

"OVER_QUERY_LIMIT" 表示您超出了配额。

"REQUEST_DENIED" 表示您的请求被拒绝,通常是由于缺少 sensor 参数。

"INVALID_REQUEST" 通常表示缺少查询参数(address 或 latlng)。

实例一:在IE浏览中输入上述实例一中的请求,查看响应结果。

浏览器中显示如下信息(该截图只是响应结果的部分信息):

实例二:通过控制台输出上述实例二的响应。

C#代码:

1 using System;

2 using SystemCollectionsGeneric;

3 using SystemLinq;

4 using SystemText;

5 using SystemNet;

6

7 namespace GeoCodeTest

8 {

9     class Program

10     {

11         static void Main(string[] args)

12         {

13             WebClient client = new WebClient();

14             string url = "ht tp:/ /mapsgo oglec om/maps/a pi/geocode/xmllatlng=39910093,116403945&language=zh-CN&sensor=false";

15             clientEncoding = EncodingUTF8;

16             string responseTest = clientDownloadString(url);

17

18             ConsoleWrite("{0}",responseTest);

19

20             ConsoleRead();

21

22         }

23     }

24 }

输出结果(该截图只是响应结果的部分信息):

5 处理响应结果

通过上述内容,我们已经能够得到xml响应信息。但是,响应结果包含很多信息,因此我们需要解析出需要的地址信息。具体实现过程为:

第一步:判断status的状态信息。

第二步:获取formatted_address 地址信息。

注意:formatted_address是一个字符串,包含此位置的人类可读地址。通常该地址相当于“邮政地址”,有时会因不同国家/地区而存在差异。

实现代码如下:

View Code

GPS模块定位原理

24颗GPS卫星在离地面1万2千公里的高空上,以12小时的周期环绕地球运行,使得在任意时刻,在地面上的任意一点都可以同时观测到4颗以上的卫星。

由于卫星的位置精确可知,在GPS观测中,卫星到接收机的距离,利用三维坐标中的距离公式,利用3颗卫星,就可以组成3个方程式,解出观测点的位置(X,Y,Z)。考虑到卫星的时钟与接收机时钟之间的误差,实际上有4个未知数,X、Y、Z和钟差,因而需要引入第4颗卫星,形成4个方程式进行求解,从而得到观测点的经纬度和高程。

事实上,接收机往往可以锁住4颗以上的卫星,这时,接收机可按卫星的星座分布分成若干组,每组4颗,然后通过算法挑选出误差最小的一组用作定位,从而提高精度。

由于卫星运行轨道、卫星时钟存在误差,大气对流层、电离层对信号的影响,使得民用GPS的定位精度只有10米。为提高定位精度,普遍采用差分GPS(DGPS)技术,建立基准站(差分台)进行GPS观测,利用已知的基准站精确坐标,与观测值进行比较,从而得出一修正数,并对外发布。接收机收到该修正数后,与自身的观测值进行比较,消去大部分误差,得到一个比较准确的位置。实验表明,利用差分GPS,定位精度可提高到5米。

什么是GPS模块

GPS 模块就是GPS信号接收器,它是一个可以用无线蓝牙或有线方式与电脑或手机连接,将它接收到的GPS信号传递给电脑或手机中的GPS软件进行处理。我们常说的GPS定位模块称为用户部分,它像“收音机”一样接收、解调卫星的广播C/A码信号,中以频率为157542MHz。GPS模块并不播发信号,属于被动定位。

GPS模块的应用关键在于串口通信协议的制定,也就是模块的相关输入输出协议格式。它主要包括数据类型与信息格式,其中数据类型主要有二进制信息和NMEA全国海洋电子协会数据信息。这两类信息可以通过串口与GPS接收机进行通信。

GPS模块通过运算与每个卫星的伪距离,采用距离交会法求出接收机的得出经度、纬度、高度和时间修正量这四个参数,特点是点位速度快,但误差大。初次定位的模块至少需要4颗卫星参与计算,称为3D定位,3颗卫星即可实现2D定位,但精度不佳。GPS模块通过串行通信口不断输出NMEA格式的定位信息及辅助信息,供接收者选择应用。

以上就是关于怎样从GPS模块中读取信息全部的内容,包括:怎样从GPS模块中读取信息、如何通过经纬度获取地址信息、GPS怎么定位的定位原理 通俗点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9624507.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存