Basemap包括GSSH海岸线数据集,以及来自GMT的河流、州和国家边界的数据集。这些数据集可用于在地图上以几种不同的分辨率绘制海岸线,河流和政治边界。相关的底图方法是:
- drawcoastlines():绘制海岸线。
- fillcontinents():为大陆内部着色(通过填充海岸线多边形)。不幸的是,fillcontinents方法并不总是做正确的。因为Matplotlib总是尝试填充多边形的内部。在某些情况下,海岸线多边形的内部可以是模糊的,并且有时需要填充外部而不是内部。在这些情况下,建议的解决方法是使用drawlsmask()方法覆盖具有为陆地和水域指定的不同颜色的图像。
- drawcountries():绘制国家边界。
- drawstates():绘制北美的州界。
- drawrivers():绘制河流。
首先导入库,建立好运行环境:
%matplotlib inline
import warnings
warnings.filterwarnings('ignore')
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
绘制海岸线。
drawcoastlines(linewidth=1.0, linestyle=’solid’, color=’k’, antialiased=1, ax=None, zorder=None)
- 线宽集。线宽以像素为单位。
- linestyle设置线型。默认情况下是固体,但可以是虚线,或任何matplotlib选项。
- 颜色默认为k(black)。遵循matplotlib约定。
- 抗锯齿默认为true
- zorder设置图层位置。默认情况下,顺序由Basemap设置。
map = Basemap()
map.drawcoastlines()
plt.show()
drawcounties
从库包括的图层绘制国家边界。
drawcounties(linewidth=0.1, linestyle=’solid’, color=’k’, antialiased=1, facecolor=’none’, ax=None, zorder=None, drawbounds=False)
- 线宽集。线宽以像素为单位。
- linestyle设置线型。默认情况下是固体,但可以是虚线,或任何matplotlib其他选项。
- 颜色默认为k(black)。遵循matplotlib约定。
- 抗锯齿默认为true。
- zorder设置图层位置。默认情况下,顺序由Basemap设置。
注:facecolor参数,它应该是县的颜色,但在一些Basemap版本不能运行。
注意:
- 分辨率是固定的,不依赖于传递给类构造函数的分辨率。
- 海岸线是另一个功能,而乡镇海岸线不被认为是海岸线,因此有必要把这个方法和其他的方法结合起来以获得好的地图。
drawcountries()
从库中包含的图层绘制国家/地区边界。
map = Basemap(projection='ortho', lat_0=0, lon_0=0)
map.drawmapboundary(fill_color='aqua')
map.fillcontinents(color='coral',lake_color='aqua')
map.drawcountries()
plt.show()
Drawlsmask是绘制湖泊,陆地和海洋的方法。尽量避免使用fillcontinents和drawmapboundary方法。此外,Drawlsmask可以将数据源更改为自定义点阵列。 与其他方法的不同之处在于,在此方法中无法设置zorder。
drawmapboundary
在地图上绘制地球边界,可选择填充。
drawmeridians()
在地图上绘制经线;drawparallels()
在地图上绘制纬线。
map = Basemap()
map.drawcoastlines()
map.drawmeridians(range(0, 360, 20))
map.drawparallels(range(-180, 180, 20), linewidth=2, dashes=[4, 2], labels=[1,0,0,1], color='r', zorder=0)
plt.show()
drawrivers()
从库中包含的图层绘制河流。
绘制背景
绘制地图并不只包括绘制海岸线和政治边界,也包括地图背景的绘制。Basemap提供了绘制地图背景的几个方法:
- drawlsmask():绘制高分辨率海陆掩码作为图像,指定土地和海洋颜色。陆地海面掩模源自GSHHS海岸线数据,并且有多个海岸线选项和像素大小可供选择。
- bluemarble():绘制一张NASA蓝色大理石图像作为地图背景。
- shadedrelief():绘制一个阴影浮雕图像作为地图背景。
- etopo():绘制etopo浮雕图像作为地图背景。
- warpimage():使用abitrary图像作为地图背景。图像必须是全球的,从国际数据线向东,南极向北,以纬度/经度坐标覆盖世界。
bluemarble
在地图上绘制bluemarble图像。
- 该比例对于降低原始图像分辨率以加速处理是有用的。将图像的大小除以4值为0.5。
- 图像的最终投影被扭曲,所以所有投影方法均正常工作。
map = Basemap(llcrnrlon=-10.5,llcrnrlat=33,urcrnrlon=10.,urcrnrlat=46.,
resolution='i', projection='cass', lat_0 = 39.5, lon_0 = 0.)
map.bluemarble()
map.drawcoastlines()
plt.show()
etopo()
从NOAA取得etopo来绘制一个浮雕图像。图像具有1英寸的弧度分辨率,因此在放大时,结果相当差。
- 该比例对于降低原始图像分辨率以加速处理是有用的。值为0.5将图像的大小除以4
- 图像被扭曲到最终投影,所以所有projectinos使用此方法正常工作
map = Basemap(llcrnrlon=-10.5,llcrnrlat=33,urcrnrlon=10.,urcrnrlat=46.,
resolution='i', projection='cass', lat_0 = 39.5, lon_0 = 0.)
map.etopo()
map.drawcoastlines()
plt.show()
Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).
fillcontinents()
用大陆绘制填充多边形。
map = Basemap(projection='ortho', lat_0=0, lon_0=0)
Fill the globe with a blue color,Fill the continents with the land color。
map.drawmapboundary(fill_color='aqua')
map.fillcontinents(color='coral',lake_color='aqua')
map.drawcoastlines()
plt.show()