python画中国地图(含省界、河流等)

作者: 王琛NUIST | 来源:发表于2018-11-18 17:04 被阅读101次

    我们可以使用Basemap这个工具包来实现中国地图的绘制

    首先需要加载一些包:

    import numpy as np
    import matplotlib.pyplot as plt
    from mpl_toolkits.basemap import Basemap
    

    Basemap包就是气象画图的利器,现在我们就可以愉快的画图了!

    plt.figure(1)
    map=Basemap()
    map.drawcoastlines()
    plt.title(r'$World\ Map$',fontsize=24)
    plt.show()
    

    第2行创建一个地图,第3行添加海岸线,这样一个世界地图就出来了,怎么样,很简单吧。(plt.show()这行代码是用来显示图片的)

    ![wordmap_国界线.png](https://img.haomeiwen.com/i15011972/506e6a107e6c56eb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    我们发现这只是海岸线图,那么怎么将国界线添加上去呢?很简单,只要添加一行代码就可以了。

    map.drawcountries()
    
    wordmap_国界线.png

    那么怎么添加河流呢?可能有些同学已经猜到了,就是drawrivers()

    map.drawrivers(color='blue',linewidth=0.3)
    
    wordmap_河流.png

    好了,现在我们可以开始画中国地图了!
    其实只要在创建地图时指定一下范围就可以了,查阅资料发现,中国的经纬度范围是东经135度2分30秒-东经73度40分,北纬3度52分-北纬53度33分。

    map=Basemap(llcrnrlon=70,llcrnrlat=3,urcrnrlon=139,urcrnrlat=54)
    
    chinamap.png
    好了,一个中国地图就出来了!但是我们发现,好像少了点什么,没错就是省界。我们可以在https://gadm.org/download_country_v3.html下载中国大陆和台湾省的行政区域的shape文件,下载后解压,然后加入下面的代码。
    CHN='G:\python_material\MapOfChina'
    

    CHN的值就是解压后的地图文件所在的地址。
    下面我们就可以加入省界了!

    map.readshapefile(CHN+'\gadm36_CHN_shp\gadm36_CHN_1',
                      'states',drawbounds=True)
    

    别忘了把台湾省加上去

    map.readshapefile(CHN+'\gadm36_TWN_shp\gadm36_TWN_1',
                      'taiwan',drawbounds=True)
    
    chinamap_省界.png

    还可以在地图上加上经纬度,比如我们要画5条经纬线,可以这么做:

    parallels = np.linspace(3,55,5)
    map.drawparallels(parallels,labels=[True,False,False,False])
    meridians = np.linspace(70,140,5)
    map.drawmeridians(meridians,labels=[False,False,False,True])
    
    chinamap_省界,经纬线.png
    大功告成!但是,emmm,我们发现好像有点歪?我们可以在创建地图时选择投影参数。
    map=Basemap(llcrnrlon=70,llcrnrlat=3,urcrnrlon=137,urcrnrlat=54,
                projection = 'lcc', lat_1 = 33, lat_2 = 45, lon_0 = 100)
    
    chinamap_省界,经纬线,投影.png

    这回正式的完成了!

    附上所有代码:

    import numpy as np
    import matplotlib.pyplot as plt
    from mpl_toolkits.basemap import Basemap
    
    plt.figure(1)
    map=Basemap(llcrnrlon=70,llcrnrlat=3,urcrnrlon=139,urcrnrlat=54,
                projection = 'lcc', lat_1 = 33, lat_2 = 45, lon_0 = 100)
    map.drawcoastlines()
    map.drawcountries()
    map.drawrivers(color='blue',linewidth=0.3)
    CHN='G:\python_material\MapOfChina'
    map.readshapefile(CHN+'\gadm36_CHN_shp\gadm36_CHN_1',
                      'states',drawbounds=True)
    map.readshapefile(CHN+'\gadm36_TWN_shp\gadm36_TWN_1',
                      'taiwan',drawbounds=True)
    parallels = np.linspace(3,55,5)
    map.drawparallels(parallels,labels=[True,False,False,False])
    meridians = np.linspace(70,140,5)
    map.drawmeridians(meridians,labels=[False,False,False,True])
    plt.title(r'$China\ Map$',fontsize=24)
    
    plt.show()
    

    相关文章

      网友评论

      本文标题:python画中国地图(含省界、河流等)

      本文链接:https://www.haomeiwen.com/subject/qrjgfqtx.html