Google KML 转 GeoJSON 转换器
将 Google KML 文件转换为 GeoJSON,把分层的 XML 地理数据转变为适合现代网页地图的轻量级矢量 JavaScript 对象表示法。
格式比较与技术规格
| 规格 | KML | GEOJSON |
|---|---|---|
| MIME 类型 | application/vnd.google-earth.kml+xml | application/geo+json |
| 类型 | geographic XML notation | geographic vector JSON |
| 压缩 | XML text (KMZ when ZIP compressed) | none (JSON text) |
| 标准规范 | OGC KML 2.3 | IETF RFC 7946 |
| 魔数文件头 (Magic Bytes) | 3C 3F 78 6D 6C ... 3C 6B 6D 6C (<kml) | 7B 22 74 79 70 65 22 3A 20 22 ({"type": ") JSON header |
格式概述与应用
地理数据经常需要在桌面地图工具与网页应用程序之间传输。Google KML 是 Google Earth 使用的标准格式,它在 XML 树中结构化存储了点、线和多边形。现代网页浏览器以及 Mapbox 和 Leaflet 等地图库更偏爱 GeoJSON,因为它原生匹配 JavaScript 使用的数据结构。开发人员和 GIS 分析人员将 KML 转换为 GeoJSON,以便在网页上快速加载地图叠加层,而无需依赖专用的桌面软件。 与解析大型 XML 文档相比,网页应用程序处理 JSON 的速度极快。当用户加载网页地图时,GeoJSON 文件会直接馈送到矢量渲染引擎中。这种转换消除了在运行时转换 XML 标签的开销。它使地图能够流畅显示数千个要素,同时保持精确的坐标几何图形。
技术规格与编解码器解析
Google KML 使用 application/vnd.google-earth.kml+xml MIME 类型,依赖 XML 文本语法,或者在压缩时使用称为 KMZ 的 ZIP 容器。GeoJSON 使用 application/geo+json MIME 类型,由结构化为 JSON 对象的未压缩纯文本组成。KML 文件通常以标准的 XML 声明字节开头,而 KMZ 压缩包以 ZIP 本地文件头字节 50 4B 03 04 开头。GeoJSON 文件以表示根 JSON 对象的 ASCII 字符 '{' 开头。转换过程解析 XML 文档树,提取坐标数组和元数据标签,并将它们重写为符合 RFC 7946 标准的 JSON 要素集合,且不会丢失坐标精度。
操作系统与浏览器兼容性
这两种格式适用于所有现代操作系统,包括 Windows、macOS、Linux、iOS 和 Android。GeoJSON 在所有现代网页浏览器(如 Chrome、Firefox、Safari 和 Edge)中本地运行,因为浏览器会原生解析 JSON。Google KML 需要专用桌面软件(如 Google Earth)或转换工具(如 QGIS)才能正确渲染,因为如果没有第三方解析库,网页浏览器无法原生显示 KML 文件。
💡 实用信息
在转换为 GeoJSON 之前,请务必确认源 KML 使用 WGS 84 地理坐标,以防止网页地图出现空间偏移错误。
格式比较与技术规格
一个标准的 5 MB KML 文件可转换为大约 4.2 MB 的 GeoJSON 文件。在速度为每秒 30 兆位的 4G 移动网络上,下载该文件大约需要 1.1 秒。在速度为每秒 150 兆位的 5G 网络上,传输在 0.2 秒内完成。在千兆光纤连接上,文件可在不到 0.05 秒的时间内瞬间传输完成。
常见问题
如何在不损失质量的情况下将 Google KML 转换为 GeoJSON?
对于坐标数据而言,转换在数学上是无损的。这两种格式都使用 WGS 84 空间参考系统存储地理坐标。但是,KML 中的特定样式规则(例如自定义图标 URL 和复杂的多边形拉伸高度)在标准 GeoJSON 中可能没有直接的对应项,可能需要手动重新创建。
Google KML 和 GeoJSON 有什么区别?
Google KML 是一种专为地球浏览器设计的基于 XML 的语言,具有支持丰富样式、相机视图和 3D 元素的层次化节点结构。GeoJSON 是一种构建在 JSON 之上的轻量级格式,针对网页 API 和矢量图形进行了优化,具有包含要素集合、几何图形和简单属性的扁平结构。