谷歌 KML (.kml)
OGC 标准Keyhole 标记语言(KML)是用于表达地理注释和可视化的开放式 XML 标准,最初为 Keyhole Earth Viewer(Google 地球)开发,并由开放地理空间联盟(OGC)标准化。
将 GEOJSON 转换为 KML
免费的浏览器端 GEOJSON 转 KML 转换器。在您的设备上即时转换文件。
检查与元数据
操作系统和文件分析器通过检查开头的二进制字节序列来识别 KML 文件:
字节级文件头签名 (魔数)
操作系统和文件分析器通过检查开头的二进制字节序列来识别 KML 文件:
十六进制签名 (偏移量 0):
3C 6B 6D 6CASCII 表示形式: <kml
标准化: OGC KML 2.3 Standard
技术规格
| 容器架构 | 基于 XML 的地理可视化语法,可定义地标、地面叠加层、3D 模型和摄像机视角 |
| 压缩方式 | 未压缩的 XML 文本(打包为 .kmz 文件时使用 ZIP 压缩) |
| 字节序 | UTF-8 / Unicode 文本流 |
| 色彩空间 | AABBGGRR 十六进制颜色字符串 |
| 通道与结构 | 地标、路径、多边形、3D 建筑模型、照片叠加层和导览摄像机路径 |
| 最大尺寸 | WGS 84 坐标:经度、纬度、海拔(米) |
| 透明度 | AABBGGRR 颜色字符串和 PNG 叠加层支持 Alpha 透明度 |
| 流式传输与渐进式加载 | NetworkLinks 支持从远程地理空间服务器动态流式更新 |
技术对比矩阵:KML 对比同类产品
| 技术属性 | KML (当前) | GEOJSON | GPX | KMZ |
|---|---|---|---|---|
| 3D相机与导览 | 完整的相机倾斜、航向和飞行导览 | 无(平面几何属性) | 高程跟踪 | 完整的相机倾斜与飞行导览 |
| 打包格式 | 纯文本XML文档 | 纯文本JSON文档 | 纯文本XML文档 | 包含doc.kml的ZIP压缩包 |
| 颜色格式 | AABBGGRR(透明度-蓝-绿-红) | CSS / 十六进制标准 | 无 | AABBGGRR |
| 主要目标平台 | Google地球与3D GIS | Web地图(Mapbox、Leaflet) | Garmin和GPS健身追踪 | Google地球独立压缩包 |
常见损坏模式与十六进制恢复指南
Google地球错误:"在第X行解析错误:标签不匹配"。
根本原因: 未闭合的XML标签或气球说明HTML中包含未转义的"&"符号。
恢复方法: 使用File2File.app KML修复工具修复XML语法,并将描述包装在<![CDATA[...]]>中。
安全分析与解析器攻击向量
KML 文件支持 NetworkLinks 和 HTML 描述气泡,可能引发 XXE、SSRF 或跨站脚本攻击(XSS)。
已知攻击向量
- 恶意 <NetworkLink> 标签轮询内部网络端点,可能导致服务器端请求伪造(SSRF)。
- <description> 标签中未经清理的 HTML 若在桌面版或网页版地球应用的气泡中执行,可能导致 XSS 注入。
- 在自动化KML处理过程中发生XML外部实体(XXE)注入。
防御性最佳实践: 禁用外部网络获取,并使用 DOMPurify 清理气泡 HTML 内容。
历史渊源与里程碑
核心优势与特点
- 可进行丰富的 3D 地球可视化:除了点,还能定义摄像机的 3D 角度、航向、倾斜角和海拔,以及飞行导览。
- KML 支持情况取决于应用程序;桌面 GIS 和地图工具支持的功能各不相同。
- NetworkLink 链接可以获取关联的 KML 资源;刷新行为取决于文档设置和查看器。
技术局限与劣势
- 冗长的XML语法导致文件大小比GeoJSON等紧凑格式更大。
- 颜色使用非常规的AABBGGRR十六进制顺序(透明度-蓝-绿-红),而不是标准的RGBA。
- 复杂的3D功能(导览、模型)在轻量级Web地图平台上很少得到支持。
趣味技术冷知识
- Keyhole公司以美国在冷战期间发射的历史性KH(Keyhole)侦察间谍卫星命名。
- 在KML中,颜色值的书写顺序是倒过来的AABBGGRR:前两个字符是透明度(Alpha),然后是蓝色(Blue),接着是绿色(Green),最后是红色(Red)。
- KMZ 存档至少包含一个 KML 文件,也可以包含辅助文件。主文件通常命名为 doc.kml,但也允许使用其他名称。
常见技术问题
KML 和 KMZ 有什么区别?
KML 是纯文本 XML 文件。KMZ 是压缩的 ZIP 文件,其中包含 KML 文件以及任何自定义地图图标、纹理或 3D 叠加图像。
如何将 KML 转换为 GeoJSON?
您可以直接在浏览器中使用 File2File.app,一键将 Google Earth KML 文件转换为适用于网页地图的 GeoJSON。
我可以在 Google Maps 中打开 KML 文件吗?
可以!在 Google Maps 中,转到“已保存” -> “地图” -> “创建地图”(Google 我的地图),然后点击“导入”以上传您的 KML 文件。
相关的 KML 转换对
将 GeoJSON 矢量转换为 Google KML,将轻量级 JSON 坐标数组转换为专门为 Google Earth 和 Google Maps 量身定制的结构化 XML 文档。
将 Google KML 文件转换为 GeoJSON,把分层的 XML 地理数据转变为适合现代网页地图的轻量级矢量 JavaScript 对象表示法。
将 GPS 轨迹 GPX 数据转换为 Google KML 格式后,可在 Google Earth 和自定义网页地图应用中快速显示原始户外轨迹记录。
将 Google KML 地理标记转换为 GPS 轨迹 GPX,将专有的地图功能标准化为通用的航点和轨迹数据。