KML学习

来源:互联网 发布:小米手机淘宝商城 编辑:程序博客网 时间:2024/05/16 08:34

KML 2.0介绍

KML全称是Keyhole MarkupLanguage,是一个基于XML语法和文件格式的文件,用来描述和保存地理信息如点、线、图片、折线并在GoogleEarth客户端之中显示, (KML以前的版本能够被Google Earth读取并保存为KML2.0)KML2.0提供以下功能:

  • 指定一个地点的图标和标注来区分每一个地点
  • 为每一个地物定义相应的视角
  • 使用指定到屏幕或地理位置的图片标注
  • 定义地物的显示样式
  • 为标注指定基于简单HTML语法的描述,支持超级链接和图片的显示
  • 使用树形目录管理地物
  • 从本地或远程的网络地址动态的加载KML文件
  • 当Google Earth客户端视图变化时,自动将视图信息发送给指定的源服务器并从服务器获取相关的标注信息

KML被Google Earthviewer处理并显示的过程和HTML网页被浏览器处理差不多,类似于HTML,KML也使用一种基于标签(名称和属性)的语法格式来描述地里标注信息,因此,GoogleEarth viewer是一个KML文件浏览器.

目录

  • 介绍
    • KML2.0新特性
    • 额外的KML资源
    • 这个文件更新过么?
  • KML 概览
    • 一个简单的KML文件(a simple KML file)
    • 地名标注 (place mark)
    • 几何图形 (geometry)
    • 图像叠加层(image overlays)
    • 样式 (style)
      • 样式效果 (style effect)
      • 样式参考 (style reference)
        • 本地参考样式(locally reference style)
        • 基于ID关键字的参考样式(共享样式)(reference style by ID)
      • 样式地图 (style maps)
      • 文件 (Documents)
      • 目录 (folder)
      • 几何图形集合(Geometry collection)
    • 网络链接 (Network link)
      • 地点(location)
      • 刷新的地物(RefreshFeatures)
      • 网络控件(NetworkControl Features)
  • 通用元素(CommonElements
  • 表达模式(Schemas
  • KML语法规则(KML SyntaxRules
    • 文件结构(DocumentStructure)
    • 标签类型(TagTypes)
    • 字符串值(StringValues)
  • KML标签查询(KMLTag Dictionary)
    • 地址
    • 高程模式
    • 颜色
    • 颜色模式
    • 坐标
    • 描述
    • 文件
    • 渲染顺序
    • 突出物
    • 填充物
    • 鸟瞰视图
    • 目录
    • 几何图形颜色
    • 几何图形集合
    • 几何图形比例尺
    • 地面叠加层
    • 超链接
    • 图标
    • 图标样式
    • 内部边界
    • 关键词
    • 标签颜色
    • 标签样式
    • 纬度
    • 经纬度框
    • 线性环
    • 连续线
    • 线条样式
    • 链接描述
    • 链接名
    • 经度
    • 视点
    • 信息
    • 最小刷新间隔
    • 多种几何图形
    • 名称
    • 网络连接
    • 网络连接控件
    • 对象数组域
    • 对象域
    • 打开
    • 外部边界
    • 轮廓
    • 叠加层
    • 父节点
    • 地物标记
    • 多边形
    • 多边形样式
    • 范围
    • 内部刷新
    • 刷新样式
    • 刷新可视标记
    • 旋转
    • 表达模式
    • 比例尺
    • 屏幕叠加层
    • 屏幕坐标
    • 简单对象数组域
    • 简单域
    • 大小
    • 片断
    • 样式
    • 样式地图
    • 样式Url
    • 方格
    • 斜度
    • 类型
    • 可视边界比例尺
    • 可视刷新模式
    • 可视刷新时间
    • 可视格式
    • 可视标签
    • 西
    • 宽度
    • X坐标值
    • Y坐标值

KML 2.0新特性

KML2.0 版本最新特性如下:

  • 新对象,控制通过网络连接传送的文件。
  • GoogleEarth默认格式是KMZ,它是KML文件的压缩文件,这样做的优点是:图像不再需要通过服务器传送,而是直接放在文件中。
  • 标签支持大量的标准HTML特性,比如锚,图像,文本,表格。
  • 标签被标签代替。
  • 特性的语法得到更新。
  • 样式更加强大。包含了,,和支持每一种图形。
  • 线条可以有选择的置于地形上。
  • 由于使用,标签被取消。
  • 网络链接可以将当前视图传送到服务器,接收基于当前位置的KML的文件。

额外的KML 资源

以下是一些额外的资源,以便于帮助你优化KML创建。

  • KML 指南 – 该文档提供入门知识,介绍KML如何工作。访问以下网址: http://www.keyhole.com/kml/kml_tut.html
  • Google Earth KML 消息版 – 在这个论坛与其他人共享KML经验知识,请访问:http://bbs.keyhole.com/ubb/postlist.php/Cat/0/Board/SupportKML

这个文件是最新的么?

在使用该文件之前,请确定你用的是当前最新版本,最新版本含有最权威的信息。

 

KML 概览

Google Earth支持多种地物的表示,能够形象表达GIS信息。所有地物都以KML格式表示。KML控制在Google Earth 3DViewer和地点框中的元素。你可以根据你的目的,用多种方式编辑KML:

  • 使用GoogleEarth编辑KML文件。对于希望创建通过E-mail或者网页来发布的不动态的KML文件的用户来说,GoogleEarth客户端就是一个很好的KML编辑工具,在GoogleEarth客户端重简单按照自己的要求组织您需要的数据并保存成一个独立的文件即可,在开发人员想要测试复杂的KML文档结构的时候,该功能也同样有用,GoogleEarth客户端能够创建和保存几乎所有的KML标签。
  • 使用文本编辑器。你可以使用文本编辑器创建简单KML文件,或者测试KML文件的结构和语法的有效性。
  • TIP: 想要快速的检查KML语法,在GoogleEarth中右键点击一个地名标注或者图片标注,然后在菜单中选择”Copy”,然后你可以打开文本文档然后将KML内容粘贴到里面,就可以方便编辑KML内容了。
  • 使用开发环境自动生成KML文件。你能够使用用来动态生成网页内容的编辑平台来生成KML地表文件,只要能够生成XML文件,就可以同样生成KML文件。

一个简单的KML的文件

以下是一个简单的KML例子:

 

 

 

Google Headquarters

 

-122.0839

37.4219

540.68

0

3

 

 

-122.0839,37.4219,0

 

 

 

该例有一个标签,包含一个被命名为Google Headquarters的标签,当这个文件被GoogleEarth客户端读取的时候,将会以默认的图标在指定的经纬度处显示。中的元素标示显示该地物的相机视点。

注意是如何包含HTML标签和超链接。客户端浏览器将显示这个描述,按照HTML标签格式化,并会打开一个Web窗口。(这种情况下,Google主页将会打开)

你可以复制该范例内容并保存成扩展名为KML的文本文件,在Google Earth之中打开查看效果。

地名标注Placemarks

地名标注是一种表示地点的直接方式,在GoogleEarth中,一个地物标记存在于地物框列表项中,非常普遍的是,它通过一个图标与地点关联起来,当然,地名标注也可以跟路径,多边形,或者3D图形。当你创建一个地物标记的时候,可以使用以下属性和特性:

  • 几何形状Geometric shapes –地块由很多几何图块描述,所以地物标记可以包含点,线,多边形,或者这些地块的任意集合。
  • 位置和海拔Location and altitude –对于一个地物标记的每一个几何图块,你可以定义几何图块的坐标和海拔,任意突出物以及与地面的关系。例如,你可以定义一个位于地形之上长达2KM路径的地物标记,并将该路径突出,从侧面看,像围栏一样。
  • 默认图标Default icon – 当标注包含点信息时,你可以使用GoogleEarth列表中的图标作为地物标记的默认标示。
  • 显示外表Appearance –最后,你可以使用许多通用的KML元素控制地物的显示样式。比如,你可以设置名称,描述,默认“相机”视图,以及默认的可视性,而且还可以定义地物标签的颜色和大小。

几何图形Geometry

Google Earth支持多种二维的几何图形,包括:

  • – 点可以用图标或标签表示。地物标记的点在不同的海拔加以注释。
  • 线– 包括线条,连续线,但是不包含道路线。如点一样,也支持不同的海拔高度表示。
  • 多边形-它可以表示为平面或三维,并且样式有填充,或者不同样式的边界。如同线一样,支持在不同的海拔高度表示。

应用以下方法,你可以控制几何图形的显示:

  • 定义坐标-坐标值必须以如下格式输入:经度、纬度、海拔。KML使用描述图形。注意:地理坐标的格式顺序为:经度,纬度,海拔,请勿错排。
  • 创建三维图形–点、线、面可以突出地面,将点放置在特定的海拔,然后使用标签。利用点、线、面可以非常容易地创建形象的数据。比如地物标记,可以利用创建一条从地面延伸出来的垂直线,这条线的样式颜色因地物类型不同而不同。
  • 分类为集合-你可以使用标签将多边形和线分为若干集合。这个功能在创建三维图形的时候尤其有用,例如,一旦定义了一种集合,你可以非常容易地切换它的可视性。

图像叠加层Image Overlays

你可以使用图像丰富可视化表达手段。比如表示在建的GIF图片,或者作为图例的图片。KML有两种图像叠加层:

  • 地面叠加层Ground Overlays – 查看 标签.地面叠加层是附加到地面的图像,使用地面叠加层可以表示富含信息的点,如定相计划或者天气地图。此外ia,地面叠加层使用标签定义东南西北,通过刷新参数,你可以加载动态的图片,比如天气预报地图,或者依据三维Viewer的不同而显示不同的图像。
  • 屏幕叠加层Screen Overlays – 查看标签 .屏幕叠加层是与相机视图无关而附加到屏幕上的图像。比如图例,或者版权信息,如地面叠加层一样,你可以定义多种屏幕叠加层并且关联到一个文件夹。可以用绝对坐标定义屏幕叠加层或者通过百分比的形式定义。当然,颜色也是可以定义的,具体请参考和,注意:屏幕叠加层只能在文本编辑器中创建,在GoogleEarth Client中不可建。

可以在标签和标签引用到两种图像叠加层,而跟文件地址无关。下面是一个引用存于本地硬盘上的屏幕叠加层的例子。

 

C:\Documents and Settings\HP\MyDocuments\Google\GoogleEarth\reLegend.gif

 

注意,远程用户并不需要本地叠加层的拷贝如果图像是远程传送过来的。这种方式下,你可以实时提供叠加层信息,如天气或者进展中的地段变化。也可以包含子元素,比如,用来控制更新远程服务器图像。

使用图像叠加层时,可以使用如下特性:

  • 文件类型File types – 你可以使用JPG, PNG, GIF, orTIFF作为叠加层。
  • 渲染顺序Draw order –当使用重叠的叠加层时,可以使用标签标示叠加层的顺序。比如,带有黑色边界的叠加层图片置于其他图片背后,以便显示更多的有用信息。
  • 旋转Rotation – 可以使用标签,图片可以从北向顺时针或逆时针旋转180度

样式Styles

KML样式用来定义几何图形、图标、标签等的显示外观。它包含颜色、大小、透明性,类似于HTML和CSS,KML样式可以在元素内定义或者通过引用ID以便被其他更多元素引用。像HTML一样,设计样式的类库,以便在需要的时候引用能够大大提高效率,而本地的样式只用来表示简单的只出现一次的物体。

样式可以应用在以下元素:

  • 图标Icons
  • 标签Labels
  • 线Lines
  • 多边形 Polygons—突出的线也作为多边形处理
  • 描述球Description Balloon

样式效果Style Effects

KML样式支持如下效果:

  • 颜色和透明性Color and opacity –你可以改变以上所提所有元素的颜色和透明性。透明性作为标签的第一个十六进制对。比如,50%的透明度,粉红色标签将会定义成:7fffaaff。当你设置一个图标的颜色,颜色值被加到存在的图标图像上,正因为此,颜色样式在白色和灰色比例尺的图像上非常明显。应用于线的颜色样式既应用于从一个点突出的图形,也包括开启了边界功能的多边形,多边形边界的颜色和宽度继承自线的特性。
  • 比例Scale –比例尺只用于标签和图标,应用于标签时,其原始大小为1.0的图标图片,或者默认显示大小。应用于图标时,比例大小跟图像一样。
  • 宽度Width –宽度以像素定义,并且只用于线条。对于从地表突出的线状物,宽度决定了多边形的轮廓样式。例如,假如你使用带轮廓多边形,轮廓的颜色和宽度继承自线条样式。
  • 随机颜色Random Color – 你可以使用将所有元素的颜色设置为随机。
  • 多边形填充和外边框样式Fill and Outline –该样式只对多边形有影响,你可以将填充颜色设为一种,而边框颜色另取一种。带边框多边形的样式继承自轮廓的要素
  • 用户定制描述Customized Descriptions –使用标签和子元素创建定制的标题和描述。这些气球在用户点击地物或者一个图标时出现。描述标题继承自标签文本。

 

 

你可以使用GoogleEarth中的样式要素创建自定义样式,但是假如你需要创建3D模型或者其他具有多种样式的数据,你需要理解如何使用样式参考,以便创建高效的KML文件,用于快速显示,同时减少解析错误。

该部分讲述两种样式参考

本地参考样式(Locally ReferencedStyles

你可以用地物标记定义本地样式,就像CSS样式一样,本地参考KML样式只需要定义这些设置,因为指向父地物标记的参考不明显并且Selector也不是必备的。下面这个例子使用了本地颜色样式。

 

Google Earth - New Path

 

 

1

 

-85.10427072849437,46.73819606924774,0-85.08405670114024,46.72192334662796,0

 

 

 

 

这个参考样式用于多个元素,并且在3Dmodeling中运行稳定,但仍有少数未能共享该样式。在大多数情况下,应该尽量避免使用本地样式。当很多地物标记都有本地样式时,GoogleEarth会解译并处理每一个样式,所以,处于运行效率考虑,应该使用带ID的样式,因为GoogleEarth只需要处理给定的样式集,即使这个样式集是用于地物标记的。

基于ID的样式参考(共享样式)StylesReferenced by ID (Shared Styles)

当用复杂的样式表达多种元素,如图标、线条、多边形时,在文件的顶部创建一个父样式,所有元素的样式都在这里定义。这样,其它的地物标记就可以由ID参考到样式,假如地物标记中包含已经定义好样式的要素,则样式就显示出来了。如此,对于同类的几何图形,你只需要一份样式定义,所有相关的几何图形共享样式。并且,你可以将样式信息存放到一个外部文件中,通过访问。要定义单独的样式表单,请使用KML语法,以

 

Google Earth - New Polygon

Here is some descriptive text

#myDefaultStyles

 

1

1

relativeToGround

 

 

 

-85.08054479600936,46.74684774665595,1840-85.03550980268059,46.75771393277484,1840

-85.03947773061398,46.73244936995838,1840-85.06072644383477,46.728009518373,1840

-85.08054479600936,46.74684774665595,1840

 

 

 

 

 

 

Google Earth - New Path

#myDefaultStyles

 

1

 

-85.10427072849437,46.73819606924774,0-85.08405670114024,46.72192334662796,0

 

 

 

 

 

样式地图Style Maps

样式地图定义了地物标记图标的显亮和正常状态。当鼠标在图标上方时,地物标记图标显亮,否则地物正常显示,这样就提供了鼠标移动的效果。

下面这个例子讲述了实现”rollover”图标改变的可能性。这里定义了两个样式IDs,正常地物标记和显亮地物标记。在中通过定义正常和显亮状态,并参考到前面定义的两个样式IDs。GoogleEarth使用标签参考到适当的元素。地物标记本身没有本地样式,而是参考样式地图,通过这个参考到适合的已定义全局样式。

 

 

 

Simple Icon Rollover

1

 

 

 

 

normal

#normalPlacemark

 

 

highlight

#highlightPlacemark

 

 

 

Example Placemark

#exampleStyleMap

 

-122.0856545755255,37.42243077405461,0

 

 

 

 

分组机制Grouping Mechanisms

正如在StyleReferencing的例子中提到的一样,一个KML文件可以包含多个地物标记。单个地物标记可以包含多种几何属性,如点和多边形,随着数据的增长,你可以使用文件夹组织地物标记,叠加层甚至是其它文件夹。为了达到这个目的,KML提供了分组机制。

文件Documents

文件是组织KML结构的根节点,它包含样式,元素格式以及相应的子节点,如文件夹、地物标记和叠加层。当你打开一个包含多种样式和地物标记的文件,它会依照你的要求将内容展开。一个KML文件只有一个标签。

注意:当你使用全局样式或格式时,你需要用标签将这些元素包含起来,即使你的KML文件只包含一个要素,但只要有格式或全局样式定义,就必须将其放置在Document结构中。

文件夹Folders

很多时候,使用KML文件夹组织地物标记,屏幕和地面叠加层以及其它文件夹。使用文件夹组织要素集合和叠加层分组,并为分组的地物标记或叠加层提供统一的视图,你可以像HTML的表格一样定义多个文件夹。

另外,文件夹有属性,用来标记文件夹加载时是否展开。

几何图形几何GeometryCollections

你可以使用元素在单个地物标记中将许多几何图形属性分组,例如当创建的3Dmodel在某个区域显示时。这种方法对于特殊的复合模型特别有效,也非常适合显示部模型或者你设计的troubleshoot。

网络链接Network Links

很多时候,人们不是各自发布数据,而是使用网络链接在多用户环境中通过一个指向文件的链接快速共享KML文件。你可以将网络链接想象成一个包含属性数据并放置在服务器上的文件夹(不管是局域网或者互联网)。这使用户在网络链接中非常容易地共享动态数据,例如,你可以收集中,人们可以看到非常有层次的天气预报模型。

网络连接可以使用所有文件夹可以使用的通用元素,下面描述对应于网络链接的某一个要素。

地点Location

使用元素标示KML地址或其它你希望的脚本。

注意:当使用局域网路径时,KML对文件路径的分隔符是”/”,而不是”\”。

刷新要素Refresh Features

网络链接提供需多刷新元素,以便你定义是否要刷新数据,刷新的频率,以及视图改变时是否需要刷新。下面这些要素可以被设定:

  • 内部刷新Refresh interval –使用设置网络链接在加载文件时刷新或周期性刷新。当你将模式设置为内部(internal)时,使用标示刷新的间隔时间。
  • 基于视图刷新View-based refresh –基于视图的查询在以下三种情况下重新返回:周期性刷新、内部刷新、视点停止运动后的最长静止时间。当处于活动状态时,GoogleEarth发送包含视图窗口坐标的HTTPGET到数据源服务器,然后数据源服务器将当前活动窗口的数据返回。你也可以使用元素设置视图的数据边界,默认情况下,视图的边界与GoogleEarth从服务器请求回来的数据边界是1:1关系,也就是说设置为1.0,你也可以改变为0.75,这样,就将原来显示的数据缩小到75%的视图窗口。
  • 飞行时刷新Fly to View on Refresh -元素是一个在元素中自动更新视图的可转换控件,你可以使用该要素控制Viewer的行为,例如,当你想对一系列要素进行”服务器端旅行”,或者当你想在突发状态下定义将Viewer指向新坐标的能力。

网络控件要素Network ControlFeatures

在元素中有许多要素,允许网络链接的创建者控制网络链接的行为,参考查看更多细节。