wowbanui 发表于 2010-8-24 17:21:36

C3-370C 串口输出经纬度 -> 度分秒 的转换方法

看到同学们说从 GPS 读出的经纬度和上位机软件输出的有较大差异,不知如何转换, 已经在帖子中说明了, 不过立即淹没在 900+ 楼里...
其实只要明白各个数据位代表的含义, 转换不难.

GPS 串口读出的是 DDMM.MMMM格式
一般上位机是 DD.DDDDDD°或 DD°MM'SS" 格式, 这两种都可以在 GE 里直接输入

举例说明: 3147.8749 (示例,经纬度一样) 格式为 DDMM.MMMM
转换成度:
1. 度的部分直接就是31,
2.剩下的 MM.MMMM/60=度, 所以 47.8749/60=0.797915
则 转换成度是 31.797915°

转换成度分秒:
1. 同样,度的部分直接就是31,
2. 分直接是整数部分 47
3. 秒则是 后面的 0.MMMM*60. 例子中为: 0.8749*60=52.494
4. 则度分秒即是 31°47'52.494"

精确到 0.001"

wowbanui 发表于 2010-8-24 17:27:33

如果在单片机中, 使用字符串操作, 只取分的部分(如0.8749)转换成数字再利用上面的方法计算, 那么只需要 Float 精度就可以了实现了吧

format 发表于 2010-8-24 19:35:05

回复【楼主位】wowbanui
看到同学们说从 gps 读出的经纬度和上位机软件输出的有较大差异,不知如何转换, 已经在帖子中说明了, 不过立即淹没在 900+ 楼里...
其实只要明白各个数据位代表的含义, 转换不难.
gps 串口读出的是 ddmm.mmmm格式
一般上位机是 dd.dddddd°或 dd°mm'ss" 格式, 这两种都可以在 ge 里直接输入
举例说明: 3147.8749 (示例,经纬度一样) 格式为 ddmm.mmmm
转换成度:
1. 度的部分直接就是31,
2.剩下的 mm.mmmm/60=度, 所以 47.8749/60=0.797915
则 转换成度是 31.797915°
转换成度分秒:
1. 同样,度的部分直接就是31,
2. 分直接是整数部分 47
3. 秒则是 后面的 0.mmmm*60. 例子中为: 0.8749*60=52.494
4. 则......
-----------------------------------------------------------------------

不知道你有没有发现,即便如此

转换后的结果和PC上软件计算的结果仍有差别~~~

wowbanui 发表于 2010-8-24 20:53:24

回复【2楼】format
-----------------------------------------------------------------------

差别大么?

我认为理论上的算法是正确的, 我考虑一下可能有如下原因:
1. 上位机软件 会不会在秒上面四舍五入? 如上面的31°47'52.494" 就为 31°47'52"
2. 因为模块每秒输出一次数据, 是否是观察到的串口数据和软件输出的不是同一次?

fq1888 发表于 2010-8-24 22:10:18

差别不大的,已验证~转换算法就是这样转换就行了!

silence_sky 发表于 2010-8-24 22:14:13

GPS输出的坐标有2种,一个是实时的$GPGGA,还有一个是推荐的$GPRMC,有时会不一样。

wowbanui 发表于 2010-8-24 22:44:40

回复【5楼】silence sky 静空
-----------------------------------------------------------------------

是的, 这款默认同时输出 GGA 和 RMC 语句
但是查datasheet的NMEA协议格式都是 DDMM.MMMM.

不一样是否有特殊情况?

xstt 发表于 2010-8-31 10:33:14

终于找到计算方法了。~感谢楼主

stely 发表于 2010-8-31 13:24:32

标记学习

jielove2003 发表于 2010-8-31 15:26:54

学习了

alexren 发表于 2010-9-7 15:25:40

mark

xiesx1985 发表于 2010-11-3 15:42:11

不错,标记

jacknupt 发表于 2010-12-27 20:32:11

难得找的到~

renpeng009 发表于 2010-12-27 21:07:56

mark

gliet_su 发表于 2010-12-27 22:24:42

LZ说得很清晰了,学习。

number007cool 发表于 2010-12-31 16:09:38

mark!

muzheyun 发表于 2011-2-11 09:13:50

mark

g921002 发表于 2011-2-11 10:13:15

如果支援sirf格式的,用它格式比較方便。
現在都不太用NMEA,還要搞字串轉數值,太麻煩了。

www1519 发表于 2011-2-21 20:37:34

mark

guxingganyue 发表于 2011-2-22 18:30:09

mark

zhangli019 发表于 2011-2-25 10:14:50

标记学习

hcdtc 发表于 2011-3-9 15:43:08

mark

yywin1986 发表于 2011-3-9 16:34:25

学习

liyy 发表于 2011-3-9 18:20:23

mark

weiwei4 发表于 2011-4-24 14:07:16

不错,学习下

hyghyg1234 发表于 2011-9-5 12:26:47

mark

Anqi90 发表于 2011-9-5 12:44:31

多谢楼主了,标记一下

hyghyg1234 发表于 2011-9-5 16:39:55

mark

wdc014 发表于 2011-9-15 21:44:20

楼主可有C3-370C的详细的中文资料

b260123292 发表于 2011-9-19 22:52:31

很好,很详细。

kiema 发表于 2011-11-24 15:35:07

mark

小邢 发表于 2012-11-15 17:04:01

感觉用GOOGLE地图定这个经纬度还是有点偏差

sstarren 发表于 2012-11-16 14:39:37

学习计算方法

babyhua 发表于 2014-1-28 09:21:26

mark!!!!!!!!
页: [1]
查看完整版本: C3-370C 串口输出经纬度 -> 度分秒 的转换方法