跳到主要內容

KML、KMZ的表格型式

KML 的設計本來就不是為了表達表格式資料,因此表格化 KML 從定義面來看是不存在的。
舉例來說,KML 最常用來存放的資料是

Placemark:

 <Placemark>
    <name>Extruded placemark</name>
    <visibility>0</visibility>
    <description>Tethered to the ground by a customizable
      &quot;tail&quot;</description>
    <LookAt>
      <longitude>-122.0845787421525</longitude>
      <latitude>37.42215078737763</latitude>
      <altitude>0</altitude>
      <heading>-148.4126684946234</heading>
      <tilt>40.55750733918048</tilt>
      <range>365.2646606980322</range>
    </LookAt>
    <styleUrl>#globeIcon</styleUrl>
    <Point>
      <extrude>1</extrude>
      <altitudeMode>relativeToGround</altitudeMode>
      <coordinates>-122.0857667006183,37.42156927867553,50</coordinates>
    </Point>
  </Placemark>

可以看到,一個 Placemark 放的是一個點的描述與坐標等等的資訊,在 schema 上來說是一樹狀的描述,這樣的資料要把它單一表格化是極困難的。
但凡事皆有例外,KML 的定義允許自定欄位形態來存放外部資料。如下面的描述可以在 KML中發現:

 <Schema name="Town_moi" id="Town_moi">
    <SimpleField name="TOWNID" type="string"></SimpleField>
    <SimpleField name="TOWNCODE" type="string"></SimpleField>
    <SimpleField name="COUNTYNAME" type="string"></SimpleField>
    <SimpleField name="TOWNNAME" type="string"></SimpleField>
    <SimpleField name="TOWNENG" type="string"></SimpleField>
    <SimpleField name="COUNTYID" type="string"></SimpleField>
    <SimpleField name="COUNTYCODE" type="string"></SimpleField>
    <SimpleField name="ZIPCODE" type="string"></SimpleField>
    <SimpleField name="CENTERLONGITUDE" type="string"></SimpleField>
    <SimpleField name="CENTERLATITUDE" type="string"></SimpleField>
 </Schema>

其相對應的資料形式為

 <SchemaData schemaUrl="#Town_moi">
    <SimpleData name="TOWNID">V02</SimpleData>
    <SimpleData name="TOWNCODE">1001321</SimpleData>
    <SimpleData name="COUNTYNAME">屏東縣</SimpleData>
    <SimpleData name="TOWNNAME">佳冬鄉</SimpleData>
    <SimpleData name="TOWNENG">Jiadong Township</SimpleData>
    <SimpleData name="COUNTYID">T</SimpleData>
    <SimpleData name="COUNTYCODE">10013</SimpleData>
    <SimpleData name="ZIPCODE">931</SimpleData>
    <SimpleData name="CENTERLONGITUDE">120.547612438793</SimpleData>
    <SimpleData name="CENTERLATITUDE">22.4298062414283</SimpleData>
 </SchemaData>

(上述資料由 http://data.gov.tw/node/37759 截取)
這是目前 KML 內最接近表格化資料的形式,至於 Description 內的 HTML table,通常比較類似描述型的資料,沒有轉換的價值。而 KMZ 為 KML 的 zip 檔規範,因此處理上同 KML。

參考資料:
https://developers.google.com/kml/documentation/kml_tut
https://developers.google.com/kml/documentation/kmlreference
https://developers.google.com/kml/documentation/kmzarchives

分類: 
資料品質提升機制說明文件