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

KML(Keyhole Markup Language)是一种专为地理空间数据设计的 XML 格式,本质是用结构化文本描述点、线、面、模型、图像叠加层等地理要素,并定义其位置、样式、交互信息和三维效果。它不是通用数据交换格式,而是面向“可视化表达”的轻量级地理标记语言,核心用途是在 Google Earth、图新地球、奥维地图等平台中快速呈现可交互的地图内容。
KML 文件的基本组成结构
一个合法 KML 文件必须满足 XML 语法规范,并以特定命名空间声明开头:
- 第一行是标准 XML 声明:
<?xml version="1.0" encoding="UTF-8"?>,不可有空格或换行前置 - 第二行必须包含 OGC 官方命名空间:
<kml xmlns="http://www.opengis.net/kml/2.2"></kml>(KML 2.2 是当前主流支持版本) - 根元素
<kml></kml>下通常嵌套一个<document></document>或<folder></folder>容器,用于组织地理要素 - 所有地理对象都封装在
<placemark></placemark>中,它是承载“一个可显示实体”的最小单位(如一个地标、一段路线、一块区域) - 每个
<placemark></placemark>可包含<name></name>(标题)、<description></description>(悬浮提示或弹窗内容)、几何体(<point></point>、<linestring></linestring>、<polygon></polygon>等)以及可选的<style></style>
KML 支持的核心地理要素类型
KML 通过不同几何标签表达空间对象,坐标顺序统一为“经度,纬度,高度”,单位为十进制度(WGS84 坐标系):
-
点(Point):用
<coordinates>116.4074,39.9042,0</coordinates>表示单个位置,常配合图标与气泡说明使用 -
线(LineString):多个坐标用空格分隔,如
<coordinates>116.4,39.9 116.5,39.95</coordinates>,适合路径、道路、轨迹 -
面(Polygon):由闭合环构成,外环定义边界,内环可挖洞;支持
<extrude>1</extrude>拉伸成三维体块 - 图像叠加层(GroundOverlay):将 JPG/PNG 地图切片铺在地表指定经纬度范围内,适用于历史地图、遥感影像、规划图
- 网络链接(NetworkLink):动态加载远程 KML,实现数据实时更新(如天气、地震热力图)
KML 的样式与交互能力
KML 不仅描述“在哪里”,还控制“长什么样”和“怎么互动”:
-
<style></style>可嵌入<placemark></placemark>内部或全局定义,通过<iconstyle></iconstyle>(图标)、<labelstyle></labelstyle>(文字)、<linestyle></linestyle>(线条)、<polystyle></polystyle>(填充)设置视觉效果 - 颜色值采用 AARRGGBB 十六进制格式(如
ff0000ff表示不透明红色),A=Alpha(透明度),R/G/B=红绿蓝 -
<description></description>支持 HTML 片段,可嵌入图片、超链接、表格,点击地标时自动弹出富文本框 - 支持时间动画(
<timespan></timespan>或<timestamp></timestamp>),配合 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:方便文本编辑器直接修改










