KML是一种专为地理可视化设计的XML格式,用于在Google Earth等平台描述点、线、面等要素的位置、样式与交互;其文件须以XML声明和OGC命名空间开头,核心结构含,坐标顺序为经度,纬度,高度。

KML(Keyhole Markup Language)是一种专为地理空间数据设计的 XML 格式,本质是用结构化文本描述点、线、面、模型、图像叠加层等地理要素,并定义其位置、样式、交互信息和三维效果。它不是通用数据交换格式,而是面向“可视化表达”的轻量级地理标记语言,核心用途是在 Google Earth、图新地球、奥维地图等平台中快速呈现可交互的地图内容。
KML 文件的基本组成结构
一个合法 KML 文件必须满足 XML 语法规范,并以特定命名空间声明开头:
- 第一行是标准 XML 声明:
,不可有空格或换行前置 - 第二行必须包含 OGC 官方命名空间:
(KML 2.2 是当前主流支持版本) - 根元素
下通常嵌套一个或容器,用于组织地理要素 - 所有地理对象都封装在
中,它是承载“一个可显示实体”的最小单位(如一个地标、一段路线、一块区域) - 每个
可包含(标题)、(悬浮提示或弹窗内容)、几何体(、、等)以及可选的
KML 支持的核心地理要素类型
KML 通过不同几何标签表达空间对象,坐标顺序统一为“经度,纬度,高度”,单位为十进制度(WGS84 坐标系):
-
点(Point):用
表示单个位置,常配合图标与气泡说明使用116.4074,39.9042,0 -
线(LineString):多个坐标用空格分隔,如
,适合路径、道路、轨迹116.4,39.9 116.5,39.95 -
面(Polygon):由闭合环构成,外环定义边界,内环可挖洞;支持
拉伸成三维体块1 - 图像叠加层(GroundOverlay):将 JPG/PNG 地图切片铺在地表指定经纬度范围内,适用于历史地图、遥感影像、规划图
- 网络链接(NetworkLink):动态加载远程 KML,实现数据实时更新(如天气、地震热力图)
KML 的样式与交互能力
KML 不仅描述“在哪里”,还控制“长什么样”和“怎么互动”:
-
可嵌入内部或全局定义,通过(图标)、(文字)、(线条)、(填充)设置视觉效果 - 颜色值采用 AARRGGBB 十六进制格式(如
ff0000ff表示不透明红色),A=Alpha(透明度),R/G/B=红绿蓝 -
支持 HTML 片段,可嵌入图片、超链接、表格,点击地标时自动弹出富文本框 - 支持时间动画(
或),配合 Google Earth 时间滑块展示动态过程
KML 与 KMZ 的关系和实用建议
KMZ 是 KML 的 ZIP 压缩包,不是另一种格式,而是打包方案:
- KMZ 必须包含一个名为
doc.kml(或任意名但需在 ZIP 根目录)的主 KML 文件 - 图片、图标、3D 模型(.dae)、字体等资源文件需放在 ZIP 内,且 KML 中引用路径必须为相对路径(如
images/marker.png) - 压缩时务必用标准 ZIP 格式(Windows 自带压缩、7-Zip 默认 ZIP 即可),避免 RAR/7z 等非兼容归档
- 实际分享时优先发 KMZ:体积更小、资源不丢失、打开即用;调试编辑时用 KML:方便文本编辑器直接修改










