跳到主要内容

用 Python 解析 GPS 轨迹数据

·77 字·1 分钟

常见的 GPS 数据文件格式有 GPS、CVS、KML 等,这些数据格式本身并不复杂,基本都是对坐标点的集合,大部分 GPS 记录仪都支持多种格式的数据文件的导入和导出。但是有时还是需要做格式转换,比如 Google Earth 只支持 KML 格式导入。所以,我准备做一个 GPS 数据格式转换工具,使用 Python,做一个基于命令行的工具。

1. GPX #

GPX(GPS eXchange Format,GPS交换格式)是一个XML格式,它可以用来描述路点、轨迹、路程。这个格式是免费的,可以在不需要付任何许可费用的前提下使用。它的标签保存位置,海拔和时间。

在GPX中,一个没有顺序关系的点集合,叫路点。一个有顺序的点的集合叫轨迹或者路程。轨迹是一个人曾经走过的记录,路程是一个建议的下一步要走的地方。所以,一般来讲,轨迹里的点,包含时间信息,路程里的点,没有时间信息。

最小的一个GPX文件,仅仅包含一个经纬度坐标的点,其它的都是可选的。

GPX 1.1 : http://www.topografix.com/GPX/1/1/

2. CSV #

CSV (Comma-Separated Values,逗号分隔值) 文件格式并没有通用的标准,其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV 文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。CSV 文件是纯文本文件,但是可以直接用 Office Excel 软件打开。

下图是一个 CSV 格式的 GPS 轨迹数据文件,每条记录有三个字段,分别表示经度、纬度、海拔。(注:北纬为正,南纬为负,东经为正,西经为负)

对 CSV 数据读写可以直接调用 Python 的 csv 模块 :https://docs.python.org/2/library/csv.html

csv 模块定义了如下几个函数:

  • csv.reader(csvfile, dialect=‘excel’, **fmtparams)

    改函数会遍历 csvfile 中的每一行,然后返回一个 reader 对象, csvfile 可以是任何支持 iterator 协议的对象,每次调用它的 next() 方法都会返回一个字符串。

3. KML #

KML 也是基于 XML 语法的标记语言,是 Google Earth 特有的格式,它不仅可以记录 GPS 轨迹,还可以标记很多地理数据,包括点、线、面、多边形、多面体等等。