首頁 > QGIS > 使用QGIS上傳Shape檔至空間資料庫

使用QGIS上傳Shape檔至空間資料庫

2013年5月9日 發表評論 閱讀評論

Shape檔案匯至空間資料庫的作法,以採用自由軟體為主,選擇使用QGIS-1.8.0版搭配PostgreSQL+PostGIS空間資料庫為下述操作範例。
附註:PostgreSQL資料庫,本身是一般普遍通用的關聯式資料庫,需要安裝PostGIS套件才會形成具備空間型態的空間資料庫。
以下就為各位介紹操作流程:

(一)開啟「Shape檔匯出至PostGIS」

點選工具列上「DataBase」→「Shape檔匯出至PostGIS」→「Shape檔匯出至PostGIS(I)」

01_Shape檔匯出至PostGIS

 

(二)新增資料庫連線設定

點選「新增」後,即出現設定連結資料庫的主機IP位置、Port、資料庫名稱、使用者名稱、密碼等資訊,如下圖所示:

02_新增資料庫連線設定

02_設定IP、帳密

 

(三)匯入選項的設定

1.首先點選「連接」,
2.取消勾選「使用預設SRID」,
3.於SRID欄位填入以WGS84為主的SRID編碼為「4326」,
4.最後點選「新增」,加入Shape檔案的存取目錄,如下圖所示:

03_匯入選項設定

 

(四)選擇Shape檔案路徑

點選Shape檔案存取的目錄與路徑,選擇編碼格式以「UTF-8」為主,如下圖所示:
附註:範例圖示中的Shape檔案係取自運研所的台灣縣市行政區界,由於Shape檔中,以「.dbf」所編輯的屬性資料格式是以Big5編碼為主,但因採用PostgreSQL+PostGIS資料庫所編碼的格式是以UTF-8為主,因此在編碼格式上就要改為UTF-8,以避免上傳至資料庫時,發生編碼錯誤導致屬性資料皆為亂碼。

04_選擇Shape檔案路徑

 

(五)檔案上傳

選擇準備上傳之檔案後,其檔案路徑即會顯示於上傳列上,點選「OK」後,立即上傳,如下圖所示:

05_檔案上傳

其檔案上傳進度,如下圖所示:

06_上傳進度

 

(六)上傳成功後,檢視檔案

依據上述的操作流程後,即可將Shape檔案上傳至空間資料庫,後續再以QGIS連結資料庫的方式,以讀取檢視檔案是否上傳完整無誤,首先點選工具列圖示「Add PostGIS Layers」功能,如下圖所示:

07_檢視檔案

開啟「Add PostGIS Layers」,點選「Connect」表示連結資料庫,若資料庫連結成功後,則會於下面框架內容中,顯示該資料庫的所有具備空間特性的資料表單,再點選上述操作過程所上傳資料表-twn_county,後續再點選「新增」,如下圖所示:

08_選擇資料表

 

(七)開啟屬性資料表,檢視內容

連結資料庫把資料表加入後,即可在QGIS操作框架中看到整個檔案圖層的空間分佈,後續於圖層列的按滑鼠右鍵,點選「Open Attribute Table 」開啟屬性資料表,如下圖所示:

09_開啟屬性資料表

開啟屬性資料表後,檢視中文欄位編碼內容是否正確。

10_檢視屬性資料表

 

除了上述透過QGIS的功能套件上傳Shape檔至資料庫,另外一種方式是較為傳統的SQL產生方法,其步驟流程也較為複雜,在此也順道介紹。

早期在QGIS尚未開發「Shape檔匯出至PostGIS」的功能套件時,若遇到需要把Shape上傳至空間資料庫時,就必需採用PostgreSQL資料庫內附提供「shp2pgsql」的程式,該程式可於Microsoft Windows作業系統環境使用「命令提示字元」模式執行,也就是DOS模式下的程式。主要功能為將在GIS軟體完成編輯Shape檔案包含shp、dbf、shx空間、屬性及索引資料,轉換成PostgreSQL+PostGIS資料庫所適用的SQL語法。

由於Shape檔案中存放屬性資料格式的.dbf檔,其編碼格式以「Big5」為主,因而在產生SQL語法時,針對中文字元的特殊字元可能會造成衝碼的問題,例如:許,功,蓋等字,為此辨識這些較為特殊字元,通常會在中文字元附近多出「\」的符號來頂替表示,但也會因此造成SQL語法執行時判讀錯誤的困擾,因此就必需再經過清除或取代多餘的「\」符號的程序後,才會得到完整的SQL語法。

後續,再將此SQL語法執行於PgAdminIII(PostgreSQL資料庫的管理介面工具), 即可將Shape檔案屬性內容及其空間特性產生於PostgreSQL+PostGIS資料庫的空間資料表單。

詳述作法,如下所示:

Step-1命令提示字元→開啟Postgresql目錄的shp2pgsql.exe,其路徑目錄於:「C:\Program Files\PostgreSQL\8.3\bin」,

如下圖所示:

11_開啟命令提示字元

 

Step-2輸入shp2pgsql.exe執行目錄與資料存取路徑,如下圖所示:

12_執行路徑

以上內容解釋如下:

  • 「C:\Program Files\PostgreSQL\8.3\bin>shp2pgsql」:此一內容為“執行程式的路徑位置”。
  • 「-s 4326」:此一內容為“指定空間座標為WGS84,因此它的SRID    為4326”。
  • 「-I」:此一內容為“匯入資料庫後,在PostgreSQL立即建立空間索引”。
  • 「”D:\地籍圖\2009-07-16台北市圓山遺址地籍\Taipei_Yuanshan\AB0271.shp”」:此一內容為“GIS軟體匯出的Shape檔案路徑位置,該路徑位置需要shp、shx及dbf有三個必要檔案,因為這個檔案路徑位置可能含有空格字元,所以需要用雙引號附註”。
  • 「AB0271」:此一內容為“指定在PostgreSQL資料庫中表格的名稱”。
  • 「>C:\AB0271.txt」:此一內容為“將資料轉變成SQL語法後,所存放的檔案路徑與名稱”。

 

Step-3按「Enter」後,立即執行shp2pgsql.exe程式,下圖是執行完後,畫面輸出的結果,如下圖所示:

13

 

以上紅框內容解釋如下:

  • 「Shapefile type:Polygon」-表示這個Shape檔案的類型屬於“Polygon”。
  • 「Postgis type:MULTIPOLYGON[2]」-表示上傳到PostgreSQL後,Postgis將它的類型定義為“MultiPolygon”。

 

Step-4由於shp2pgsql.exe所轉出產生出來的SQL語法檔案(此所指得下圖例是C:\AB0271.txt),若檔案內容有包含「中文字元」的話,因為排除衝碼問題,所以會產生有多餘的「\」,因此建議先用notepad++的「取代」功能,將多餘的「\」清除掉。

14

Step-5開啟PgAdmin III,並選定所執行的資料庫,再按「SQL查詢」,再「開啟檔案」,然後點選匯入己經清除完成的SQL語法檔案「C:\AB0271.txt」。

15

Step-6:將SQL語法檔案滙入至pgAdminIII開始產生執行後的畫面。

SQL語法執行成功後,亦會於輸出窗格顯示訊息,如下圖所示:

16

完成以上操作程序後,除可透過PgAdminIII工具,檢視資料庫所產生資料表單,並可利用QGIS確認空間資料庫上的資料表單的空間型態與範圍。

上述操作流程之內容可參考下列文獻資料:
林農堯、白璧玲、廖泫銘,多國語言與缺字呈現之網頁地圖系統建置,2008年空間資訊基礎建設國際研討會暨台灣地理資訊學會年會。

Categories: QGIS Tags:
  1. 目前尚無任何的評論。
  1. 2019年3月6日19:36 | #1
  2. 2019年8月27日18:33 | #2
您必須 登入 後才能發表評論。