GOOGLE地球浏览器分析(五):KML文件基本格式

保留所有版权。如需转载,请联系作者,并在醒目位置注明出处
第三节我们介绍了KML文件的定义及其在GOOGLE地图浏览器中的地位,并给出了一个简单的样例文件。下面我们详细介绍KML文件的格式。
1 基本格式
基本格式的KML文件是指可以直接由Google Earth创建的KML文件,它包括地点标记、叠层、路线和多边形。下面分别介绍。
1.1 地点标记(Placemarks)
上一节我们给出了一个地点标记(Placemarks)的示例。地点标记是 Google Earth 中最常用的地理特征,它使用一个黄色的图钉在地球表面标记一个位置。一个简单的地点标记的 KML 代码如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
 <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>
它包括以下几个部分:
(1)XML头:<?xml version="1.0" encoding="UTF-8"?>
(2)KML命名空间定义:<kml xmlns="http://earth.google.com/kml/2.1">
(3)地点标记对象,包括:
名称(name):用于对地点标记进行注记;
描述(description):对地点标记进行描述,“气球(ballon)”中的显示内容;
点(Point):指定地点标记的位置。
1.2 使用HTML描述地点标记
有两种方式来使用HTML描述地点标记,一种是直接在<description>, <Snippet> <BalloonStyle> 中的 <text> 标记中写入标准 HTTP 超链接地址,如 www.google.com ,这样 Google Earth 4.0 及更高版本将利用 Auto-Markup 技术自动把它显示为超链接。另一种是使用CDATA元素在<description>标记中写入自己的HTML标记语言,如下所示:
<?xml version="1.0" encoding="UTF-8"?><kml xmlns="http://earth.google.com/kml/2.1">
 <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元素,如下所示:
<?xml version="1.0" encoding="UTF-8"?><kml xmlns="http://earth.google.com/kml/2.1">
 <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.3叠层
叠层是覆盖在地球表面的图像。一个简单的叠层KML代码如下所示:
<?xml version="1.0" encoding="UTF-8"?><kml xmlns="http://earth.google.com/kml/2.1">
<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>
在<GroundOverlay>中,它包含两个较新的标记:
<Icon>:指定图片的URL;
<LatLonBox>:指定图片的位置和范围。
Google Earth支持JPEG,BMP, GIF, TIFF, TGA和PNG等格式的图像。
1.4 路线
在KML里面,路线由<LineString>元素来创建。如下所示:
<?xml version="1.0" encoding="UTF-8"?><kml xmlns="http://earth.google.com/kml/2.1">
<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>
1.5 多边形
多边形由<Polygon>定义,包括<outerBoundaryIs>和<innerBoundaryIs>,如下所示:
<?xml version="1.0" encoding="UTF-8"?><kml xmlns="http://earth.google.com/kml/2.1">
<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>
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值