谷歌 KML (.kml)

OGC 标准

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

将 GEOJSON 转换为 KML

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

检查与元数据

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

选择或将文件拖放到此处

100% 浏览器端私密转换 - 文件绝不会离开您的设备

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

字节级文件头签名 (Magic Bytes)

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

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

3C 6B 6D 6C

ASCII 表示形式: <kml

标准化: OGC KML 2.3 Standard

技术规格

容器架构XML-based geographic visualization grammar defining Placemarks, GroundOverlays, 3D Models, and Camera perspectives
压缩方式Uncompressed XML text (compressed with ZIP as .kmz files)
字节序UTF-8 / Unicode text stream
色彩空间AABBGGRR hexadecimal color strings
通道与结构Placemarks, paths, polygons, 3D building models, photo overlays, and tour camera paths
最大尺寸WGS 84 coordinates: Longitude, Latitude, Altitude (in meters above sea level)
透明度Alpha transparency supported in AABBGGRR color strings and PNG overlays
流式传输与渐进式加载NetworkLinks support dynamic streaming updates from remote geospatial servers

技术对比矩阵: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 KML修复工具修复XML语法,并将描述包装在<![CDATA[...]]>中。

安全分析与解析器攻击向量

KML文件支持NetworkLink和HTML描述气球,可能会触发XXE、SSRF或跨站脚本攻击(XSS)。

已知攻击向量

  • 通过轮询内部内网端点的恶意<NetworkLink>标签进行服务器端请求伪造(SSRF)。
  • 通过在桌面或Web地球气球中执行的<description>标签内部未净化的HTML进行XSS注入。
  • 在自动化KML处理过程中发生XML外部实体(XXE)注入。

防御性最佳实践:

历史渊源与里程碑

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

核心优势与特点

  • 丰富的3D地球可视化:不仅定义点,还定义3D相机角度、航向、倾斜度、高度和飞行导览。
  • 受到Google地球、Google地图、ArcGIS以及所有专业桌面GIS软件的原生支持。
  • 支持NetworkLinks(网络链接),允许Google地球动态流式传输实时天气、航班跟踪和地震更新。

技术局限与劣势

  • 冗长的XML语法导致文件大小比GeoJSON等紧凑格式更大。
  • 颜色使用非常规的AABBGGRR十六进制顺序(透明度-蓝-绿-红),而不是标准的RGBA。
  • 复杂的3D功能(导览、模型)在轻量级Web地图平台上很少得到支持。

趣味技术冷知识

  • Keyhole公司以美国在冷战期间发射的历史性KH(Keyhole)侦察间谍卫星命名。
  • 在KML中,颜色值的书写顺序是倒过来的AABBGGRR:前两个字符是透明度(Alpha),然后是蓝色(Blue),接着是绿色(Green),最后是红色(Red)。
  • ".kmz"文件实际上只是一个标准的.zip压缩包,包含一个"doc.kml"文件以及任何内嵌的图像或3D模型。

常见技术问题

KML 和 KMZ 有什么区别?

KML 是纯文本 XML 文件。KMZ 是压缩的 ZIP 文件,其中包含 KML 文件以及任何自定义地图图标、纹理或 3D 叠加图像。

如何将 KML 转换为 GeoJSON?

您可以在浏览器中直接使用 File2File.app,一键将 Google Earth KML 文件转换为用于网页制图的整洁 GeoJSON。

我可以在 Google Maps 中打开 KML 文件吗?

可以!在 Google Maps 中,转到“已保存” -> “地图” -> “创建地图”(Google 我的地图),然后点击“导入”以上传您的 KML 文件。