谷歌 KML (.kml)

OGC 标准

Keyhole 标记语言(KML)是用于表达地理注释和可视化的开放式 XML 标准,最初为 Keyhole Earth Viewer(Google 地球)开发,并由开放地理空间联盟(OGC)标准化。

将 GEOJSON 转换为 KML

免费的浏览器端 GEOJSON 转 KML 转换器。在您的设备上即时转换文件。

检查与元数据

操作系统和文件分析器通过检查开头的二进制字节序列来识别 KML 文件:

选择或将文件拖放到此处

隐私保护 - 文件不会离开您的设备

或粘贴 Ctrl+V
零网络传输隐私保证: 上传至外部服务器的数据为 0 字节。所有处理均在您的浏览器沙箱中本地完成。

字节级文件头签名 (魔数)

操作系统和文件分析器通过检查开头的二进制字节序列来识别 KML 文件:

十六进制签名 (偏移量 0):

3C 6B 6D 6C

ASCII 表示形式: <kml

标准化: OGC KML 2.3 Standard

技术规格

容器架构基于 XML 的地理可视化语法,可定义地标、地面叠加层、3D 模型和摄像机视角
压缩方式未压缩的 XML 文本(打包为 .kmz 文件时使用 ZIP 压缩)
字节序UTF-8 / Unicode 文本流
色彩空间AABBGGRR 十六进制颜色字符串
通道与结构地标、路径、多边形、3D 建筑模型、照片叠加层和导览摄像机路径
最大尺寸WGS 84 坐标:经度、纬度、海拔(米)
透明度AABBGGRR 颜色字符串和 PNG 叠加层支持 Alpha 透明度
流式传输与渐进式加载NetworkLinks 支持从远程地理空间服务器动态流式更新

技术对比矩阵:KML 对比同类产品

技术属性KML (当前)GEOJSONGPXKMZ
3D相机与导览完整的相机倾斜、航向和飞行导览无(平面几何属性)高程跟踪完整的相机倾斜与飞行导览
打包格式纯文本XML文档纯文本JSON文档纯文本XML文档包含doc.kml的ZIP压缩包
颜色格式AABBGGRR(透明度-蓝-绿-红)CSS / 十六进制标准无AABBGGRR
主要目标平台Google地球与3D GISWeb地图(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 内容。

历史渊源与里程碑

2008开放地理空间联盟(OGC)将 KML 2.2 采纳为官方国际地理空间标准。
2005Google 收购 Keyhole Inc. 后,将 Keyhole Earth Viewer 更名为 Google Earth,并使 KML 在全球普及。
2001Keyhole 公司创建 KML,用于标注 3D 卫星影像。

核心优势与特点

  • 可进行丰富的 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 文件。