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

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

粟衛民http://www.gisdev.cn/ http://blog.csdn.net/suen/ 日期:2007-7-5

保留所有版權。如需轉載,請聯繫作者,並在醒目位置註明出處

第三節我們介紹了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>

註:本文大部分內容是由GOOGLE KML文檔KML Samples翻譯而來,如果GOOGLE公司覺得有什麼不妥,請聯繫我修改或刪除。


推薦閱讀:

其他「地球」?大都還沒有誕生呢!
NASA發現另一地球Kepler-452b一年大約385天-21CN手機網
地球起源之謎
熱知識:地球自轉的趣事
地球真毀滅,要等50億年後(圖)

TAG:地球 | 格式 | 瀏覽器 | 文件 | 分析 |