下面是关于“利用python绘制中国地图(含省界、河流等)”的一份完整攻略。
安装必要的库
绘制地图需要安装maplotlib和basemap库。
pip install matplotlib
pip install basemap
获取地图数据
我们可以从GADM网站下载中国地图数据。地图数据包括省界、县界、河流等信息,我们可以按需选择需要的信息。
我们选择使用省份边界数据和河流数据:
- 中国各行政区划界线数据下载链接
- 中国河流数据下载链接
解压后,我们可以看到两个文件夹cn_province和China-Rivers。
绘制地图
我们可以创建一个新的python文件,使用Matplotlib和Basemap库,绘制中国地图。
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# 绘制中国地图
map = Basemap(llcrnrlon=73.33, llcrnrlat=18.15, urcrnrlon=135.05, urcrnrlat=53.85, resolution='h', epsg=4326)
map.readshapefile('./cn_province/gadm36_CHN_1', 'china', drawbounds=True)
# 绘制河流
map.readshapefile('./China-Rivers/China_river', 'river')
plt.show()
使用readshapefile方法读取shp文件,其中第一个参数是文件路径,第二个参数是绘制图形的名字,可以自定义,第三个参数drawbounds表示是否绘制边界。
示例1
修改上面的代码,加入省界标注和标题,如下所示。
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# 绘制中国地图
map = Basemap(llcrnrlon=73.33, llcrnrlat=18.15, urcrnrlon=135.05, urcrnrlat=53.85, resolution='h', epsg=4326)
map.readshapefile('./cn_province/gadm36_CHN_1', 'china', drawbounds=True)
# 绘制河流
map.readshapefile('./China-Rivers/China_river', 'river')
# 绘制省界
for info, shape in zip(map.china_info, map.china):
proid = info['NAME_1']
if proid in ['Beijing', 'Tianjin', 'Shanghai', 'Chongqing']:
proid = proid + ' Shi'
elif proid=='Inner Mongol':
proid = 'Nei Mongol'
elif proid=='Tibet':
proid = 'Xizang'
elif proid=='Ningxia':
pass
elif proid=='Xinjiang':
pass
else:
proid = proid + ' Sheng'
plt.text(shape[0], shape[1], proid, ha='center', fontsize=10)
# 添加标题
plt.title('China Map')
plt.show()
示例2
修改上面的代码,绘制指定省份的地图。
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# 绘制山西省地图
map = Basemap(llcrnrlon=108.99117, llcrnrlat=34.74667, urcrnrlon=114.65143, urcrnrlat=40.56313, resolution='h', epsg=4326)
map.readshapefile('./cn_province/gadm36_CHN_1', 'shanxi', drawbounds=True)
# 绘制河流
map.readshapefile('./China-Rivers/China_river', 'river')
# 绘制省界
for info, shape in zip(map.shanxi_info, map.shanxi):
proid = info['NAME_1'] + ' ' + info['NAME_2']
plt.text(shape[0], shape[1], proid, ha='center', fontsize=10)
# 添加标题
plt.title('Shanxi Map')
plt.show()
总结
绘制中国地图的过程中,我们需要安装必要的库、获取地图数据、使用Basemap库绘制地图,通过控制Basemap的参数,可以绘制不同范围、不同分辨率的地图,同时我们也可以添加标注和标题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用python绘制中国地图(含省界、河流等) - Python技术站