做一些空间特征时,经常需要把属性值映射到行政区划上集计,看一看各行政区划的分布属性特征。那么如何快速获取这些地理文件呢
method 1
这个是我在这篇推送里看到的,亲测很多次,炒鸡有用。这个网站可以免费下载全国任一地区行政区划的 GeoJSON 格式数据
http://datav.aliyun.com/tools/atlas/#&lat=31.728167146023935&lng=104.32617187499999&zoom=3
跟推送里提到的不一样的是,我用谷歌浏览器打开页面如上图所示,并没有看到直接的下载按钮,因此我一般是复制那个链接,利用迅雷下载,当然其他的下载器或者浏览器插件都可
以获取上海市为例
上面一个链接是上海市外轮廓,下面一个链接是还包括了行政区划的界线,复制链接下载即可
以上获取的是geojson文件,有时候需要shp文件,这个可以很方便的利用geopandas进行转换,
import geopandas as gpd
import os
data = gpd.read_file(r'E:\data\shanghai_full.json')
try:
os.mkdir('output')
except FileExistsError:
pass
data.to_file('output/shanghai.shp',
driver='ESRI Shapefile',
encoding='utf-8')
查看编码:
data = gpd.read_file(r'E:\data\shanghai_full.json')
print(data.crs) # 查看数据对应的crs
得到其编码为epsg:4326,说明这个网站下下来的地图坐标系可能是wgs84
但是经过与OSM底图对比,发现与wgs84有偏差,而右下角注明该平台是基于高德平台开发,因此应该是GCJ02坐标系
利用Qgis的插件GeoHey
可以轻松转换为wgs84,可能会出现报错说invalid geometries,这个时候需要利用Tool box里的Fix geometries
修复一下,再利用GeoHey
转换一下即可
转换后对比效果,跟OSM底图对上了
这个推送还提到了介绍的另一种利用arcgis获取行政区划的方法,习惯arcgis操作的可以康康「教程」行政边界矢量数据的获取——以山西省为例