谷歌 KML (.kml)
OGC 标准地标标记语言(KML)是用于表达地理注释和可视化的开放式XML标准,最初为Keyhole Earth Viewer(Google地球)开发,并由开放地理空间联盟(OGC)标准化。
将 GEOJSON 转换为 KML
免费的浏览器端 GEOJSON 转 KML 转换器。在您的设备上即时转换文件。
检查与元数据
操作系统和文件分析器通过检查开头的二进制字节序列来识别 KML 文件:
字节级文件头签名 (Magic Bytes)
操作系统和文件分析器通过检查开头的二进制字节序列来识别 KML 文件:
十六进制签名 (偏移量 0):
3C 6B 6D 6CASCII 表示形式: <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 (当前) | 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 KML修复工具修复XML语法,并将描述包装在<![CDATA[...]]>中。
安全分析与解析器攻击向量
KML文件支持NetworkLink和HTML描述气球,可能会触发XXE、SSRF或跨站脚本攻击(XSS)。
已知攻击向量
- 通过轮询内部内网端点的恶意<NetworkLink>标签进行服务器端请求伪造(SSRF)。
- 通过在桌面或Web地球气球中执行的<description>标签内部未净化的HTML进行XSS注入。
- 在自动化KML处理过程中发生XML外部实体(XXE)注入。
防御性最佳实践:
历史渊源与里程碑
核心优势与特点
- 丰富的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 文件。
相关的 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,将专有的地图功能标准化为通用的航点和轨迹数据。