2009年1月30日 星期五

空間資料(上)

 

空間資料的儲存方式有檔案+表格、XML-KML、GML及空間資料庫三種主要方式。

XML

XML的方式很多如用來記錄GPS Log的GPX、GML及Google使用的KML。使用XML的好處在於XML可以使用unicode編碼,其使用的標籤語言易讀也易懂,其格式及內容也很容易轉換。目前常用的空間XML格式都是開放的標準之一,許多GIS軟體都有支援,甚至ArcGIS 9.3也將支援KML,QGIS則支援GML與GPX。

 

檔案+表格

一般常用Excel來存放一些數據的資料,善用其中的公式及函數整理起數據來是也很快速。一個Excel檔案中可以儲放多個工作表,很像一個小形的資料庫,可惜Excel並沒有支援標準空間欄位的功能。

在常用空間資料是使用ArcGIS的ESRI Shape檔案,也就是分別儲放在*.shp、*.shx及*.dbf中。副檔案shp是Shape形狀的縮寫,故名思義shp是用來記錄點、線及面的空間資料;副檔名為shx則是shape index的縮寫,也就是存放可以加快空間查詢的資料;最後一個副檔名是dbf,則是Dbase File,用來存放屬性資料的表格檔,一個檔案一個表格。因為DBF是很早就產生的資料格式,所以對後來製定unicode的支援很差,在中文使用上也存在選多缺字問題。

不論是使用Excel、dbf都是使用表格儲存,但是其實我們使用資料雖然放在不同的表格,其實是互相有關係的。例如:學生的資料表及各科成績的資料表是有關係的。但是在表格之間的關係無法用一個有效的方法告訴Excel程式,所以有人就會想出使用各種的方式來表達。

例如:使用相同欄位值

學生資料表
name | gender | Address
王小明 | 男 | 台北市

數學成績
name | 第一次小考|期中考
王小明 | 60|80

在Excel中使用以上的方法即可以幫助我們人類了解其中的關連。若要處理的資料不僅是一個班級而是整個學校且是每一屈的學生紀錄,那要如何處理呢?這時就要靠電腦要處理,ArcGIS程式中參考關連式資料庫實作了一些關連的功能,讓古老的DBF檔案可以依某些欄位建立關連。不過要使用這個功能表格中必須有一些特殊的編碼欄位,例如運研所的提供的台灣行政區圖資…

由於現在常用的圖資還是以上述的方式存儲,一方面限制很多,另一方面即使將上述資料轉到資料庫中,常常也擺脫不了以上述的限制。

 

空間資料庫

資料庫加上空間欄位的支援即是空間資料庫。例如開放原始碼的PostgreSQL資料庫,因為其開放的特性,所以很早就有postGIS擴充功能,讓PostgeSQL支援空間資料的功能。之前版本要分別安裝,一直到PostgreSQL 8之後,安裝時選取PostGIS模組即可安裝好所需的空間資料庫功能。

ESRI在之前一般資料庫尚未支援空間資料時,即推出了ArcSDE產生,它可以擴充一般資料庫,使其可以支援空間功能。ArcSDE的功能就是將空間資料轉換成資料庫的能儲存的格式,反之亦然。除了儲存之外空間資料的查詢亦可以透過ArcSDE來操作。但是在最近不論是PostgreSQL、MySQL及Micorsoft SQL Server 2008都已內建支援空間資料的功能,所以ArcSDE的價錢由本來的天價降至免費附加功能。由於PostgreSQL是公開源始碼且最早支援空間功能,所以相較其它資料庫起來PostgreSQL支援空間功能較完整,,再加上PostgreSQL是免費的資料庫,所以之後所用的空間資料就使用PostgreSQL,為了方便簡稱為PostGIS。

使用空間資料庫的好處

  1. 使用資料庫容易管理、更新與維護、較適合大型的GIS計畫
    使用資料庫的正規化,減少資料不一致性…日後資料維護更容易。
  2. 支援Unicode、多國語言及不受dbf檔案的Big5限制
    這非常很重要,因為許多地名都是較少見的字,在Big5中不支援這些字,例:澎湖縣湖西鄉「菓」葉村。
  3. 在資料庫中使用表格之間表格的關連非常容易
    目前的資料庫大多數為關聯式資料庫,關聯式資料庫最簡單也最強大的功能就是作表格之間的關連,不論是一對一、一對多或多對多都可以輕鬆完成。
  4. 將表格間作關聯後可製作成一個檢視(view)
    檢視(view)可以想成虛擬的表格,例如台灣鄉鎮界的表格與地標的表格作空間關聯即可產生包含鄉鎮屬性的表格。

空間資料庫裡面可以有非常多的表格,有些表格可能含有空間資料有些則否。要如何有效且正確管理其中的資料呢?答案是要遵循資料庫的規範。

之後再詳細說明吧~~