GeoJSON转KML转换器
将 GeoJSON 矢量转换为 Google KML,将轻量级 JSON 坐标数组转换为专门为 Google Earth 和 Google Maps 量身定制的结构化 XML 文档。
格式比较与技术规格
| 规格 | GEOJSON | KML |
|---|---|---|
| MIME 类型 | application/ | application/ |
| 类型 | 地理矢量 JSON | 地理 XML 表示法 |
| 压缩 | 无 (JSON 文本) | XML 文本 (ZIP 压缩时为 KMZ) |
| 标准规范 | 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 格式采集和共享,因为网页开发人员和 JavaScript 地图库可以直接处理这种格式。不过,Google Earth 等桌面 GIS 软件和较旧的企业地球应用需要 Keyhole 标记语言(简称 KML)。转换格式后,实地研究人员和制图师无需编写自定义脚本,就能在虚拟地球中查看从网络采集的边界多边形、无人机遥测点和市政设施路线。 将 GeoJSON 转为 KML 也弥合了开源网页 API 与面向消费者的地图工具之间的差距。许多城市规划人员使用 Leaflet 或 Mapbox 库采集数据,并输出 GeoJSON 文件。如果利益相关方要在 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 拆分为较小的区域文件,以防止消费级映射应用程序中的内存崩溃。
常见问题
如何将 GeoJSON 转换为 Google KML 而不损失质量?
这种转换是严格无损的,因为这两种格式都使用精确的数值经纬度值存储矢量坐标。转换过程将 GeoJSON 键映射到相应的 KML XML 元素,而不会改变坐标精度,不过如果目标软件对非标准属性的读取方式不同,则自定义样式属性可能需要手动映射。
GeoJSON 和 Google KML 有什么区别?
GeoJSON 是基于 JSON 语法的轻量级文本格式,专为网页地图 API 和 JavaScript 处理而设计。Google KML 是专为 Google Earth 设计的 XML 语言,内置支持 3D 高度贴地、自定义相机视角、嵌套文件夹层级和内嵌图标。