cartopy是英国气象局开发的一款用于地理空间数据处理的python库,支持创建并发布高质量地图,随着basemap的停止维护,cartopy已成Python中地理绘图的首选模块,示例如下
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
ax = plt.axes(projection=ccrs.PlateCarree())
ax.coastlines()
plt.show()
PlateCarree是可利投影,圆柱投影的原理是将地物投影到圆柱面上再展开,cartopy中支持的圆柱投影如下表所示
圆柱投影 | 类型 | 参数 | 备注 |
---|---|---|---|
PlateCarree | L c , g L_c, g Lc?,g | 将地物投影到圆柱面上再展开,常用来绘制世界地图 | |
Lambert Cylindrical | 兰伯特等积投影 | L c L_c Lc? | 也是绘制世界地图的一种常用方案 |
Miller | 米勒投影 | L c L_c Lc? | |
Mercator | 墨卡托投影 | 较多 | 正轴等角割圆柱投影。经纬线为相互垂直的平行直线,图上无角度变形,但面积变形较大。该投影常用于制作航海图或赤道附近区域的地图。 |
Transverse Mercator | 横轴墨卡托投影 | 较多 | 对标准墨卡托投影的一种变换。 |
UTM | UTM投影 | 制图中最常用的一种投影方法之一。 |
参数说明:
Mercator(central_longitude=0.0, min_latitude=-80.0, max_latitude=84.0,
latitude_true_scale=0.0, globe=None)
TransverseMercator(central_longitude=0.0, central_latitude=0.0,
false_easting=0.0, false_northing=0.0, scale_factor=1.0, globe=None)
UTM(zone, southern_hemisphere=False, globe=None)
下面使用默认参数,对这六种圆柱投影进行绘制
projDct = {
"Plate Carree": ccrs.PlateCarree(),
"Lambert Cylindrical": ccrs.LambertCylindrical(),
"Miller": ccrs.Miller(),
"Mercator": ccrs.Mercator(),
"TM" : ccrs.TransverseMercator(),
"UTM" : ccrs.UTM(1)
}
fig = plt.figure()
for i,key in enumerate(projDct,1):
try:
ax = fig.add_subplot(2,3,i,projection=projDct[key])
ax.coastlines()
plt.title(key)
except:
continue
plt.show()
如图所示