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等三個欄位轉出來,我覺得已經很不錯了。

16,518 total views, 5 views today

本篇發表於 GE 教學 並標籤為 。將永久鏈結加入書籤。

KML->SHP 有 34 則回應

  1. papapig 說道:

    太感激您了
    之前為了這個轉檔
    害我都差點變成白髮魔女了 👿

    以後用GE就更上手囉 😆

  2. BryanC 說道:

    感謝您提供此資訊
    我在執行到 一、kml2shp程式的下載與安裝/9.這是安裝步驟2的畫面之後 參照pdf檔的描述 就無法進一步的灌好軟體
    請問我該如何去開啟
    “ArcMap" 這個畫面呢?
    謝謝您的熱心

  3. Steven 說道:

    to BryanC

    對不起,你提的9.應該是步驟3的畫面,我修正了。
    根據你的說明,我不太明白你是那個環節出了問題。
    你該不會“ArcMap” 沒用過吧?
    那…就這篇文章不適合你看了。

  4. fermi 說道:

    真的真的~~超級感謝你的….讓我頓悟了不少 感謝…

  5. Tab 說道:

    感謝您提供的資訊,謝謝。

    從您的網站當中,讓我學到不少,

    感激您的用心良苦~~^^

  6. ibagaza 說道:

    您好
    無意中發現這個網站,找到很多很實用的技巧和知識,真的很感謝
    這裡有幾個問題希望可以請教一下:
    1.我依照上述步驟,使用convert kml to shp欲將您之前所建立的台北市3D建物的kml檔轉成.shp檔,但為何轉完之後在指定路徑資料夾找不到呢?
    2.這個轉檔方式是否可以將3D建物圖轉到arcmap中,在arcmap中呈現3D建物的型態呢

    感謝您的回答 謝謝!!

  7. Steven 說道:

    to ibagaza

    謝謝你給我出題目,我沒想到要轉3d建物的polygon,
    因為轉出來之後,就只有建物的polygon,高度也不見了,
    你實在無法在其它如arcmap上去呈現3d建物,
    不過我還是實際去操作了一下,我下載了某一里的kml檔,
    轉出之後很正常呀!我不知道你的問題出在那,
    所以很抱歉無法幫你解答問題。

  8. tony 說道:

    版大求救一下:
    GoogleEarthPro V4.2自製座標及套圖(中文)變亂碼!

    忽然一天開機後,GoogleEarthPro中文版,自製座標及套圖(地籍圖),能否有方法馬上解除便亂碼的問題!

    試過重灌軟體及修復都不能解決問題,

    是否更動哪個檔案的編碼就可以解決?

    達人可否幫解決(套了很多都計圖跟地籍圖檔)。
    現在連開圖層都是亂碼,無法顯示套圖!!

  9. oxalis_hybrid 說道:

    您好
    感謝您的分享
    有個問題想請問一下
    我照著版大的描述進行Convert KML to SHP安裝
    安裝好了但是Convert KML to SHP底下卻沒有子目錄可以點擊
    不知道有人有遇到這種狀況嗎
    謝謝

  10. whpai 說道:

    讚讚,再次感謝板主的貢獻。

  11. ramfy 說道:

    你好,我上網下載世界遺產的KML檔,卻在轉檔過程中出現"No POINT features found – aborting kml to shapefile conversion…"的文字,而且也沒有任何檔產生,不知是出了什麼問題 😥

  12. xfish 說道:

    :O 原來是要用ArcMap去轉檔喔
    還以為有程式可以直接吃kml轉成shp的說 XDD
    誤會誤會

  13. Steven 說道:

    其實是不用進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

  14. whpai 說道:

    分享一下,如果KML裡有中文,可利用如notepad ++之類的文字編輯器,將原本的utf-8轉為ansi編碼,如此轉至shp後,仍可將中文正確帶至屬性。

  15. Emily 說道:

    你好,我有一個小問題想請問一下,是否可將google earth的顯示的廟宇、古蹟、生態保護區的資訊,顯現於Arcmap裡面呢?

  16. Emily 說道:

    by the way,由於我的arcGIS 沒有3d 的功能(當初買的key 的時候,就沒有買這一項功能了)…會不會防礙到此像功能的使用…thanks

  17. dophy 說道:

    想請問關於座標的問題
    轉成SHP時位置完全跑掉
    是否因為google earth是用WGS_84之大地座標
    而我的圖是用tw67,
    所以還需要經過座標轉換的工作

  18. steven 說道:

    dophy

    沒錯!轉出來當然是wgs84座標
    若你要轉為twd67座標,那就到中研院去下載shptrans工具吧。

  19. annie 說道:

    您好;
    謝謝您提供這麼好的教學,但想請問的是,在ARCMAP轉時,訊息出現以訊息,請問是哪裡有問題,為何找不到POLYOGON呢?謝謝賜教!!

    Running script kml_to_shp…
    Extracting POLYGON feature data from KML file…
    Feature data acquired for 0 POLYGON features.
    No POLYGON features found – aborting kml to shapefile conversion…

  20. jack 說道:

    請問版大!! 我照你上面的方式..轉檔 可是轉檔成功後 找不到轉出的檔吶? 再者可不可以請版大提供台南市都市計畫圖的圖層呀?shp.檔 謝謝您!!

  21. 机械动漫 說道:

    很久没来看博主了~ 特来问候一下~~~

  22. 普罗米修斯 說道:

    请教一下小小的问题,kml文件的属性名称是中文,但转出shp文件时全是乱文,能否解决这问题,麻烦你了

  23. Berry 說道:

    中文支持方面不是很好,只能去改变py文件了,等待高手出来把编码部分重新一下。

  24. Linda 說道:

    您好,先謝謝您有提供這麼棒的文章
    我運用您的方法下載並安裝好kml2shp的工具
    但是執行時,有了下列訊息 😳

    ArcGIS Data Management Toolbox not found. Script cannot execute
    Error in script kml_to_shp.
    Error in executing: cmd.exe /C C:\PROGRA~1\ArcGIS\ARCTOO~1\TOOLBO~1\KML_TO~1.PY “D:\test575.kml" “POLYGON" “D:\test\aa.shp"

    請問我是否缺少了哪些東西或步驟嗎?謝謝。

  25. AZ6223 說道:

    請問大大有辦法把疊上去的影像圖片轉換在arcgis或Qgis上><?

  26. na 說道:

    下载了上述小程序后,kml文件转成shp时出错,但是用那个在线的可以,只是在Arcmap中打开时出现一个长长的线,求教?万分感谢 😕

  27. 研究生 說道:

    您好,
    謝謝您提供珍貴的圖資,
    但我在轉檔的過程中一直出現以下的錯誤訊息

    Executing: kml_to_shp D:\AirportGIS\cityplan\lutzu.kml POLYGON D:\AirportGIS\cityplan\lutzu.shp
    Start Time: Fri Mar 25 15:22:39 2011
    Running script kml_to_shp…
    Extracting POLYGON feature data from KML file…
    Unexpected Error:
    Completed script kml_to_shp…
    Failed to execute (kml_to_shp).
    End Time: Fri Mar 25 15:22:39 2011 (Elapsed Time: 0.00 seconds)

    可否請教您該如何解決呢?
    我之前也有轉過其他kml(如雨量站)都很順利..
    謝謝您

  28. 方勇 說道:

    您好!按照您的步骤,我无法转为shap文件,错误信息为:
    File “", line 117, in

    : empty string for float()
    万分感谢能得到您的帮助!

  29. Velen 說道:

    您好,
    看您的網誌已經有段時間 一直非常的崇拜您所做出的東西!!
    我個人對於Google Earth的應用非常感興趣
    我現在算是在我們學校的GIS program底下 所以有些許的機會當到TA
    看到 方勇 所提出的問題 去年在當TA的時候學生也遇過這個問題
    想說可以幫忙回答一下 ^^
    原本的工具GE24.2以後的版本會產生些許問題 已有修正工具:
    http://resources.arcgis.com/gallery/file/geoprocessing/details?entryID=F2747C53-1422-2418-34BF-037B58FAA5F1

    在GE v4.2後的版本 如果用之前的工具轉檔 只能轉point
    polyline & polygon都會有問題
    前述幾個polygon轉檔有問題的 也可以試試這個新工具

    另外 to Linda
    根據我跑python的經驗 我會猜測你真的是沒有安裝完整
    建議你可以做一個小試驗
    將我post的連結解壓縮後 將裡面的kml_to_shp.py打開來
    將Line 19 – 28 前面的"##"弄掉
    變成這樣以下這樣:
    # data management toolbox…
    management_tbx = r"C:\Program Files\ArcGIS\ArcToolbox\Toolboxes\Data Management Tools.tbx"

    # check if data management toolbox is found…
    if not gp.exists(management_tbx):
    gp.AddError(“ArcGIS Data Management Toolbox not found. Script cannot execute")
    sys.exit(1)

    # load toolbox…
    gp.AddToolbox (management_tbx)

    但請注意indentation的問題!

    希望這些有幫助!

  30. peggyki 說道:

    你好:
    我執行到第三部驟
    轉換時他出現了
    string for float()
    Completed script kml_to_shp…
    Failed to execute (kml_to_shp).
    以上訊息,這是哪裡出問題了
    後有上esri的官網在Search ArcScripts
    中第二項新增了以下
    Convert GPS Files (KML, GPX) to Shapefiles ArcGIS – ArcView Python Anna Patterson Feb 16 2010,我也下載來用,但也出現第一各訊息,不好意思,
    請你幫忙,謝謝!

  31. peggyki 說道:

    你好:不好意思上一封我已經查到原因了,我po給你的訊息不是完整的,他是指我下載的kml檔裡的117行沒有資料,
    之後我用另一各kml檔去轉,沒再出現錯誤訊息,但跑完後也沒有出現轉後的檔案,這是什麼原因ㄋ?我是用arcmap9.3.1版的,謝謝!

  32. ELYAS 說道:

    hi
    arggis for autocad

  33. pooh 說道:

    你好,看到您的资源十分佩服,可是我的也是出现异常,不知道是什么原因

  34. huuz 說道:

    你好, 很感谢所提供的资料. 但是我一直出现一个错误, 还望得到您的帮助! 信息如下:

    Extracting POLYGON feature data from KML file…
    File “d:\program files\arcgis\desktop10.2\ArcToolbox\Toolboxes\kml_to_shp.py", line 117, in
    XYLst.append([float(XYZ[0]), float(XYZ[1])])

    : could not convert string to float:

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *


*

你可以使用這些 HTML 標籤與屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>