GeoJSON 转 Google KML 转换器
将 GeoJSON 矢量转换为 Google KML,将轻量级 JSON 坐标数组转换为专门为 Google Earth 和 Google Maps 量身定制的结构化 XML 文档。
格式比较与技术规格
| 规格 | GEOJSON | KML |
|---|---|---|
| MIME 类型 | application/geo+json | application/vnd.google-earth.kml+xml |
| 类型 | geographic vector JSON | geographic XML notation |
| 压缩 | none (JSON text) | XML text (KMZ when ZIP compressed) |
| 标准规范 | IETF RFC 7946 | OGC KML 2.3 |
| 魔数文件头 (Magic Bytes) | 7B 22 74 79 70 65 22 3A 20 22 ({"type": ") JSON header | 3C 3F 78 6D 6C ... 3C 6B 6D 6C (<kml) |
格式概述与应用
地理矢量数据通常使用 GeoJSON 进行捕获和共享,因为 Web 开发人员和 JavaScript 映射库可以自然地处理它。但是,诸如 Google Earth 和传统企业地球仪应用程序等桌面 GIS 软件需要 Keyhole 标记语言(通常称为 KML)。转换这些格式允许现场研究人员和制图师在虚拟地球仪中查看网络抓取的边界多边形、无人机遥感勘测点和市政资产路线,而无需编写自定义脚本。 将数据从 GeoJSON 迁移到 KML 还弥合了开源 Web API 与面向消费者的映射工具之间的鸿沟。许多城市规划人员使用输出 GeoJSON 文件的 Leaflet 或 Mapbox 库收集数据。当利益相关者希望在 3D 桌面环境中审阅这些精确的图层时,将几何图形标签、样式属性和元数据属性转换为 XML 节点可确保图标、线宽和填充颜色等视觉元素正确渲染。
技术规格与编解码器解析
GeoJSON 使用 application/geo+json MIME 类型,表示纯文本 JavaScript 对象符号中的地理点、线和多边形。它不包含二进制魔数,而是依靠标准的 ASCII 或 UTF-8 括号以及键值对(例如 "type": "FeatureCollection")。相反,Google KML 利用 application/vnd.google-earth.kml+xml MIME 类型,在诸如 <Placemark>、<Point> 和 <Polygon> 等 XML 标签中构建空间特征。虽然这两种格式在文本级别都没有原生使用有损压缩,但可以将 KML 文件压缩到使用标准 DEFLATE 压缩的 KMZ 归档中,以将繁重的矢量数据和本地图像图标捆绑在一起。
操作系统与浏览器兼容性
这两种格式在包括 Windows、macOS、Linux、iOS 和 Android 在内的现代操作系统中都可以顺畅加载。现代网页浏览器使用标准 JavaScript 引擎原生解析 GeoJSON 字符串,而 Google KML 需要专用解析器或专用的桌面地球仪软件(如 Google Earth Pro)。如果没有辅助应用程序或服务器端预渲染,移动浏览器无法直接显示原始 KML 文件。
💡 实用信息
在转换包含数千个复杂多边形的大型数据集时,请在导出到 KML 之前将源 GeoJSON 拆分为较小的区域文件,以防止消费级映射应用程序中的内存崩溃。
格式比较与技术规格
标准的 5 兆字节 GeoJSON 矢量文件在 1 Gbps 光纤连接上的传输时间约为 0.05 秒,在标准 5G 移动网络上约为 0.4 秒,在典型的 4G LTE 连接上约为 1 秒。
常见问题
如何将 GeoJSON 转换为 Google KML 而不损失质量?
这种转换是严格无损的,因为这两种格式都使用精确的数值经纬度值存储矢量坐标。转换过程将 GeoJSON 键映射到相应的 KML XML 元素,而不会改变坐标精度,不过如果目标软件对非标准属性的读取方式不同,则自定义样式属性可能需要手动映射。
GeoJSON 和 Google KML 有什么区别?
GeoJSON 是一种建立在 JSON 语法之上的轻量级文本格式,专门为 Web 映射 API 和 JavaScript 处理而设计。Google KML 是一种专为 Google Earth 设计的基于 XML 的语言,为 3D 海拔夹紧、自定义相机视点、嵌套文件夹层次结构和嵌入式图标提供内置支持。