星期四 04 六月 2009( 2,895 views )
熟悉GIS 的人應該會瞭解到Google Earth 只是一個很好的展示平台,但對於GIS 的分析功能還是要靠GIS 專業軟體,你或許在找資料時發現Google Earth 上有你想要的資料,但Google Earth 的kml 檔你卻無法直接在你熱悉的GIS 軟體上使用,這篇文章就以ESRI 的ARCGIS 來作個示範,教大家如何將kml 檔轉為shape 檔。
一直有人因為不同的研究需求向我要原始資料,但因為我手頭上的資料並未獲官方授權同意轉給他人使用,所以對我來說實在有點困擾,所以還是請有需求者照我這個範例自已想辦法吧。
一、kml2shp 程式的下載與安裝
1. 首先,請進http://www.esri.com 官網,點選Support 頁籤,即可進入ESRI Support Center 。
2 然後點選”Downloads” 頁籤,再點選ArcScripts 連結。
3. 在Search Arcscripts 視窗,鍵入”kml” ,按search 鍵,即可找到21 筆與”kml” 相關的小程式(Script) ,第二項”Convert KML files to Shapefiles” ,即是我們要找的。
4. 點擊之後,即可看到這支程式的描述,這是由Jason Parent 以Python 所寫的,適用在ArcGIS – ArcView ,再點擊”download” 。
5. 這一頁是一些版權的宣告,按下”I agree” ,再按”download” 鍵。
6. 決定要直接開啟或儲存檔案,我們選先儲存到電腦內。
7. 下載後,先解壓縮到目錄內,可先打開Installation Guide.pdf ,來看如何安裝。
8. 在這個pdf 檔內,可以看到如何安裝的描述
9. 這是上圖安裝步驟3 的畫面
二、準備kml 檔
SHP 檔有點、線、面分別儲存的三個形態,剛好可以對映到kml 檔的地標(Point) 、路徑(Polyline) 、以及多邊形(Polygon) 等三種物件(feature) ,依據上述Installation_Guide.pdf 的說明,基本上它是可以將放在目錄下的地標、路徑、以及多邊形全部轉換至對映的SHP 檔,也就是說我們要將目錄存成一個kml 檔。
所以我們可以在Google Earth 中將各包含點、線、面的地標點,集中放在同一個目錄之下,你可以將點、線、面分開在不同的目錄,雖然放在一起也行,只是執行轉換時要分別操作。
以下舉我作的” 台北縣都市計畫圖(2001)” 為例,台北縣的都市計畫區有44 個,我將每個計畫區存為一個kmz 檔,再以NetworkLink 方式,將44 個連結存放一個全縣的kmz 檔內,這是一個比較複雜的kmz 檔,所以若學會這些動作,其它的就簡單了。
1. 首先先進入”台北縣都市計畫圖(2001) ” 這篇文章,下載台北縣都市計畫圖的kmz檔 ,執行之,在Google Earth 的左側” 地標面版” ,即可看到展開的兩個目錄,上方的” 都市計畫區” 我把它作為定位用,下方的” 都市計畫圖” 內含44 個都市計畫區kmz 檔的連結,我們要把這個目錄另存為kml 檔,請按右鍵如下圖的操作。
2. 請用除了” 筆記本” 之外的文字編輯器,打開這個kml 檔,你會看到如下圖的NetworkLink tag ,標示著每一個計畫區的kmz 檔存放的地方。
3. 利用這個網址去下載這個kmz 檔,但因為它是kmz 檔,你無法直接用文字編輯器來處理,所以只好進Google Earth 打開,再另存為kml 檔。
3. 由於”Convert KML files to Shapefiles” 會將中文字轉出成亂碼,所以我建議先將kml 檔中的所有中文字改成英文,你可以照著我下圖的方式,將每種分區用”replace all” 的方式來全部換成英文,看有幾種使用分區,就作幾次,應該不會花太多的時間,全部轉成英文之後,再儲存之,這個kml 檔就是我們要轉成shp 檔的source 。
三、kml2shp 程式的操作
1. 回到ArcMap ,經過第一步的安裝之後,在ArcToolBox 之下會多了個”Convert KML to SHP” 的ArcTool ,打開目錄就可看到”Convert KML to SHP” 的小程式(scripts) ,點擊執行它,會開啟”Convert KML to SHP” 的視窗,在第一欄選到我們第二步完成的kml 檔,第二欄有點、線、面等三種格式,使用分區是區塊形態,當然要選”polygon” ,第三欄就是轉出的shp 檔了,然後按下”ok” 。
2. 這是程序正進行轉換的畫面
4. 完成後,這個使用分區shp 檔就會顯示出來,把attribute table 打開,可以看到這支程式會把kml 的Name 、Description 、Folder 等三個欄位轉出來,所以你可以看到英文的使用分區名稱,Description 因為原來的kml 沒設,所以這裡是空白的,Folder 顯示原來kml 的目錄結構,比如工業區是放在”Features/03Industrial Zone” 的目錄之下。
四、後續的作業
若有多個kml 要處理,就重覆以上的第二步及第三步。完成了轉出為SHP 檔的作業之後,接下來就是ARCVIEW 的處理,如分區顏色的設定等等,這部分就是各GIS 軟體的專業領域了。
備註 :若是你取得的kml 資料原來是shp 檔,可能原始的shp 檔有很多屬性欄位,你也想要還原原來的shp 檔,這牽涉到當初從shp 檔轉出為kml 時是否有將其它屬性也一起轉出放在description 內,若有的話,又涉及到這些欄位是否定義的很清楚,若也很清楚的話,接下來就要靠你自已了,若你也會寫程式也對於處理shp 檔案的運作很清楚,那你應該可以試著自已來寫支專屬的kml2shp 的script 程式,或者直接將在description 欄位的內容改派到各個欄位,這支程式已經把kml 的Name 、Description 、Folder 等三個欄位轉出來,我覺得已經很不錯了。
Steven | GE 教學
太感激您了
之前為了這個轉檔
害我都差點變成白髮魔女了
以後用GE 就更上手囉
感謝您提供此資訊
我在執行到 一、kml2shp 程式的下載與安裝/9. 這是安裝步驟2 的畫面之後 參照pdf 檔的描述 就無法進一步的灌好軟體
請問我該如何去開啟
“ArcMap” 這個畫面呢?
謝謝您的熱心
to BryanC
對不起, 你提的9. 應該是步驟3 的畫面,我修正了。
根據你的說明,我不太明白你是那個環節出了問題。
你該不會“ArcMap” 沒用過吧?
那… 就這篇文章不適合你看了。
真的真的~~ 超級感謝你的…. 讓我頓悟了不少 感謝…
感謝您提供的資訊,謝謝。
從您的網站當中,讓我學到不少,
感激您的用心良苦~~^^
您好
無意中發現這個網站, 找到很多很實用的技巧和知識, 真的很感謝
這裡有幾個問題希望可以請教一下:
1. 我依照上述步驟, 使用convert kml to shp 欲將您之前所建立的台北市3D 建物的kml 檔轉成.shp 檔, 但為何轉完之後在指定路徑資料夾找不到呢?
2. 這個轉檔方式是否可以將3D 建物圖轉到arcmap 中, 在arcmap 中呈現3D 建物的型態呢
感謝您的回答 謝謝!!
to ibagaza
謝謝你給我出題目,我沒想到要轉3d 建物的polygon ,
因為轉出來之後,就只有建物的polygon ,高度也不見了,
你實在無法在其它如arcmap 上去呈現3d 建物,
不過我還是實際去操作了一下,我下載了某一里的kml 檔,
轉出之後很正常呀!我不知道你的問題出在那,
所以很抱歉無法幫你解答問題。
版大求救一下:
GoogleEarthPro V4.2 自製座標及套圖( 中文) 變亂碼!
忽然一天開機後,GoogleEarthPro 中文版,自製座標及套圖(地籍圖),能否有方法馬上解除便亂碼的問題!
試過重灌軟體及修復都不能解決問題,
是否更動哪個檔案的編碼就可以解決?
達人可否幫解決(套了很多都計圖跟地籍圖檔)。
現在連開圖層都是亂碼, 無法顯示套圖!!
您好
感謝您的分享
有個問題想請問一下
我照著版大的描述進行Convert KML to SHP 安裝
安裝好了但是Convert KML to SHP 底下卻沒有子目錄可以點擊
不知道有人有遇到這種狀況嗎
謝謝
讚讚,再次感謝板主的貢獻。
你好, 我上網下載世界遺產的KML 檔, 卻在轉檔過程中出現”No POINT features found - aborting kml to shapefile conversion…” 的文字, 而且也沒有任何檔產生, 不知是出了什麼問題
:O 原來是要用ArcMap 去轉檔喔
還以為有程式可以直接吃kml 轉成shp 的說 XDD
誤會誤會
其實是不用進arcmap 去, 根據Google Map/Earth觀察報@Sinica 提供的資料 ,這個http://www.zonums.com/ 網站有三項軟體工具,還蠻值得推薦的:
* Epint2GE : Excel to Google Earth KML
* Kml2shp : Google Earth KML to GIS Shapefile
* Shp2kml : GIS Shapefile to Google Earth KML
分享一下,如果KML 裡有中文,可利用如notepad ++ 之類的文字編輯器,將原本的utf-8 轉為ansi 編碼,如此轉至shp 後,仍可將中文正確帶至屬性。
你好,我有一個小問題想請問一下,是否可將google earth 的顯示的廟宇、古蹟、生態保護區的資訊,顯現於Arcmap 裡面呢?
by the way ,由於我的arcGIS 沒有3d 的功能( 當初買的key 的時候,就沒有買這一項功能了)… 會不會防礙到此像功能的使用…thanks