美文网首页
用Python绘制中国地图

用Python绘制中国地图

作者: Fishier | 来源:发表于2020-03-03 19:02 被阅读0次

    来源:由Taotao Tu网络整理+修改而得,所有代码均可运行。

    1.安装

    https://www.lfd.uci.edu/~gohlke/pythonlibs/#basemap网站下载 pyproj 和 basemap 两个包的 whl 文件。由于本人电脑使用的是Python3.7 版本,故下载的whl文件均对应3.7版本。

    在Anaconda prompt界面下,找到 pyproj 和 basemap 两个包的目录(输入命令的方式等同于Dos操作系统)。

    pip install pyproj-2.2.2-cp37-cp37m-win32.whl

    pip install basemap-1.2.1-cp37-cp37m-win32.whl

    通过上述命令,既可以安装好两个绘图相关包。

    2.导入库

    import matplotlib.pyplot as pltfrom mpl_toolkits.basemap import Basemapfrommatplotlib.patches import Polygon

    3.创建世界平面图

    plt.figure(figsize=(15,7)) #定义图的大小

    map = Basemap() #新建一张世界地图

    map.drawmapboundary(fill_color='aliceblue') #给地球涂上蓝色

    map.fillcontinents(color='palegreen',lake_color='green')

    map.drawcoastlines() #画出海岸线

    map.drawcountries(linewidth=1.5) #画出国家或地区分界线

    plt.show() #打开窗口显示运行结果

    1.png 2.png
    1. 创建世界球形图并给大地和湖泊加上颜色

    plt.figure(figsize=(15,15))#定义图的大小

    m = Basemap(projection='ortho',lat_0=0,lon_0=0)#创建世界地图并增加投影

    m.drawmapboundary(fill_color='aliceblue') #给地球涂上蓝色

    m.fillcontinents(color='palegreen',lake_color='green')#给大地和海洋涂上颜色

    plt.show()

    3.png

    如果打算增加海岸线,只需增加 m.drawcoastlines()

    plt.figure(figsize=(15,15))#定义图的大小

    m = Basemap(projection='ortho',lat_0=0,lon_0=0)#创建世界地图并增加投影

    m.drawmapboundary(fill_color='aliceblue') #给地球涂上蓝色

    m.fillcontinents(color='palegreen',lake_color='green')#给大地和海洋涂上颜色

    m.drawcoastlines()#画海岸线

    plt.show()

    4.png

    5.绘制中国黑白地图框架

    import matplotlib.pyplot as plt

    from mpl_toolkits.basemap import Basemap

    plt.figure(figsize=(16,8))

    m = Basemap(llcrnrlon=77, llcrnrlat=14, urcrnrlon=140, urcrnrlat=51, projection='lcc', lat_1=33, lat_2=45, lon_0=100)

    m.drawcoastlines()

    m.drawcountries(linewidth=1.5)

    plt.show()

    6. 绘制中国地图

    https://gadm.org/download_country_v3.html 从这里下载中国大陆、中国台湾、中国香港和中国澳门的地形图。

    plt.figure(figsize=(16, 17)) # 定义图的大小

    m = Basemap(llcrnrlon=77, llcrnrlat=14, urcrnrlon=140, urcrnrlat=51, projection='lcc',

           lat_1=33, lat_2=45, lon_0=100)    # 创建中国地图
    

    m.drawcountries(linewidth=1.5) # 画出中国地图

    m.drawmapboundary(fill_color='aqua') # 给地球涂上蓝色

    m.fillcontinents(color='coral', lake_color='palegreen') # 给大陆和海洋分别涂上颜色

    m.drawcoastlines() # 画海岸线

    给中国大陆加上金色

    m.readshapefile('d:\China\gadm36_CHN_1', 'states', drawbounds=True)

    ax = plt.gca()

    for nshape, seg in enumerate(m.states):

    poly = Polygon(seg, facecolor='gold')

    ax.add_patch(poly)

    给中国台湾加上金色

    m.readshapefile('d:\TWprovince\gadm36_TWN_1', 'taiwan', drawbounds=False)

    for nshape, seg in enumerate(m.taiwan):

    poly = Polygon(seg, facecolor='gold')

    ax.add_patch(poly)

    给中国香港加上金色

    m.readshapefile('d:\HongKong\gadm36_HKG_1', 'HongKong', drawbounds=False)

    for nshape, seg in enumerate(m.HongKong):

    poly = Polygon(seg, facecolor='gold')

    ax.add_patch(poly)

    给中国澳门加上金色

    m.readshapefile('d:\Macau\gadm36_MAC_1', 'Macau', drawbounds=False)

    for nshape, seg in enumerate(m.Macau):

    poly = Polygon(seg, facecolor='gold')

    ax.add_patch(poly)

    plt.show()

    5.png

    7.分省中国地图-A

    import matplotlib.pyplot as plt

    from mpl_toolkits.basemap import Basemap

    from matplotlib.patches import Polygon

    import matplotlib.colors

    省份以及对应的数值

    provinceDic = {"安徽":9, "北京":5, "重庆":8,

    "福建":7, "甘肃":7, "广东":5, "广西":6, "贵州":7,

    "海南":6, "河北":8, "黑龍江":8, "河南":9, "湖北":9,

    "湖南":9, "江苏":8, "江西":10, "吉林":7, "辽宁":7,

    "内蒙古":7, "宁夏":7, "青海":4, "山东":9, "上海":5,

    "陕西":8, "山西":8, "四川":8, "天津":7, "新疆":1,

    "西藏":3, "云南":7, "浙江":9, "香港":3, "澳门":2, "台湾":2}

    颜色

    colorDict = {"1":"F6F8FB", "2":"E8ECF4",

    "3":"D2DAEA", "4":"BBC8E0", "5":"A5B6D6",

    "6":"8EA3CB", "7":"7791C1", "8":"607EB6",

    "9":"4A6DAD", "10":"1D4898"}

    地图显示配置

    plt.figure(figsize=(16,8))

    m = Basemap()

    m.drawcountries(linewidth=1.5)

    m.drawcoastlines()

    m = Basemap(llcrnrlon=77, llcrnrlat=14, urcrnrlon=140, urcrnrlat=51, projection='lcc', lat_1=33, lat_2=45, lon_0=100)

    读取中国大陆shapefile

    m.readshapefile('d:\China\gadm36_CHN_1', 'states', drawbounds=True)

    读取台湾shapefile

    m.readshapefile('d:\TWprovince\gadm36_TWN_1', 'taiwan', drawbounds=False)

    读取香港shapefile

    m.readshapefile('d:\HongKong\gadm36_HKG_1', 'HongKong', drawbounds=False)

    读取澳门shapefile

    m.readshapefile('d:\Macau\gadm36_MAC_1', 'Macau', drawbounds=False)

    ax = plt.gca()

    大陆地区进行上色

    for i, shapedict in enumerate(m.states_info):

    p = shapedict['NL_NAME_1'].split('|')

    s = p[1] if len(p) > 1 else p[0]

    for key in provinceDic.keys():

    if key in s:
    

    color = '#' + colorDict[str(provinceDic[key])]

    ax.add_patch(Polygon(m.states[i], facecolor = color))

    台湾上色

    for nshape, seg in enumerate(m.taiwan):

    color = '#' + colorDict['5']

    poly = Polygon(seg, facecolor=color)

    ax.add_patch(poly)

    plt.show()

    6.png

    相关文章

      网友评论

          本文标题:用Python绘制中国地图

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