文章目录
- 添加特征
- add_feature
- 区域截取
添加特征
cartopy中最基础的地图绘制函数是coastlines,即海岸线线条图,这很复合我们的绘图直觉,毕竟陆地和海洋的边缘,是最清晰的地理特征。而在此之上,还可以通过add_feature函数,为当前地图添加各种特征。
add_feature可选特征有如下六种,均被封装在cartopy.feature中
BORDERS | COASTLINE | LAKES | LAND | OCEAN | RIVERS |
---|---|---|---|---|---|
陆地国界 | 海岸线 | 湖泊 | 岛屿 | 海洋 | 河流 |
下面先展示一下这六种地图的区别
import matplotlib.pyplot as plt###引入库包
import cartopy.crs as ccrs
from cartopy.feature import *proj = ccrs.PlateCarree()feaDct = {"BORDERS":BORDERS,"COASTLINE":COASTLINE,"LAKES":LAKES,"LAND":LAND,"OCEAN":OCEAN,"RIVERS":RIVERS
}fig = plt.figure()
for i,key in enumerate(feaDct, 1):ax = fig.add_subplot(2,3,i,projection=proj)ax.add_feature(feaDct[key])plt.title(key)plt.show()
效果如下,可见这些东西分开之后并不好看,最起码国界线应该和海岸线放在一起,才能正确显示出世界上的各个国家。
add_feature
上面这些大写字母定义的常量,均属NaturalEarthFeature对象,这些对象仅规范了线条或区域,但并未对其进行可视化设置,而add_feature则提供了定制图像的功能。
下面对这些特征稍加定制,并将其在同一坐标系中进行绘制,
fig = plt.figure()
ax = fig.add_subplot(projection=ccrs.PlateCarree())
ax.add_feature(LAND)
ax.add_feature(COASTLINE,lw = 0.3)
ax.add_feature(RIVERS, color='blue', lw = 0.5)
ax.add_feature(LAKES, color='blue', alpha=0.5)
ax.add_feature(OCEAN)
plt.show()
区域截取
很多情况下,我们只需要看某个局部的地图就可以了,为此克通过set_extent来对数据进行截取。下面下面绘制一下非洲地图
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree())
ax.set_extent([-20, 60, -40, 40], crs=ccrs.PlateCarree())ax.add_feature(LAND)
ax.add_feature(OCEAN)
ax.add_feature(COASTLINE)
ax.add_feature(BORDERS, linestyle=':')
ax.add_feature(LAKES, alpha=0.5)
ax.add_feature(RIVERS, color='blue')plt.show()