CAD轉KML亂碼處理


工程中經常用到CAD轉KML的情況。但是有時候轉換的KML文件在Google Earth內會亂碼:


 

而在LSV內會出現坐標錯誤的提示:


 

注:KMZ格式是壓縮的KML,即對KMZ格式用解壓軟件解壓,即可得到KML文件。

那么這個問題是怎么回事呢?

其實原因很簡單,核心是KML文件采用的UTF-8編碼,但是CAD中的中文用的是ANSI編碼,那么用Global mapper加載CAD並輸出為KML的時候,會在UTF-8編碼的KML文件內裝入ANSI編碼的內容,那么中文就會亂碼,進而在GE內加載顯示亂碼,LSV提示經緯度異常。

那么怎么才能正常顯示呢?這里我們分兩步來講解。

  1. CAD轉KML

首先來說明CAD文件如何轉換成KML。

使用CAD的朋友應該都知道,CAD圖紙是投影后的平面圖,因此CAD圖,如果是面向地理信息的,那么一定有圖層投影和坐標系。利用投影和坐標系,就可以查出對應的EPSG編號。比如,我們假設有張圖是西安80坐標系,高斯3度帶,中央經線是102°,那么怎么知道這個圖的EPSG編號呢?

很簡單,首先打開網站:http://www.spatialreference.org/ref/epsg/

然后在搜索框輸入Xian:


 

這個就是對應的西安80的EPSG編號,繼續在這里面找高斯3度帶中央經線102°。發現這一頁沒有,點擊Next page,切換到下一頁:


 

好了,這樣就找到這了這個CAD圖對應的EPSG編號:2379。

下面演示中,使用的圖坐標系投影為:UTM投影,代號-36(即36S)。

我們按上述方法搜索得到EPSG編號:


 

好了,直接用GM打開CAD文件,GM會提示CAD沒有投影,請配置:


 

點擊確定按鈕,接着點擊從EPSG初始化:


 

輸入:21036。

點擊確定,CAD文件即正常加載:


 

然后在GM內,掛載衛星影像圖,檢查是否匹配:


 

檢查確定是匹配的。如果遇到不匹配的,有幾十至幾百米誤差的,可以在GM的圖層管理器,對CAD圖層,右鍵,平移,移動到對應的位置即可。

確認完畢后,在GM內,點擊菜單:文件》輸出》輸出矢量/激光雷達格式:


 

找到KML/KMZ格式:


 

按下圖配置后,點擊確定即可:


 

至此,我們已經完成了CAD轉KML的過程。但是這會輸出的CAD,會遇到文章開頭中的問題,即編碼混亂,中文亂碼。

  1. KML文件編碼轉換

前文已經大體說過了亂碼的原因,即UTF-8編碼的文件裝入的是ANSI編碼的內容導致的,那么怎么處理亂碼文件,能夠修復為正常文件呢?

其實也簡單,問題根源已經知道了,那么處理起來就會很容易。做一次編碼轉換,就可以搞定。操作起來也很簡單。需要一個工具,即Notepad++。

首先,我們用Notepad++打開KML文件(KMZ文件要先解壓縮得到KML):


 

這里看不到有什么問題,實際的問題就是里面的中文部分亂碼:


 

這些CDATA后面的內容,就是中文亂碼。也就是導致GE加載顯示亂碼,LSV加載提示錯誤的原因。

點擊:格式》以ANSI格式編碼:


 

這時候中文就能恢復正常了:


 

但是當前情況下,直接Ctrl+S保存,是沒有用的。因為當前修改的是顯示,而不是文件本身編碼。

下來用鍵盤快捷鍵:Ctrl+A,全選整個文檔,然后Ctrl+C復制整個文檔的內容。

繼續點擊:格式》以UTF-8無BOM格式編碼,這會中文會顯示亂碼,但是不用管。


 

切換回UTF-8編碼后,按鍵盤快捷鍵:Ctrl+A,全選KML文檔內容,然后按下Del鍵,刪除文檔內容。

清空后,按Ctrl+V粘貼之前復制的內容,等等粘貼完畢,因為大文檔純文本寫入是比較慢的,稍等一小會。

粘貼完畢后,按Ctrl+S,保存文檔。

至此,編碼轉換的全過程完畢。我們用GE打開看看,是否還有亂碼:


 

好了,GE打開,中文已經沒有亂碼了。

再看看LSV打開該轉換的KML的效果:


 

好了,LSV也能正常打開之前無法打開的KML了。即編碼轉換完畢。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM