目前最流行的GPS数据类型是Garmin GPX,并且已经是业内事实上的标准,它是一种XML文件,遵循格式优良的XML文档规范。
另外还有一种早于XML和GPX的GPS数据格式,叫美国国家海洋电子协会标准(National Marine Electronics Association,NMEA),由ASCII文本流构成的。你会时不时地碰到这种数据,即使它们非常古老并且专业性很强,在某些领域仍然有顽强的生命力,特别是在全球船舶定位自动识别系统船舶位置通信方面的应用。
使用Python中pynmea库可以处理该类数据,通过PyPI官方网站获取。
接下来看看一个简短的NMEA文件示例:
本示例将解析NMEA文本到流对象中,NMEA文本包含一些天气信息,相关代码如下:
from pynmea.streamer import NMEAStream
nmeaFile = open("nmea.txt")
nmea_stream = NMEAStream(nmeaFile)
print(nmea_stream)
next_data = nmea_stream.get_objects()
nmea_objects = []
while next_data:
nmea_objects += next_data
next_data = nmea_stream.get_objects()
#解析NMEA流
#遍历Python对象类型输出
for nmea_ob in nmea_objects:
if hasattr(nmea_ob, "lat"):
# print(nmea_ob)
print("Lat/Lon: ({}, {})".format(nmea_ob.lat, nmea_ob.lon))
结果:
Lat/Lon: (1856.599, 15145.602)
Lat/Lon: (1856.599, 15145.602)
Lat/Lon: (6337.596, 12330.817)
…
总结
注意: 经纬度是以小数形式的十进制度数存储的
《Python地理空间分析指南 第2版》学习笔记,仅供学习,如有侵权请联系删除。