GOOGLE地球瀏覽器分析(五):KML文件基本格式
GOOGLE地球瀏覽器分析(五):KML文件基本格式
粟衛民http://www.gisdev.cn/ http://blog.csdn.net/suen/ 日期:
保留所有版權。如需轉載,請聯繫作者,並在醒目位置註明出處
第三節我們介紹了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>
<h1>Entity references are hard to type!</h1>
<p><font color="green">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.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
<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億年後(圖)