沒有新回應!
2007-04-08 00:23 (GE-2)SHP檔轉換KML檔經驗談
SHP 檔為 ESRI ArcGIS 的檔案結構,近年來在學術單位的 ArcGIS 系統上建立了許多GIS圖層,因此如果能將 ArcGIS 上的 SHP 檔轉換到 Google Earth 上,將是非常有趣的課題,不過因不同系統間的資料檔轉換,將面臨(1)座標轉換及(2)檔案格式轉換的問題,在網路上有相當多專業級的網站都曾經說明過,本篇主要是交代自己將SHP檔轉換為KML檔的經驗過程,與大家分享轉檔的三種方法。因為共享才是王道!(2008/05/16修正)

主要的參考網站:
(1)GEmVG Blog(版主何大哥是師長輩的,從他那學到很多。)
網址:http://www.wretch.cc/blog/steven0625;新網址:http://gemvg.com/
(2)積丹尼=Dan Jacobson(一位外國友人,卻對臺灣提出深刻的建言!)
網址:http://www.jidanni.org/index.html
(3)中研院GE研究中心(我國GE的研究重鎮,為國家之寶)
網址:http://gis.ascc.net/googlemap/
(4)上帝之眼(對岸研究GE的重要網站)
網址:http://www.godeyes.cn/index.asp
(5)Google Earth官方的討論社群
網址:http://bbs.keyhole.com/ubb/ubbthreads.php/Cat/0
(6)frank.hgs的Google Earth專題(GE想進階的人,一定要參考的Blog)
網址:http://blog.xuite.net/frank.hgs/GE
(7)其它還有許許多多關於Google Earth的網站,不及備載,慢慢去挖寶吧!
版權宣告:
(1)Google Earth為google公司所有, 編寫過程使用Google Earth Free版本, 1600 Amphitheatre Parkway., Mountain View, CA., 94043 USA. http://earth.google.com/。以下簡稱GE。
(2)Arcview, ArcGIS為ESRI公司所有, http://www.esri.com/index.html, 編寫過程使用NTU GIBP授權版本。
關於座標問題有幾個重要網站一定要去看看:
(1)上河文化-地圖漫談.座標系統與二度分帶座標 (這是上河對於推廣地圖教育的重要貢獻)
網址:http://www.sunriver.com.tw/grid_tm2.htm
(2)積丹尼(Dan Jacobson) :Taiwan 衛星定位系統 GPS and 座標轉換
網址:http://jidanni.org/geo/taiwan_datums/
(3)Blog of Flickr Hacks: TWD67 與 TWD97 的座標轉換
網址:http://flickr.tw/2005/12/twd67_twd97.html
步驟一:座標轉換
因一般取得的「無印良品」SHP檔,圖層座標多是TWD67直角座標,而Google Earth的座標是使用WGS84經緯度座標,因此必須經過座標轉換程序,目前中研院GE研究中心開發許多相關的轉換系統供國人使用,目前的版本要經過兩道手續,必須先將67TM2轉為67經緯度,再將67經緯度轉換為84經緯度(轉換為97經緯度座標似乎也可以)。另外,SHP檔最好放在根目錄下。轉換完座標後,接著要轉換檔案格式,將檔案由SHP格式轉為KML格式。
步驟二:檔案格式轉換,SHP轉為KML格式,分別說明三種方式
(1)透過ESRI ArcGIS 9.x版轉換。
(2)透過ESRI ArcView 3.2版轉換。ESRI針對ArcView提供的Avenue巨集程式,由使用者下載使用,本文針對ArcView 3.2系統,先到ESRI下載Avenue檔,shape2KML.avx,再將其copy到C:\ESRI\AV_GIS30\ARCVIEW\EXT32下,進行檔案格式轉換。經過座標轉換後的SHP檔,不要在ArcView中勾選顯示,螢幕顯示區會亂掉。
(3)透過自由軟體,轉換SHP檔為KML檔。本文採用Zonum Solutions所提供的Shp2Kml 2.0。
步驟三:修正在Google Earth的顯示參數
當KML檔案格式轉檔完成後,再由Google Earth開檔讀入,進行顯示部份的參數調整,即可看到原有的SHP檔轉進Google Earth中。不過因座標轉檔關係,兩者間在X軸及Y會軸都會有8m~10m不等的偏移。
整個作業程序如下:
Step 1. 座標轉換
先至中研院GE研究中心下載座標轉換程式。

中研院研究支援工具網址:http://gis.ascc.net/ISTIS/tools.html


中研院GE研究中心座標轉換程式須要經過兩個步驟:先選(01)將檔案自67TM2轉為67經緯度,程式會自動將檔名加上_1;再選(15)將67經緯度轉換為84經緯度,程式步驟會自動將檔名再加上一個_1,成為_1_1。
首先執行ShpTrans.EXE

選擇(01)將檔案自67TM2轉為67經緯度。

選擇(15)將67經緯度轉換為84經緯度。

SHP檔最好放在根目錄下(C:\)。

程序(01)將檔案自67TM2轉為67經緯度,程式會自動將檔名加上_1。

程序(15)再將67經緯度轉換為84經緯度,程式會自動將檔名再加上_1,成為_1_1。

經過兩次轉換後,程式會自動將檔名加上兩個_1_1,即完成座標轉檔作業。在進行第二次轉換時需將第一次轉換的檔案(即檔名加_1的檔案),取消勾選,以免轉換過程產生錯誤。如上圖(3)taipei_li_1_1即為已經轉為84經緯度座標,接著要進行SHP格式轉為KML格式。
Step 2. SHP格式轉為KML格式
有三種方法可以將SHP格式轉為KML格式,分別說明:
再次重申,就算透過ArcGIS來轉換,也要先將SHP檔轉WGS84經緯度座標,切記切記!
(1)透過ESRI ArcGIS 9.x版轉換
開啟ArcMap插入新圖層,將已經轉為84經緯度座標的SHP檔載入,如本案例為(3)67經緯度轉84經緯度.shp。

載入後,開啟Arc ToolBox中的3D Analyst Tools -> Conversion -> To KML -> Layer To KML。
出現Layer To KML對話盒,本文暫不探討其中的設定項目,僅以最簡單的轉換過程為主。輸入三項最基本的資料。
選擇欲轉換的圖層,須注意的是該圖層座標必須是84經緯度座標。
給定轉出的KML檔名與位置。
設定圖層的輸出尺度,設定為1。
至此,已完成ArcMap的轉檔設定,如原始圖層內容僅為2D的內容,其餘設定如Data Content Properties、Extent Properties、Output Image Properties等可忽略。


按OK後即開始進行SHP Layer轉為KML檔的作業。轉出的檔案結構為KMZ檔較為精簡,不過可以到Google Earth中再另存為KML格式。至此即完成(1)透過ESRI ArcGIS 9.x的SHP轉換KML檔作業。
(2)透過ESRI ArcView 3.2版轉換。

至ESRI官方網站下載轉換檔案格式的Avenue巨集。 網址如下:
http://arcscripts.esri.com/details.asp?dbid=14254
http://arcscripts.esri.com/details.asp?dbid=14254

下載解壓後,將shape2KML.avx複製到C:\ESRI\AV_GIS30\ARCVIEW\EXT32。

開啟ArcView後,選擇File→Extension。

在Extension中勾選Shape to KML,按OK,此時在上方工具列最右邊會多出兩個按鈕。


接著載入檔案。

開啟已經過座標轉換為84經緯度座標的SHP檔案,如本案例(3)taipei_li_1_1.shp,然後按選。

開啟下列對話盒,因本案例為行政區界線,沒有高程等資料,所以只要在Scale(lat/lon)欄內填入 6,(此部份為GEmVG Blog版主何大哥所傳授),設定Scale為6;即設定為小數點後五位,推算過程如下:
地球周長,一般指赤道周長,約為40076公里
∵40076公里/360度=111.32公里/度
1.1132m=0.00001度
令0.00001度約為1m(實為1.1132m,令約為1m)
∴取小數六位(含小數點),此即為Scale欄位值
在實際操作過程中,Scale欄位值取大於6位亦可,其餘欄位的相關設定可暫時忽略,有機會再說明。

另轉換SHP檔的欄位,須取唯一值欄位,以本案例取(New_na, 里名)。

接著按選。

在Field name指定唯一值欄位,本案例取(New_na, 里名),Extrude係針對高程的設定可暫時忽略。

按OK後,即會產生KML檔,預設KML檔名為kml1.kml。


至此即完成透過ESRI ArcView 3.2的SHP轉換KML檔作業。
(3)透過自由軟體,轉換為KML檔。
對於不是GIS系統的使用者而言,以ESRI系統來進SHP檔轉換KML檔不是很方便。因此,單獨的檔案格式轉換程式就很好用了,(轉檔程式僅轉換檔案格式,座標的轉換另須使用座標轉換程式,如本文Step 1. 座標轉換),透過自由軟體轉換,本文採用Zonum Solutions所提供的Shp2Kml 2.0。先至http://www.zonums.com/shp2kml.html下載Shp2kml.exe。

確認Shp2kml的版權認證與說明。如同意則按I Accept Download鍵。

儲存Shp2kml.zip壓縮檔,後解壓縮。

執行Shp2kml.exe出現對話盒如下圖,在對話盒的右上方有五個功能按鍵,將於後記中簡要說明。
於對話盒中Input File (*.shp)中輸入SHP檔案。如本案例為(3)67經緯度轉84經緯度.shp。座標選擇Google Earth的設定WGS 1984 Global Definition。至此,已完成簡要設定,如果原始SHP檔僅為2D結構,其餘設定可以完全忽略。直接按Next鍵進入下一畫面。

直接按Next鍵進入下一畫面。

直接按Next鍵進入下一畫面。

直接按Next鍵進入下一畫面。

出現對話盒,畫面下方出現Create KML file及Create and Open兩個按鍵。

以Create KML file為例,出現輸入存放KML位置及檔名的對話盒。至此,即完成透過自由軟體Zonum Solutions所提供的Shp2Kml 2.0轉換程序。

Step 3. 修正在Google Earth的顯示參數
開啟Google Earth,選File→Open,選擇KML檔案kml1.kml。


載入KML檔kml1.kml後,會於地圖顯示區將原SHP檔顯示出來。

接著還要針對KML檔進行顯示部份的參數設定。

點選Properties,進行參數設定。

點選Properties出現對話盒後,選中間的Style, Color分頁,選按Share Style。

可以針對面及線進行顯示參數的設定。

完成後,即可將SHP檔放在Google Earth中。

拉近放大圖面,可由上圖看出來,SHP檔轉入GE後,在X軸及Y軸都有相當大的偏差,這部份還要在請教GEmVG Blog(版主何大哥)、中研院GE研究中心及其他專業網站。再看看有沒有相關資料可以解釋。
後記:
(一)有關TWD67、TWD97、WGS84的討論,參考「(GIS導論-02)投影與座標(2)」。主要在於國際地球標準,依不同的橢球體扁率所引起的差異。
(二)Zonum Solutions所提供的Shp2Kml 2.0檔案格式轉換程式,在對話盒的右上方有五個功能按鍵,分別說明如下:
(1)Preview Map:SHP檔圖面預視,不是很成功,Preview Map中的功能鍵只有連接Google Map的可以使用。

(2)Attributes Tables:開啟SHP檔的屬性表格。
(3)Statistics:顯示指定欄位的統計資料。最大值、最小值、合計、平均值、欄位筆數計數。
(4)Histogram:直方圖統計,可以指定欄位及分類級數。
(5)Scatter Plot:散佈圖,指定X軸及Y軸的欄位。
關於SHP檔為KML檔的程序,可以有三種方法,包括:
(1)透過ESRI的ArcGIS 9.x版直接轉換,轉換成本最高,非普羅大眾能輕易上手。
(2)透過ESRI所提供的Extensions外加Avenue檔,以ArcView 3.x版本來轉換,轉換成本也不低。
(3)最便宜的還是透過自由軟體,轉換SHP檔為KML檔,試過好幾種轉換程式,包括中研院的座標轉換程式,不過僅有Zonum Solutions所提供的Shp2Kml 2.0轉換成功。http://www.zonums.com/shp2kml.html。
不過,不論用那一種方法都必須要先經過座標的轉換,因為Google Earth使用WGS84經緯度,須透過中研院座標轉換程式來處理這部份。


