怎么把 GPX 文件转换成 KMZ
KMZ 经常跟 KML 一起出现,容易被当成同一回事,但 KMZ 本身并不是一种独立的格式——它是把一份 KML 文件压缩进一个压缩包,压缩包里还留着空间放 KML 可能引用到的图标或图片。把 GPX 轨迹转成 KMZ,其实是两个各自很小的步骤,搞清楚这一点,之后要检查什么就清楚了。
简单说
最快的办法跟转成普通 KML 一样:用 GPS Visualizer、gpx2kml 这类免费在线转换工具上传 GPX,会直接给你 KMZ;如果它问你要 KML 还是 KMZ,选 KMZ 就行。不想把自己的路线传到别人服务器上的话,GPSBabel 能在自己电脑上完成同样的转换。如果手上已经有一份之前转好的 KML 文件,用任何压缩工具把它压缩、再把扩展名改成 .kmz,就是一份 KMZ 了——KMZ 文件的真面目,其实就是这么简单。
KMZ 文件到底是什么
把一个 .kmz 文件解压开,里面是一个小文件夹:一份几乎都叫 doc.kml 的 KML 文件,旁边跟着这份 KML 引用到的其他文件——最常见的是自定义标记图标用的小图片,偶尔也会有绑定在地图上某个位置的照片或叠加图层图片。.kmz 这个扩展名,只是在告诉 Google Earth 之类的工具「把这个压缩包当成一个能直接打开的地图文件」,不用你自己先解压、再手动去找里面的 doc.kml。
为什么有些地方要的是 KMZ 而不是普通 KML
一份没有引用任何图片的 KML 文件,不管是以普通 KML 的形式传出去,还是打包成 KMZ,内容其实完全一样——压缩带来的好处基本只是下载体积小一点,因为 XML 文本本身压缩率就不错。KMZ 真正派上用场,是在地图引用了外部文件的时候:自定义图标、内嵌的叠加图层图片、关联的照片。打包成一个压缩包,能把这些文件跟指向它们的 KML 绑在一起带走,收到的就是完整的一个文件,而不是一份 KML 加一堆指向根本没跟过来的图片的失效链接。这也正是 Google Earth 从「我的地方」导出某个地点或文件夹时默认使用的保存格式,网上流传的很多所谓 KML,其实骨子里就是 KMZ。
从 GPX 转过去,什么会留下
转成普通 KML 时该注意的事,这里也一样适用,因为打包成 KMZ 只是在同一次转换外面又加了一层压缩。转完之后有两件事值得核对一下:
- 每个点的时间戳:普通的 KML LineString 没有存单点时间的字段,简单粗暴的转换会把带时间戳的 GPX 轨迹压成一条完全没有时间信息的线。有些转换工具会改用 gx:Track 这个扩展,专门保留每个点的时间——如果回放速度对你重要,值得把 KMZ 解压开,看看 doc.kml 里有没有 gx:Track 这个标签。
- 海拔:两种格式都支持每个点带一个数值海拔,大多数转换工具会把它带过去,但转换后随手挑几个点比对一下,比直接假设它没问题更稳妥。
打包压缩这一步本身,不会额外改变什么。把文件压缩起来、再解压读出来是无损的,所以 KMZ 这层包装,不会在 KML 已经保留下来的内容之外再丢掉任何东西。
什么时候值得选 KMZ 而不是普通 KML
如果路线上没有什么自定义样式,就是走过的那条线,普通 KML 和 KMZ 携带的信息完全一样,而 KML 作为纯文本更方便手动查看或编辑,不用先解压。KMZ 开始有意义,是在你要做的东西带着图标或图片的时候:比如给好几个登山口各配一个不同图钉的地图,或者带照片叠加层的路线。把这些一起打包成一个 KMZ,别人打开的时候就不用把每一张引用到的图片都放在正确的相对路径下,地图才能按原样显示。
TrailCam 在这里能做什么
TrailCam 用 GPS 记录路线,单条路线或整段历史都能导出成 GPX 1.1,也能导出 CSV 汇总,但 KMZ 不在导出格式里。如果对方明确要 KMZ,需要拿去转换的就是这份 GPX 文件,走上面说的那两步就行。沿途钉在路线上的视频、照片和语音,跟其他 GPX 或 CSV 导出一样,都留在 TrailCam 本体里;在 App 里回放这条路线,才是把它们跟地图上的这条线重新拼回一起的办法。导出功能是可选的 TrailCam Pro 升级里的功能,App 本身免费下载。
常见问题
- KMZ 文件是跟 KML 不一样的格式吗?
- 严格说不算。KMZ 文件就是把一份 KML 文件压缩打包成的压缩包,里面还留着放图标或图片的空间。解压开来看,里面装的就是一份普通的 KML,通常叫 doc.kml。
- Google Earth 一定要 KMZ 文件才能打开吗?
- 不一定。Google Earth 两种都能直接打开。KMZ 只是 Google Earth 从「我的地方」导出地点或文件夹时默认用的保存格式,不是必须的,只是因为这个原因才这么常见。
- GPX 转成 KMZ,GPS 时间戳会保留吗?
- 要看转换工具,不是每次都会。普通的 KML LineString 没有存单点时间的字段,简单的转换往往会把时间戳丢掉;用 gx:Track 这个扩展的转换工具才会把它保留下来。这个问题出在 GPX 转 KML 那一步,之后把 KML 打包成 KMZ 不会再改变里面的内容。
记录你自己的轨迹
TrailCam 是一款 iPhone 上的 GPS 轨迹记录 App,会把沿途拍的视频、照片和语音钉在你拍下它的那个位置,并支持导出成 GPX 1.1 或 CSV。免费下载。