绘制地图背景

Basemap 包含 GSHHG 海岸线数据集,以及来自 GMT 的河流、州界和国界数据集。这些数据集可用于以多种不同分辨率在地图上绘制海岸线、河流和政治边界。相关的 Basemap 方法有

  • drawcoastlines(): 绘制海岸线。

  • fillcontinents(): 为大陆内部着色(通过填充海岸线多边形)。不幸的是,fillcontinents 方法并不总是能正确执行。Matplotlib 总是尝试填充多边形的内部。在某些情况下,海岸线多边形的内部可能不明确,导致外部而非内部被填充。在这种情况下,建议的解决方法是使用 drawlsmask() 方法,通过为陆地和水域指定不同颜色的图像进行覆盖(参见下文)。

  • drawcountries(): 绘制国家边界。

  • drawstates(): 绘制北美洲的州界。

  • drawrivers(): 绘制河流。

除了绘制海岸线和政治边界,还可以使用图像作为地图背景。Basemap 为此提供了几种选项

  • drawlsmask(): 将高分辨率陆海掩膜绘制为图像,并指定陆地和海洋的颜色。陆海掩膜源自 GSHHS 海岸线数据,有多种海岸线选项和像素大小可供选择。

  • bluemarble(): 绘制 NASA 的 蓝色弹珠 (Blue Marble) 图像作为地图背景。

  • shadedrelief(): 绘制 着色浮雕 (shaded relief) 图像作为地图背景。

  • etopo(): 绘制 etopo 浮雕图像作为地图背景。

  • warpimage(): 使用任意图像作为地图背景。该图像必须是全球性的,覆盖从国际日期变更线向东和从南极向北的经纬度坐标下的世界。

以下是绘制地图背景的各种方式的示例。

  1. 绘制海岸线,填充海洋和陆地区域。

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# setup Lambert Conformal basemap.
m = Basemap(width=12000000,height=9000000,projection='lcc',
            resolution='c',lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)
# draw coastlines.
m.drawcoastlines()
# draw a boundary around the map, fill the background.
# this background will end up being the ocean color, since
# the continents will be drawn on top.
m.drawmapboundary(fill_color='aqua') 
# fill continents, set lake color same as ocean color. 
m.fillcontinents(color='coral',lake_color='aqua')
plt.show()

(源代码)

../_images/background1.png
  1. 绘制陆海掩膜图像。

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# setup Lambert Conformal basemap.
# set resolution=None to skip processing of boundary datasets.
m = Basemap(width=12000000,height=9000000,projection='lcc',
            resolution=None,lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)
# draw a land-sea mask for a map background.
# lakes=True means plot inland lakes with ocean color.
m.drawlsmask(land_color='coral',ocean_color='aqua',lakes=True)
plt.show()

(源代码)

../_images/background2.png
  1. 绘制 NASA “蓝色弹珠” 图像。

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# setup Lambert Conformal basemap.
# set resolution=None to skip processing of boundary datasets.
m = Basemap(width=12000000,height=9000000,projection='lcc',
            resolution=None,lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)
m.bluemarble()
plt.show()

(源代码)

../_images/background3.png
  1. 绘制着色浮雕图像。

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# setup Lambert Conformal basemap.
# set resolution=None to skip processing of boundary datasets.
m = Basemap(width=12000000,height=9000000,projection='lcc',
            resolution=None,lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)
m.shadedrelief()
plt.show()

(源代码)

../_images/background4.png
  1. 绘制 etopo 浮雕图像。

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# setup Lambert Conformal basemap.
# set resolution=None to skip processing of boundary datasets.
m = Basemap(width=12000000,height=9000000,projection='lcc',
            resolution=None,lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)
m.etopo()
plt.show()

(源代码)

../_images/background5.png