这几天和学长一起打比赛,处理了下数据。
如果你对Geojson转Shapefile有疑问,就看下去吧~
Geojson的解释
这是我处理的部分数据,还是比较复杂的。
{"type": "FeatureCollection",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG::32631" } },
"features": [
{ "type": "Feature", "properties": { "roof_075mean": 9.5799999237060547, "roof_075median": 9.5799999237060547, "roof_075stdev": 0.0, "Building_ID": 25788, "origarea": 335.77789383629062, "origlen": 0, "partialDec": 1.0, "truncated": 0 },
"geometry": { "type": "Polygon",
"coordinates": [ [ [ 592407.327600155258551, 5749547.382130783051252, 0.0 ], [ 592413.664810819551349, 5749518.051389320753515, 0.0 ], [ 592402.858775754342787, 5749515.791177336126566, 0.0 ], [ 592396.220214118831791, 5749545.007996829226613, 0.0 ], [ 592407.327600155258551, 5749547.382130783051252, 0.0 ] ] ] } },
}
crs代表坐标系,这个是非常重要的,如果你转换成Shapefile文件没有坐标系,那其实都没有用。
"features"字段里面的geometry代表不同的类型,有Polygon,LineString和Point。
我查阅了geoJson转换Shapefile这篇文章,这篇文章对我来说有2个问题,1.代码只涉及转换了 geometry,没有转换其他字段,而且转换的shapefile没有坐标系。2.这篇文章的Python的库,我下了很久。于是我觉得还是找现成的工具,不要自己打代码。这句话对大家,我觉得也是适用的。
使用ogr2ogr命令转换文件格式
1.大家需要下载一个软件。windows编译好的gdal下载地址:http://www.gisinternals.com/release.php。如果是,windows,大家要下载zip版本啊,我原本选的msi不可以。
下载完毕后,打开下载的文件的目录,解压然后进入。右键SDKShell.bat,以管理员身份进行。
然后输入命令,就可以了。
shpefile转GeoJSON格式
下面这条命令可以让test.geojson变成 result.shp。如果要加入路径,可以以下为例,替换代码,路径写\\,我强烈推荐大家result.shp一定要加目录,这样就很好找(最好用英文目录啊!)。
ogr2ogr -f "ESRI Shapefile" D:\\Research\\result.shp D:\\Research\\test.geojson
("GeoJSON"不要忘记双引号)
test.shp转result.geojson格式,也是同样的道理。如果要加路径,和上面代码是一样的。
ogr2ogr -f "GeoJSON" result.geojson test.shp
找到相应目录,查看产生的shapefile结果文件(比如我的就是D:\\Research\\result.shp
)是否产生成果。然后打开ArcMap,添加数据点击产生的shapefile数据,你就可以看到有坐标系的图形了。
附一张我的结果图 😃,希望大家也成功!