Convert shp to geoJSON,for ECharts.

最近在用AngularJS+ECharts作圖表,要用到鎮街一級的當地地圖,無奈ECharts只能提供到市一級(demo裏有一個能顯示到縣/區一級,here),故要用到ECharts的擴展地圖功能。 html

擴展方法官方doc說得很明白了,hereshell

PS:官方doc裏只提供了jQuery的寫法,我這裏補充一個angularJS的寫法: json

jQuery(官網寫法) echarts

$.getJSON('geoJson/USA_geo.json', callback);


angularJS
$http.get('geoJson/USA_geo.json', function(data){
    callback(data);// 其實就是把獲取到的geoJSON傳入callback函數
});



但我手頭上只有shp的地圖格式,而ECharts要用到geoJSON格式。百度google一番後,大體有以下兩種方法: 函數

一、用工具轉換,例如GDAL的ogr2ogr,下載地址:here工具

二、在線轉換,地址以下: 網站

先說一下背景google

個人shp文件的地理座標是GCS_WGS1984,投影座標系是WGS_1984_UTM_Zone_49N(Transverse_Mercator編碼

ogr2ogrspa

完整命令以下(Mac版,其餘版本估計差別不大):

/Library/Frameworks/GDAL.framework/Programs/ogr2ogr -f "geoJSON" -t_srs "WGS84" -s_srs "+proj=utm +zone=49 +datum=WGS84 +units=m +no_defs" "area.json" "area.shp"


重點是-s_srs的參數;


ogre.adc4gis.com

一、按網站上的說明,把.shp,.dbf,.shx,.prj(可選)打包成zip;

二、在Convert to GeoJSON框裏選擇剛纔打包的zip包;

三、在Target SRS裏輸入「WGS84」(關鍵步驟);

四、點擊「CONVERT TO GEOJSON」按鈕,而後就會生成相應的geoJSON;


converter.mygeodata.eu

一、同上,將shp、dbf等打包成zip包並上傳提交;

二、上傳成功後,理論上能在地圖裏預覽你的shp文件對應的區域;

三、在Target vector format選項框裏,選擇GeoJSON(.json);

四、在Output coordinate system選項框裏,選擇WGS 84(關鍵步驟);

五、點擊Convert now!;


adc4gis功能比較基本,mygeodata功能比較豐富(支持Vecotr data的編輯),你們各取所需吧。


不知道是否是編碼方式沒選對,我在兩個網站轉換出來的geoJSON中的中文都是亂碼,不過個人字段也很少,手動改也不是很麻煩(但後來用ogr2ogr轉換出來的就沒問題)。

其實這三種方法的關鍵一步都是要把輸出的座標系統設置爲WGS 84,其餘都比較好理解。


最後:

因爲本人對GIS不是很熟悉,光是google以上東西這些就花了我半天的時間了,在這裏mark一下,但願有須要的人能少走彎路,畢竟大部分都不須要研究GIS,而只是單純的想要個geoJSON文件而已(新版本的arcGIS的arcToolbox好像有轉換成geoJSON的工具)。

相關文章
相關標籤/搜索