GPX 和 Shapefile:轨迹数据用哪个更适合徒步
GPX 文件和 Shapefile 在地图上画出来可能是同一条线,但它们来自完全不同的世界。GPX 就是为 GPS 轨迹设计的——一个文件,一种格式,专门用来装一条带时间戳的轨迹。Shapefile 是给任何一种地理图形用的通用 GIS 格式,同时存在好几个文件里,压根没有「沿着一条线,时间在往前走」这种概念。对一次徒步来说,这个区别基本就定下了该用哪个。
各自是为了装什么而设计的
GPX 是一个文件,为轨迹而生
GPX 是纯文本的 XML,专门为 GPS 数据设计,一条轨迹就是按顺序排好的一串点,每个点通常都带着纬度、经度、海拔和时间戳。之所以是这个结构,是因为 GPX 从一开始就是为了干这件事:记录什么东西在什么时候、去了哪里。
Shapefile 是好几个文件,为各种 GIS 图形而生
Shapefile 本来就不是单一文件。这个由 Esri 推出的格式,最少也要有存图形的 .shp、存索引的 .shx、存属性表的 .dbf 三个文件凑在一起,通常还会带一个定义坐标系统的 .prj。它是为了装 GIS 系统可能用到的任何一种地理图形而设计的——点、线,或者像地块边界、道路、地表覆盖这样的多边形——并不是专门针对 GPS 轨迹。一个 Shapefile 一次只能装一种图形类型,所以一次徒步的路线和沿途的航点,没法像一个 GPX 文件那样装在一起,得分成两个各自独立的 Shapefile。
这对徒步意味着什么
Shapefile 难对付的地方是时间。GPX 的轨迹给每个点都配了各自的时间戳,这才让后面能算出配速和行动时间。Shapefile 的线状图形通常是一个要素对应属性表里的一行,把路线存成线状 Shapefile,一般就只剩下整段徒步的一条记录,而不是每个点各自的时间——恰恰是这种逐点的时间信息,让配速和行动时间的计算成为可能,而它正是在这次转换里被丢下的东西。
海拔这块情况稍微好一点。Shapefile 只要用支持 Z 值的图形类型——比如 PointZ 或 PolylineZ,而不是普通的二维版本——就能在每个顶点上都带一个高度值,所以只要负责转换的工具愿意这么写,转换后的路线还是能保留海拔剖面。实际会不会这样,取决于具体软件;不是每一次从 GPX 到 Shapefile 的转换都默认打开这个选项。
摆在一起比较
- 结构:GPX 是一个文件,描述一条带时间戳的轨迹;Shapefile 是一捆文件,描述图形和属性,跟 GPS 或时间没有特别的绑定。
- 来源:GPX 是 2002 年发布的开放格式,不属于任何一家公司,面向的是 GPS 设备和软件;Shapefile 格式是 Esri 在 1990 年代初为通用 GIS 工作推出的。
- 兼容性:几乎所有 GPS、徒步或地图应用都能打开 GPX;Shapefile 是 QGIS、ArcGIS 这类 GIS 软件的标准工作格式,在这个圈子之外的支持就窄得多。
- 适合场景:想保留时间信息的徒步记录用 GPX;想把同一条路线拿去跟其他地理图层一起做 GIS 分析用 Shapefile。
- 可读性:GPX 是纯文本,随便什么编辑器都能打开;Shapefile 的 .dbf 和 .shp 得靠专门的 GIS 或空间数据软件才能看懂。
两者互相转换
从 GPX 转成 Shapefile,对 GIS 软件来说是件常规操作。比如 QGIS 能直接把 GPX 文件读成一组图层——轨迹、航点、路线各自分开——随便哪个图层都能几下点击就导出成 Shapefile,如果路线需要保留爬升,还能选择把海拔写进支持 Z 值的图形类型里。
反过来,从 Shapefile 转回 GPX,也是靠同样的 GIS 软件反向操作,但前提是那个 Shapefile 本身装的是来自真实轨迹的线或点图层——像公园边界、地块这种为多边形而生的 Shapefile,压根没有路线可以转回去。
TrailCam 导出什么格式
TrailCam 把记录下来的徒步导出成 GPX 1.1 或者 CSV 汇总,不导出 Shapefile——一次按顺序、随着时间发生过一回的行程,跟 GPX 的形状是对得上的,Shapefile 反而是事后想办法把这个形状拼回去的那一方。如果路线需要跟其他图层一起放进 GIS 项目里,那个 GPX 文件就是起点,QGIS 这类 GIS 软件可以直接从它转换过去。导出功能属于可选的 TrailCam Pro,App 本身免费下载。
常见问题
- Shapefile 能保留徒步里每个点的时间戳吗?
- 如果路线存成线状 Shapefile,通常不能——线状要素一般整条轨迹只对应属性表里的一行,不是每个点各自的时间。想保留逐点的时间,得改成存成点状 Shapefile,每个记录下来的位置各占一行。
- Shapefile 能存下徒步的海拔数据吗?
- 可以,用 PolylineZ 这类支持 Z 值的图形类型,就能在每个顶点都带一个高度值。但这取决于转换工具是不是这么写的,普通的二维 Shapefile 会把海拔整个丢掉。
- TrailCam 能直接导出 Shapefile 吗?
- 不能。TrailCam 导出的是 GPX 1.1 或 CSV 汇总。如果需要 Shapefile,可以之后把这个 GPX 文件放进 QGIS 这类 GIS 软件里打开,再从轨迹或航点图层导出。
记录你自己的轨迹
TrailCam 是一款 iPhone 上的 GPS 轨迹记录 App,会把沿途拍的视频、照片和语音钉在你拍下它的那个位置,并支持导出成 GPX 1.1 或 CSV。免费下载。