星期四 04 六月 2009( 2,895 views )
KML->SHP
熟悉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
Trackback this Post | Feed on comments to this Post