涂色
# 首先给地球涂上蓝色的一层
map.drawmapboundary(fill_color='aqua')
# 给大陆涂上珊瑚色,给江河湖泊涂上大海一样的颜色
map.fillcontinents(color='coral', lake_color='aqua')
# 画经纬度线
m.drawparallels(np.arange(-90.,91.,30.))
m.drawmeridians(np.arange(-180.,181.,60.))
# 送上标题
plt.title("Mercator Projection")
管理地图投影
1. projection参数用来设置投影模式
map = Basemap(projection = 'cyl')
2. 利用epsg设置地图投影,绘制*省
map = Basemap(llcrnrlon=119.3, llcrnrlat=20.7, urcrnrlon=124.6, urcrnrlat=26, resolution='h', epsg=3415)
绘制区域地图
注意:使用cyl,merc,mill,cea和gall投影时,如果没有设置边界,那么边界默认设置为-180,-90,180,90(也就是整个球体),其他投影都需要额外设置。
1. 利用经纬度设置边界,绘制海南省
map = Basemap(llcrnrlon=108.3, llcrnrlat=18, urcrnrlon=111.5, urcrnrlat=20.3, resolution='i', projection='tmerc', lat_0=20, lon_0=111)
注意:使用sinu,moll,hammer,npstere,spstere,nplaea,splaea,npaeqd, spaeqd, robin, eck4, kav7,和 mbtfpq投影中,不能使用这种方法。一是因为在有些投影中,整个地球都被绘制出来,二是因为在有些投影中,无法通过地理坐标计算extension的值
2. 利用地图设置边界
map = Basemap(resolution='l', satellite_height=3000000., projection='nsper', lat_0=30, lon_0=116, llcrnrx=500000.,llcrnry=500000., urcrnrx=2700000., urcrnry=2700000.)
注意:只有在ortho,geos和nsper投影中使用这种方法
3. 通过中心坐标和长度、宽度
# 中心维度0,经度90,图片宽度10000000,高度10000000
map = Basemap(projection='aeqd', lat_0=0, lon_0=90, width=10000000, height=10000000.)
基本函数
1. 在地图上画一个点
map = Basemap(projection = 'ortho', lat_0 = 0, lon_0 = 120, width = 10000000,height = 10000000.)
# x是经度,y是纬度
x, y = map(114, 22.4) map.plot(x, y, marker = 'D', color = 'm')
用经纬度计算地图坐标的时候
- 如果latlon关键字设置为true,x,y将被当做经纬度。但是在老版本的Basemap中不能这样使用。
plot方法绘制点时需要这一点在地图上的坐标,maker和color参数如下
- 默认maker是一个点,详细属性在这里http://matplotlib.org/api/markers_api.html
- 默认color是黑色(k),详细属性在这里http://matplotlib.org/api/colors_api.html
2.绘制一系列的点
m = Basemap(projection='ortho', lat_0=0, lon_0=120)
# 北上广郑四个城市
lons = [113.14, 113.4, 121.29, 116.24]
lats = [23.08, 34.46, 31.14, 39.55]
# x是经度,y是纬度
x, y = m(lons, lats)
m.scatter(x, y, marker='o', color='m')
注意:如果m.fillcontinents(),那么填充的颜色会覆盖掉这四个点
3.绘制栅栏数据
有两个方法可以处理栅格数据,一个是contour/contourf,用来绘制或者填充轮廓;一个是pcolor/pcolormesh,用来创造一个虚拟色彩的点