`
javahigh1
  • 浏览: 1276719 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
阅读更多

本章首先对KML的语法进行了简单的介绍了,然后介绍了KML服务,展示了如何将MapGuide的数据导出为KML,使Google Earth成为MapGuide的客户端。

1.1 KML

Google EarthGoogle公司开发的虚拟地球软件,它可以带您飞往地球上的任何地方,您可以在 Google Earth上看到卫星图像、地图、地形和 3D 建筑等。而且,Google Earth支持使用KML将外部数据叠加在自身的数据上,KML定义了如何将外部的向量和图像数据动态地加载和显示在Google Earth中。

1.1.1 KML简介

KML全称是Keyhole Markup Language KML,是一个基于XML语法和文件格式的文件,用来描述和保存地理信息如点、线、图片、折线并在Google Earth客户端之中显示,KML提供以下功能:

l 指定一个地点的图标和标注来区分每一个地点。

l 为每一个视图指定明确的视角来创建不同的特写镜头。

l 使用指定到屏幕或地理位置的图片标注。

l 为特定种类的标注定义显示样式。

l 为标注指定基于简单HTML语法的描述,支持超级链接和图片的显示。

l 使用目录(folders)对标注进行树形的分类管理(为了便于理解和符合习惯,将“folder”翻译为“目录”,实际上是代表一组地理标注)

l 基于时间戳记的标注可以用来进行动态的播放。

l 从本地或远程的网络地址动态的加载KML文件。

l Google Earth客户端视图变化时,自动将视图信息发送给指定的源服务器并从服务器获取相关的标注信息。

KMLGoogle Earth显示的过程和HTML网页被浏览器处理差不多,而且和HTML一样,KML也使用一种基于标签(名称和属性)的语法格式来描述地里标注信息,可以说,Google Earth是一个KML文件浏览器。

MapGuide中的地图导出为KML时,我们希望导出的KML数据在Google Earth中能够有MapGuide一致的显示效果和行为,所以导出的KML应该保持和MapGuide中原始地图相同的地图数据、类似的地图样式和浏览行为,为此MapGuide用到了许多KML的高级功能,如Region

1.1.2 地标

地标是 Google 地球中最常用的地图项之一。它使用黄色图钉作为图标,在地球表面标记出位置。最简单的地标只包含一个 <Point> 元素,它指定地标的位置。您可以指定地标的名称和自定义图标,还可以为地标添加其他几何元素。

Google 地球中打开 KML Samples 文件,并展开“Placemarks”子文件夹。该文件夹包含三种不同类型的地标:“简单”、“浮动”和“凸出”。简单地标的 KML 代码如下:

<?xml version="1.0" encoding="UTF-8"?>

<kml xmlns="http://www.opengis.net/kml/2.2">

<Placemark>

<name>Simple placemark</name>

<description>

Attached to the ground. Intelligently places itself at

the height of the underlying terrain.

</description>

<Point>

<coordinates>-122.0822035425683,37.42228990140251,0</coordinates>

</Point>

</Placemark>

</kml>

该文件的结构分解如下:

l XML 标头。这是每个 KML 文件的第 1 行。该行前面不能有空格或其他字符。

l KML 名称空间声明。这是每个 KML 2.2 文件的第 2 行。

l 包含以下元素的地标对象:

Ø 用于标识地标的“名称”。

Ø 附着到地标的“气泡框”中显示的“说明”。

Ø 指定地标在地球表面位置的“点”-“经度”、“纬度”及“高度”(可选)。

用户通常认为的 Google Earth中的“地标”,实际上是 KML 中的 <Placemark> 元素,包含一个 <Point> 子元素。点地标是您在 Google Earth的三维查看器中绘制图标和标签的唯一途径。默认情况下,该图标是您熟悉的黄色图钉。在 KML 中,<Placemark> 可包含一个或多个几何元素,例如 LineStringPolygon Model。但只有具有点的 <Placemark> 可以有图标和标签。点用于放置图标,但点本身并无图形表示。

1.1.3 地标中的描述性 HTML

如果您想在 <description> 标签内编写标准的 HTML,可将它放在 CDATA 标签内。如果不放在 CDATA 标签内,必须写上尖括号作为实体引用,以避免 Google Earth错误地对 HTML 进行语法解析(例如,符号 > 写为 >,符号 < 写为 <)。这是 XML 的标准功能,不是 Google Earth所特有的。

请考虑具有 CDATA 标签和不具有 CDATA 标签的 HTML 标记的不同。请先查看下面具有 CDATA 标签的 <description>

<?xml version="1.0" encoding="UTF-8"?>

<kml xmlns="http://www.opengis.net/kml/2.2">

<Document>

<Placemark>

<name>CDATA example</name>

<description>

<![CDATA[

<h1>CDATA Tags are useful!</h1>

<p><font color="red">Text is <i>more readable</i> and

<b>easier to write</b> when you can avoid using entity

references.</font></p>

]]>

</description>

<Point>

<coordinates>102.595626,14.996729</coordinates>

</Point>

</Placemark>

</Document>

</kml>

下面是不具有 CDATA 标签的 <description>,这样特殊字符必须使用实体引用:

<?xml version="1.0" encoding="UTF-8"?>

<kml xmlns="http://www.opengis.net/kml/2.2">

<Document>

<Placemark>

<name>Entity references example</name>

<description>

&lt;h1&gt;Entity references are hard to type!&lt;/h1&gt;

&lt;p&gt;&lt;font color="green"&gt;Text is

&lt;i&gt;more readable&lt;/i&gt;

and &lt;b&gt;easier to write&lt;/b&gt;

when you can avoid using entity references.&lt;/font&gt;&lt;/p&gt;

</description>

<Point>

<coordinates>102.594411,14.998518</coordinates>

</Point>

</Placemark>

</Document>

</kml>

1.1.4 地面叠加层

通过地面叠加层,可在 Google 地球的地形上“叠加”图像。<Icon> 元素包含了指向叠加图像“.jpg”文件的链接。以下是 KML Samples 文件中的地面叠加层示例,展示了 2001 年喷发的埃特纳火山:

<?xml version="1.0" encoding="UTF-8"?>

<kml xmlns="http://www.opengis.net/kml/2.2">

<Folder>

<name>Ground Overlays</name>

<description>Examples of ground overlays</description>

<GroundOverlay>

<name>Large-scale overlay on terrain</name>

<description>Overlay shows Mount Etna erupting

on July 13th, 2001.</description>

<Icon>

<href>http://code.google.com/apis/kml/documentation/etna.jpg</href>

</Icon>

<LatLonBox>

<north>37.91904192681665</north>

<south>37.46543388598137</south>

<east>15.35832653742206</east>

<west>14.60128369746704</west>

<rotation>-0.1556640799496235</rotation>

</LatLonBox>

</GroundOverlay>

</Folder>

</kml>

该示例使用文件夹(名为“Ground Overlays”)作为对其内容进行分组和标记的机制。请注意在您将 KML Samples 文件载入 Google 地球中时,该文件夹在“位置”面板中是如何显示的。

地面叠加层的定位由 <LatLonBox> 标签控制。边框值以南纬、北纬和东经、西经形式给出。此外,旋转值是针对 y 轴与网格北端不重合的图像给出的。该示例为叠加层使用 JPEG 图像。Google 地球还支持 BMPGIFTIFFTGA PNG 格式。

1.1.5 路径

Google Earth中可以创建多种不同类型的路径,并且可轻松地利用您的数据充分发挥创造力。在 KML 中,路径是用 <LineString> 元素创建的。看一看 Paths 文件夹中的“Absolute Extruded”示例,您就会明白如何用以下代码来生成形状:

<?xml version="1.0" encoding="UTF-8"?>

<kml xmlns="http://www.opengis.net/kml/2.2">

<Document>

<name>Paths</name>

<description>Examples of paths. Note that the tessellate tag is by default

set to 0. If you want to create tessellated lines, they must be authored

(or edited) directly in KML.</description>

<Style id="yellowLineGreenPoly">

<LineStyle>

<color>7f00ffff</color>

<width>4</width>

</LineStyle>

<PolyStyle>

<color>7f00ff00</color>

</PolyStyle>

</Style>

<Placemark>

<name>Absolute Extruded</name>

<description>Transparent green wall with yellow outlines</description>

<styleUrl>#yellowLineGreenPoly</styleUrl>

<LineString>

<extrude>1</extrude>

<tessellate>1</tessellate>

<altitudeMode>absolute</altitudeMode>

<coordinates>

-112.2550785337791,36.07954952145647,2357

-112.2549277039738,36.08117083492122,2357

-112.2552505069063,36.08260761307279,2357

-112.2564540158376,36.08395660588506,2357

-112.2580238976449,36.08511401044813,2357

-112.2595218489022,36.08584355239394,2357

-112.2608216347552,36.08612634548589,2357

-112.262073428656,36.08626019085147,2357

-112.2633204928495,36.08621519860091,2357

-112.2644963846444,36.08627897945274,2357

-112.2656969554589,36.08649599090644,2357

</coordinates>

</LineString>

</Placemark>

</Document>

</kml>

该代码生成的其实只是高于地面的一条线。<tessellate> 标签把线切成小段,而 <extrude> 标签将线向下延伸到地面。

1.1.6 多边形

您可以使用多边形来创建简单的建筑物及其他形状。有关示例,请查看 KML Samples 文件中的“Polygons”文件夹。

五角大楼的示例是通过绘制简单的内外壳,然后将它们向下凸出到地面生成的。代码如下:

<?xml version="1.0" encoding="UTF-8"?>

<kml xmlns="http://www.opengis.net/kml/2.2">

<Placemark>

<name>The Pentagon</name>

<Polygon>

<extrude>1</extrude>

<altitudeMode>relativeToGround</altitudeMode>

<outerBoundaryIs>

<LinearRing>

<coordinates>

-77.05788457660967,38.87253259892824,100

-77.05465973756702,38.87291016281703,100

-77.05315536854791,38.87053267794386,100

-77.05552622493516,38.868757801256,100

-77.05844056290393,38.86996206506943,100

-77.05788457660967,38.87253259892824,100

</coordinates>

</LinearRing>

</outerBoundaryIs>

<innerBoundaryIs>

<LinearRing>

<coordinates>

-77.05668055019126,38.87154239798456,100

-77.05542625960818,38.87167890344077,100

-77.05485125901024,38.87076535397792,100

-77.05577677433152,38.87008686581446,100

-77.05691162017543,38.87054446963351,100

-77.05668055019126,38.87154239798456,100

</coordinates>

</LinearRing>

</innerBoundaryIs>

</Polygon>

</Placemark>

</kml>

1.1.7 几何图形样式

如果您在 KML 文档开头定义了样式,并定义了它的 ID,就可以在文档其他地方定义的几何图形、地标和叠加层中使用该样式。因为可有多个元素使用同一个样式,因此以这种方式定义和使用的样式称为“共享样式”。您只需定义指定样式一次,即可用 <styleUrl> 元素多次引用它。如果样式定义位于同一文件内,请在样式 ID 前加 # 号。如果样式定义位于外部文件中,请在 <styleUrl> 元素中包含完整的网址。

KML Samples 文件包含许多共享样式,每个样式都在文件开始时使用 ID 进行定义。请注意,您的 ID 最好是描述性的字符串,因为这样您可以很容易地判断其作用。以下是一个样式的示例(“transBluePoly”),它将多边形面定义为透明蓝色,将多边形边的线宽定义为 1.5(默认颜色为白色)。Google 园区 41 号楼的示例会使用该样式(在“Polygons”文件夹中):

<?xml version="1.0" encoding="UTF-8"?>

<kml xmlns="http://www.opengis.net/kml/2.2">

<Document>

<Style id="transBluePoly">

<LineStyle>

<width>1.5</width>

</LineStyle>

<PolyStyle>

<color>7dff0000</color>

</PolyStyle>

text-align: justify; text-indent: 21.2pt; margin: 0cm 0cm 0p

分享到:
评论

相关推荐

    kml-toolbox_kml-toolbox_

    7. **地图服务集成**:KML Toolbox还可以连接到各种在线地图服务,如谷歌地球、OpenStreetMap等,使用户能够在不同的地图背景下查看和操作KML数据。 8. **错误检查与修复**:工具具有自动检测和修复KML文件语法错误...

    kml转dxf软件

    它由Google推出,广泛应用于地图服务和地球浏览软件,如Google Earth和Google Maps。 二、DXF格式解析 DXF是Autodesk公司开发的一种文件格式,用于在AutoCAD和其他CAD软件之间交换图形数据。它包含了二维和三维几何...

    中国各省边界kml文件

    这些文件在地理信息系统(GIS)中具有重要的应用价值,可以方便地在Google Earth、地图服务或其他支持KML的软件中显示中国的省级行政区划。 KML文件结构主要包括以下几部分: 1. **文档元素(Document)**:文件的...

    Kml Builder 编辑器

    而Google Maps则是一个在线地图服务,提供路线导航、交通状况、街景视图等功能。Kml Builder编辑的KML文件可以直接在这些平台上加载,为用户提供个性化地图体验。 ### 应用场景 Kml Builder广泛应用于地理教育、...

    全国行政区边界-KML格式

    KML(Keyhole Markup Language)是由Google开发的一种XML语言,主要用于存储地理标注和三维模型,广泛应用于地图服务,如Google Earth、奥维地图、GPS工具箱等。 1. KML格式详解: KML文件是以XML为基础的文本文件...

    KML文件格式详细介绍.pdf

    KML文件的用途非常广泛,主要包括卫星导航、定位、位置服务等领域。通过KML文件,我们可以将地理位置和相关信息以一种易于理解的方式呈现给用户,例如通过Google Earth软件查看世界各地的地理信息。使用KML文件,...

    全国铁路和国道谷歌地球KML文件

    同时,这些数据也可以被开发者用于GIS(地理信息系统)软件开发,进行数据分析、规划或地图服务的构建。例如,可以结合人口数据、交通流量信息等,研究铁路和公路对区域经济的影响,或者评估交通网络的效率和优化...

    2_SuperMap iServer Java服务

    - **标准服务**:支持多种标准服务的配置与发布,如OGC服务、KML服务和GeoRSS服务等。 #### 六、标准服务配置与发布 - **OGC服务**:Open Geospatial Consortium (OGC)是一系列开放标准的集合,用于地理数据的...

    全国水系基础地理数据kml

    为了利用这些数据,我们需要使用支持KML的软件或服务,比如Google Earth、QGIS、ArcGIS等。通过这些工具,可以进行数据的浏览、编辑、分析和可视化。例如,我们可以查看不同水系的流向,计算流域面积,分析水系分布...

    全国行政村kml文件

    全国行政村KML文件是一种地理信息系统(GIS)的数据格式,用于存储地理位置和相关描述信息。KML,全称为Keyhole Markup Language,是由Google开发的一种XML方言,主要用于在地图应用程序中展示地理信息,如Google ...

    全国的省市县城乡镇边界kml

    5. 为政策制定者提供参考,进行行政规划或公共服务设施布局。 总的来说,这个KML文件是GIS领域的宝贵资源,能够帮助用户更深入地理解和分析中国的行政边界和地理信息,适用于教学、研究和规划等多个领域。通过下载...

    全国 省、市、县、乡镇、村 kml

    标题 "全国 省、市、县、乡镇、村 kml" 暗示这是一个地理信息系统(GIS)相关的数据资源,其中包含中国各级行政区域的KML(Keyhole Markup Language)文件。KML是一种用于存储地理标记数据的XML格式,常用于Google ...

    KML文件转换工具

    3. **云平台服务**:探索云平台上提供的在线转换工具或API接口,利用云端资源进行高效处理。 总之,KML文件转换工具是通信行业中一个非常实用的辅助工具,特别是在基站规划、网络优化等领域具有重要作用。通过熟练...

    KML基站图层制作工具

    总的来说,KML基站图层制作工具是网络优化工程师的得力助手,它利用KML语言的强大功能,结合地图服务,提供了直观的基站分布视图,极大地提高了网络优化工作的效率和准确性。通过学习和熟练使用此类工具,专业人员...

    c# sharpKML解析google全格式kml文件

    5. **与其他.NET框架集成**:由于SharpKML是基于.NET的,它可以轻松地与ASP.NET、WPF、WinForms等.NET框架结合,用于构建Web服务、桌面应用或GIS系统。 在实际使用sharpkml-25721这个压缩包时,首先你需要将其解压...

    KML生成工具KML生成工具

    KML(Keyhole Markup Language)是一种基于XML的地理标记语言,由谷歌开发并广泛用于创建、存储和分享地理数据,特别是在谷歌地图和谷歌地球上。KML文件能够展示地理位置信息,如点、线、多边形、热图层、信息窗体、...

    gpx格式文件转换成KML

    1. **准备工具**:首先,你需要一个支持GPX和KML转换的软件或在线服务。例如,QGIS是一款免费且开源的GIS软件,提供了丰富的地理数据处理功能,包括格式转换。此外,也有一些在线转换工具,如GPSVisualizer,方便...

    开源的kml读取操作工具libkml

    - 开发地图应用的后端服务,支持用户上传和分享KML文件。 - 将KML数据与其他数据源(如GIS数据库)进行整合。 总的来说,LibKML是KML处理的一个强大工具,对于需要处理地球空间数据的开发者来说,它是一个不可或缺...

    奥运会KML调用

    在奥运会信息服务系统中运用KML技术,可以通过调用特定的KML文件来展示与奥运会相关的地理位置信息。 #### KML语法规则 - **文档结构**:KML文档需遵循XML的基本语法规则。 - XML标签必须关闭。 - XML标签区分大...

Global site tag (gtag.js) - Google Analytics