怎么把两个 GPX 文件合并成一条轨迹
本来是一次徒步,结果记录变成了两个文件——手机中途重启过、记录的 App 被误关掉,或者一趟走了好几天的徒步是一天记一个文件,事后想把它们拼成一条完整的线。合并 GPX 说白了就是把第二个文件里的点,按时间顺序接到第一个文件后面。下面说说具体怎么做,以及这件事能修好什么、修不好什么。
先给结论
GPX 里的一条轨迹,本质上就是 trk 元素里一串按顺序排好的点。合并两条轨迹,就是把第二个文件里的点按时间先后,接到第一个文件轨迹段的末尾,这样地图或者服务读到的就是一条连续的记录,而不是两条。坐标本身没变,变的只是它们被分在几个文件里。
工作量大小看文件本身。一段不长的记录,用文本编辑器手动接一下就够了;一整天、几千个点的文件,还是交给专门的工具比较靠谱。
一次徒步怎么就变成了两个文件
最常见的原因是中途被打断:手机为了装更新重启了、电量耗尽充完电才继续、或者记录的 App 被不小心划掉关了,而不是自己主动停止的。中断之前的那段被存成一个文件,之后的又变成第二个,两者之间隔着一段长度不明的空白。
走好几天的徒步是另一回事,其实算不上什么问题。一天记一段,晚上就停下,本来就是很正常、很合理的做法。文件是分开的,是因为那几天本来就是分开的。事后想把它们拼成一个文件,是行程结束之后自己做的选择,不是行程当中出的差错。
TrailCam 的记录如果中途被打断,下次打开 App 会把没走完的那条轨迹直接还给你,不用自己事后把两个文件拼起来。这解决了意外造成的中断;至于故意分成几天记录的文件要不要合并,随你决定。
具体怎么合并
用专门的工具
GPX Studio 这类浏览器工具,可以把好几个文件读进同一张地图,再一起导出成一条轨迹,不用碰底层的 XML。GPSBabel 是个专门为转换和合并 GPS 数据做的免费命令行工具,不怕用终端的话一条命令就能合完。QGIS 也能做同样的事,而且是正经的 GIS 操作,要合的文件超过两三个的话,用它更省心。
文件小的话手动来
GPX 就是纯文本,短一点的文件用文本编辑器就能手动合并。把两个文件都打开,在第二个文件里找到轨迹段,把里面的点全部复制出来,粘贴到第一个文件轨迹段的结束标签之前,让两批点落在同一段轨迹里,而不是两个文件里。存成 .gpx 后端,记得打开确认一下还能不能正常读——标签少了一个,或者闭合的位置不对,是最常见的出错原因。
合并能修好什么,修不好什么
合并解决的是「有两个文件」这件事:不管是查看工具还是上传页面,看到的都是一条轨迹,距离、时长、海拔曲线都只有一份,不用再纠结你说的是哪个文件。
但它填不上两个文件之间的空档。如果第一段记录的最后一个点和第二段记录的第一个点之间隔了好几个小时——过了一夜、开车挪了地方,或者干脆手机关机了——这段空白照样会算进合并后文件的经过时间里,不管你有没有留意到。反过来,如果两段记录重复覆盖了同一段路,直接接起来会让那几分钟同时存在两组点,距离和配速就会出现莫名其妙的突变。这种情况,合并前先把重叠的部分从其中一个文件里删掉比较值得。
在副本上操作,原始文件留着
合并的时候用两个文件的副本,别直接改手上唯一的那一份。万一手动编辑出了岔子——多打了个字符,标签闭合的位置不对——你还能从没动过的原始文件重新来一遍,而不是连数据带错误一起丢掉。
TrailCam 能做什么
TrailCam 可以把单条轨迹或者整段历史,导出成一个 GPX 1.1 文件,也可以导出成 CSV 汇总,手上已有的 GPX 文件也能导进来。要是记录中途被打断,下次打开会把没走完的那条轨迹还给你,这也是大多数意外分裂的文件不会出现的原因。导出属于可选的 TrailCam Pro,App 本身免费下载。
常见问题
- 合并两个 GPX 文件,会不会让 Strava 之类的服务把距离或时间算错?
- 只有两段记录之间真的存在空档才会——比如过了一夜、开车挪动过、手机关过机好几个小时。这段空档会照样算进合并后文件的距离和时间里,跟你分开看两个文件时是一样的,上传前心里有数就行。
- 一条轨迹的 GPX 和只有路径点的 GPX,能合并吗?
- 可以放进同一个文件,但它们还是两种不同的数据,只是并排放在一起,不会融合成一样的东西。轨迹是一条线,路径点是一个个单独有名字的点。两者放进同一个 GPX 文件互不冲突。
- 两个文件的时间戳先后顺序重要吗?
- 重要。轨迹段里的点必须按时间先后排好,地图才能正确画出线来。如果第二个文件就是接着第一个往后走的,直接接到末尾就够了;要是两段记录有重叠或者顺序反了,合并之前先按时间戳排序。
记录你自己的轨迹
TrailCam 是一款 iPhone 上的 GPS 轨迹记录 App,会把沿途拍的视频、照片和语音钉在你拍下它的那个位置,并支持导出成 GPX 1.1 或 CSV。免费下载。