zoukankan      html  css  js  c++  java
  • 使用BaseMap绘制地图它不香么

    一 前言

    使用baseMap绘制地图简单方便,使用BaseMap需要搭配其它库进行使用常见的就是matplotlib; 读完本篇,读者将学会简单的使用baseMap或世界地图,国家地图,省份甚至特定地区等等;如果作者文章不错,随手点赞关注谢谢,不要耍白嫖哟;

    公众号:知识追寻者

    知识追寻者(Inheriting the spirit of open source, Spreading technology knowledge;)

    二 BaseMap绘图

    地图背景说明

    1. drawcoastlines():绘制海岸线。
    2. fillcontinents():为大陆内部着色(通过填充海岸线多边形)
    3. drawcountries():绘制国家边界。
    4. drawstates():绘制北美的州界。
    5. drawrivers():绘制河流。
    6. drawlsmask():绘制高分辨率海陆掩码作为图像,指定土地和海洋颜色。
    7. bluemarble():绘制一张NASA蓝色大理石图像作为地图背景。
    8. shadedrelief():绘制一个阴影浮雕图像作为地图背景。
    9. etopo():绘制etopo浮雕图像作为地图背景。
    10. warpimage():使用abitrary图像作为地图背景。图像必须是全球的,从国际数据线向东,南极向北,以纬度/经度坐标覆盖世界。

    2.1 arcgis REST API服务绘制图像

    Basemap 参数说明

    • llcrnrlon 经度下界
    • llcrnrlat 纬度下界
    • urcrnrlon 经度上界
    • urcrnrlat 纬度上界

    arcgisimage 参数说明

    • server 远程服务器地址
    • service 底图类型
    • xpixels 缩放比例
    • dpi 分辨率
    • verbose 打印用于获取远程图像的URL

    service参数列表

    http://server.arcgisonline.com/arcgis/rest/services

    # -*- coding: utf-8 -*-
    import warnings
    warnings.filterwarnings('ignore')
    
    from mpl_toolkits.basemap import Basemap
    import matplotlib.pyplot as plt
    
    map = Basemap(llcrnrlon=70,llcrnrlat=3,urcrnrlon=140,urcrnrlat=54)
    map.arcgisimage(service='NatGeo_World_Map', xpixels = 1500, ypixels=None,dpi=120, verbose= True)
    plt.show()
    

    结果

    2.2 绘制海岸线

    drawcoastlines 参数说明

    • linewidth : 线宽度
    • linestyle : 设置线风格,参照matplotlib
    • color :颜色,参照matplotlib
    • antialiasing:抗锯齿
    • axes 轴实例
    • zorder: 海岸线图层位置
    # -*- coding: utf-8 -*-
    import warnings
    warnings.filterwarnings('ignore')
    
    from mpl_toolkits.basemap import Basemap
    import matplotlib.pyplot as plt
    
    map = Basemap()
    # 国家陆地填充颜色,湖泊填充颜色
    map.fillcontinents(color='coral',lake_color='aqua')
    # 绘制海岸线
    map.drawcoastlines(linewidth=0.5, linestyle='solid', color='k', antialiased=1, ax=None, zorder=None)
    plt.show()
    

    结果

    2.3 绘制国家地图

    drawcountries 参数与海岸线类似,不赘述

    drawcountries(linewidth=0.5,linestyle='solid',color='k',antialiased=1,ax=None,zorder=None)

    # -*- coding: utf-8 -*-
    import warnings
    warnings.filterwarnings('ignore')
    
    from mpl_toolkits.basemap import Basemap
    import matplotlib.pyplot as plt
    
    # 规定投影方法;设置中国地图中部经纬度
    map = Basemap(projection='ortho',
                  lat_0=25, lon_0=105)
    # 绘制地图边界,填充颜色 蓝色; 设置线宽度
    map.drawmapboundary(fill_color='aqua',linewidth=1.0)
    # 陆地填充颜色,湖泊填充颜色
    map.fillcontinents(color='coral',lake_color='aqua')
    # 绘制国家
    map.drawcountries()
    
    plt.show()
    

    结果

    2.4绘制浮雕地图

    # -*- coding: utf-8 -*-
    import warnings
    warnings.filterwarnings('ignore')
    
    from mpl_toolkits.basemap import Basemap
    import matplotlib.pyplot as plt
    
    map = Basemap(llcrnrlon=70,llcrnrlat=3,urcrnrlon=140,urcrnrlat=54,
                 resolution='i', projection='cass', lat_0 = 25, lon_0 = 105)
    # 浮雕图像
    map.etopo()
    # 海岸线
    map.drawcoastlines()
    # 显示
    plt.show()
    

    结果

    2.5 绘制地图带有经纬度

    # -*- coding: utf-8 -*-
    import warnings
    warnings.filterwarnings('ignore')
    
    from mpl_toolkits.basemap import Basemap
    import matplotlib.pyplot as plt
    
    # 规定投影方法;设置中国地图中部经纬度
    map = Basemap(projection='ortho',
                  lat_0=25, lon_0=105,
                  width=25000000, height=25000000)
    # 绘制地图边界,填充颜色 蓝色; 设置线宽度
    map.drawmapboundary(fill_color='aqua',linewidth=1.0)
    # 陆地填充颜色,湖泊填充颜色
    map.fillcontinents(color='coral',lake_color='aqua')
    # 绘制国家
    map.drawcountries()
    # 设置经度
    map.drawmeridians(range(0, 360, 20))
    # 设置纬度
    map.drawparallels(range(-90, 100, 10), dashes=[4, 2], color='r', zorder=0 )
    plt.show()
    

    结果

    2.6 绘制美洲地图

    # -*- coding: utf-8 -*-
    import warnings
    warnings.filterwarnings('ignore')
    
    from mpl_toolkits.basemap import Basemap
    import matplotlib.pyplot as plt
    
    
    map = Basemap(width=12000000,height=9000000,
                rsphere=(6378137.00,6356752.3142),
                resolution='l',area_thresh=1000.,projection='lcc',
                lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)
    # 地图边界
    map.drawmapboundary(fill_color='aqua')
    # 陆地海洋填充
    map.fillcontinents(color='#FF7F50', lake_color='#00BFFF')
    # 国家
    map.drawcountries()
    # 美洲地图
    map.drawstates(color='0.5')
    
    plt.show()
    

    结果

    2.7 绘制河流

    # -*- coding: utf-8 -*-
    import warnings
    warnings.filterwarnings('ignore')
    
    from mpl_toolkits.basemap import Basemap
    import matplotlib.pyplot as plt
    
    
    map = Basemap(width=25000000, height=25000000,llcrnrlon=70,llcrnrlat=3,urcrnrlon=140,urcrnrlat=54,
                 resolution='i', projection='cass', lat_0 = 25, lon_0 = 105)
    # 地图边界
    map.drawmapboundary(fill_color='aqua')
    # 陆地填充
    map.fillcontinents(color='coral', lake_color='aqua')
    # 绘制国家
    map.drawcountries()
    # 绘制河流
    map.drawrivers(color='#0000ff')
    
    plt.show()
    

    结果

    三 参考连接

    RGB 颜色对照 https://www.sioe.cn/yingyong/yanse-rgb-16/

    basemap教程:https://basemaptutorial.readthedocs.io/en/latest/

    matplotlib basemap教程 https://matplotlib.org/basemap/users/geography.html

  • 相关阅读:
    DelphiXE
    Delphi_检查exe文件是否是"随机基址"
    Delphi_按字节比较两个文件
    HTTP 头部
    NumberFormat usage
    tomcat 配置
    android 与JS之间的交互
    离线安装SDK
    Android SDK更新 Connection to http://dl-ssl.google.com refused
    自定义圆形图片
  • 原文地址:https://www.cnblogs.com/zszxz/p/12843352.html
Copyright © 2011-2022 走看看