Convert shp to geoJSON,for ECharts.

最近在用AngularJS+ECharts做图表,要用到镇街一级的当地地图,无奈ECharts只能提供到市一级(demo里有一个能显示到县/区一级,here),故要用到ECharts的扩展地图功能。

扩展方法官方doc说得很明白了,here

PS:官方doc里只提供了jQuery的写法,我这里补充一个angularJS的写法:

jQuery(官网写法)

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


angularJS
$http.get('geoJson/USA_geo.json', function(data){
    callback(data);// 其实就是把获取到的geoJSON传入callback函数
});



但我手头上只有shp的地图格式,而ECharts要用到geoJSON格式。百度google一番后,大致有如下两种方法:

1、用工具转换,例如GDAL的ogr2ogr,下载地址:here

2、在线转换,地址如下:

先说一下背景

我的shp文件的地理坐标是GCS_WGS1984,投影坐标系是WGS_1984_UTM_Zone_49N(Transverse_Mercator

ogr2ogr

完整命令如下(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

1、按网站上的说明,把.shp,.dbf,.shx,.prj(可选)打包成zip;

2、在Convert to GeoJSON框里选择刚才打包的zip包;

3、在Target SRS里输入“WGS84”(关键步骤);

4、点击“CONVERT TO GEOJSON”按钮,然后就会生成相应的geoJSON;


converter.mygeodata.eu

1、同上,将shp、dbf等打包成zip包并上传提交;

2、上传成功后,理论上能在地图里预览你的shp文件对应的区域;

3、在Target vector format选项框里,选择GeoJSON(.json);

4、在Output coordinate system选项框里,选择WGS 84(关键步骤);

5、点击Convert now!;


adc4gis功能比较基本,mygeodata功能比较丰富(支持Vecotr data的编辑),大家各取所需吧。


不知道是不是编码方式没选对,我在两个网站转换出来的geoJSON中的中文都是乱码,不过我的字段也不多,手动改也不是很麻烦(但后来用ogr2ogr转换出来的就没问题)。

其实这三种方法的关键一步都是要把输出的坐标系统设置为WGS 84,其他都比较好理解。


最后:

由于本人对GIS不是很熟悉,光是google以上东西这些就花了我半天的时间了,在这里mark一下,希望有需要的人能少走弯路,毕竟大部分都不需要研究GIS,而只是单纯的想要个geoJSON文件而已(新版本的arcGIS的arcToolbox好像有转换成geoJSON的工具)。

转载于:https://my.oschina.net/u/1442526/blog/376441

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值