怎么把 CSV 文件转换成 GPX
这是两个方向里更难的一个。GPX 转 CSV 只是在丢信息,这个方向是安全的,基本上是机械操作。CSV 转 GPX 要的是反过来的事情——从一张原本可能根本没存过轨迹形状的表里,把路线的样子重新搭出来。能不能做到,完全取决于那份 CSV 里实际有什么。而对很多 CSV 文件来说,老实说,答案是做不到。
先说结论
一份 CSV 只有在已经是逐点记录的时候,才有可能变成能用的 GPX 轨迹——至少要有经度和纬度两列,最好还带海拔和时间戳。找一个能读这张表、再写出 GPX 那套 XML 结构的工具——QGIS 这类 GIS 软件、表格软件里的宏,或者一小段脚本——把每一行按顺序变成一个轨迹点。如果这份 CSV 是一趟徒步一行,列是距离、时长、爬升这些,那里面根本没有能拿来用的路线形状。汇总从一开始就不是轨迹,任何转换工具都变不出缺掉的那些点。
两种性质完全不同的 CSV
逐点的 CSV
每个记录点占一行,经度和纬度各自成列,最好还带着海拔和时间戳。只有这种 CSV 才有可能被重建成轨迹,因为只有它还保留着几何信息——跟 GPX 轨迹点存的是同一样东西,只是换了个容器装着。
汇总的 CSV
一趟徒步一行,列是日期、距离、时长、爬升这类数字。多数 CSV 导出实际上就是这种,因为多数人打开表格软件想看的正是这些。但对「转回 GPX」这件事来说,这是条死路——描述一整条路线的只有一行数字,从一个总数里是逆推不出路线形状的。
转换要保住哪些东西
要画出一条线,最起码得有经度和纬度。海拔算是可选的——GPX 规范允许轨迹点不带海拔——但如果原始 CSV 压根没有海拔那一列,转出来的 GPX 也不会有,因为转换工具手里没有能算出这个数字的材料。每一行的时间戳,重要程度比看上去要高:GPX 的轨迹点是按文件里出现的顺序读回去的,如果 CSV 的行本来就没按时间排好,重建出来的路线就会在相隔好几分钟记录的点之间来回打转。
悄悄毁掉坐标的表格软件习惯
把带坐标的 CSV 用表格软件打开检查一下,再存回去——这是损坏数据的常见方式,而且损坏的正是你想转换的那份数据。表格软件天生喜欢把数字「整理」得整整齐齐,对普通数值列来说这是好事,对 GPS 坐标列来说恰恰不是:它可能悄悄把需要的那几位小数四舍五入掉,也可能把一串长小数换成科学计数法。坐标哪怕只丢了几位小数,画到地图上都能看出明显的偏移。用纯文本编辑器,或者专门处理坐标的工具打开文件编辑,就不会碰到这个问题。
为什么留着原来的 GPX 更省心
真正需要做这个转换的场合,其实比想象中要少:要么是手上只留了 CSV 汇总,原始轨迹已经没了;要么是从别处拿到的路线数据本来就是 CSV,而要导进的地图工具偏偏只认 GPX。只要原来的 GPX 文件在哪儿还留着,直接用它,总比从一份本来就只打算存总数的表里重新搭一个要简单、也更靠谱。CSV 转 GPX,值得动手的时候,是 GPX 本身真的已经找不回来了。
容易搞错的地方
- 以为汇总型的 CSV——一趟徒步一行——能变成轨迹:不管用什么工具,汇总里都没有能拿来重建的形状。
- 以为随便哪个表格软件都能自己完成这个转换:CSV 不像 GPX 那样有固定结构,得明确告诉转换工具,这份文件里哪一列是经度、哪一列是纬度、哪一列是时间。
- 用表格软件打开 CSV 存回去以后,坐标悄悄变了一点——这是表格软件自动重新格式化带来的副作用,不是原始数据本身出了问题。
- 重建出来的 GPX 没有高度曲线——这不是转换出了错,只是原始 CSV 本来就没有海拔那一列。
TrailCam 在这件事上是怎么做的
TrailCam 把同一条记录下来的轨迹,直接导出成 GPX 1.1 或者 CSV 汇总,两者都来自记录本身,不是事后互相推算出来的。也就是说,用 TrailCam 记录的路线,基本用不上这个转换:地图工具要是需要 GPX,它本来就跟 CSV 放在一起,不用从 CSV 里重建。导出是可选的 TrailCam Pro 里的功能,App 本身免费下载。
常见问题
- 随便一份 CSV 文件都能转成 GPX 轨迹吗?
- 只有当它已经是每个记录点一行、带着经纬度列的时候才行。汇总型的 CSV——一趟徒步一行——里面没有路线的几何信息,转换工具没有东西可以变成轨迹。
- CSV 转 GPX 的时候,海拔数据会跟着出来吗?
- 只有原始 CSV 本来就有海拔那一列才会。从 CSV 造出来的 GPX 文件,不可能比原始 CSV 拥有更多信息——转换工具没有材料去凭空造出海拔。
- 为什么用表格软件编辑 CSV 之后,坐标有时候会变?
- 表格软件会自动重新格式化数值列,四舍五入小数或者换成科学计数法,这会悄悄改变 GPS 坐标。用纯文本方式编辑文件就能避开这个问题。
记录你自己的轨迹
TrailCam 是一款 iPhone 上的 GPS 轨迹记录 App,会把沿途拍的视频、照片和语音钉在你拍下它的那个位置,并支持导出成 GPX 1.1 或 CSV。免费下载。