经典地图制图中使用的投影面有圆柱面、圆锥面或平面等。根据所用投影面,地图投影相对应地可分为圆柱投影、圆锥投影和方位投影。后来又发展出了很多现代地图投影,如伪圆柱、多圆锥等投影办法。在制图时选择合适的地图投影是一件重要的工作。
本文将对 Cartopy 中支持的地图投影进行逐一进行简要介绍,这些投影都是 cartopy.crs 中的类。若要绘制某一类投影的地图,只需将其实例化之后传入 plt.axes() 方法的 projection 参数即可。本文不涉及投影的原理,旨在展示每种地图投影的效果和用法,以便在选择时参考。
圆柱投影
PlateCarree
PlateCarree(可利)投影将地物投影到圆柱面上再展开,常用来绘制世界地图。该类的定义为:
1
class cartopy.crs.PlateCarree(central_longitude=0.0, globe=None)
参数说明:
central_longitude:中央经线,默认为 0;
globe:椭球定义,默认为 WGS84。
示例:
LambertCylindrical
Lambert cylindrical projection(兰伯特等积投影)也是绘制世界地图的一种常用方案。该类的定义为:
1
class cartopy.crs.LambertCylindrical(central_longitude=0.0)
参数说明:
central_longitude:中央经线,默认为 0。
示例:
Mercator
Mercator(墨卡托)投影,属于正轴等角割圆柱投影。经纬线为相互垂直的平行直线,图上无角度变形,但面积变形较大。该投影常用于制作航海图或赤道附近区域的地图。其类定义为:
1
2
class cartopy.crs.Mercator(central_longitude=0.0, min_latitude=-80.0, max_latitude=84.0,
latitude_true_scale=0.0, globe=None)
参数说明:
central_longitude:中央经线,默认为 0;
min_latitude:显示的最小纬线(最南端),默认为 -80;
max_latitude:显示的最大纬线(最北端),默认为 84;
latitude_true_scale:长度不变形的纬线,默认为 0;
globe:椭球定义,默认为 WGS84。
示例:
Miller
Miller(米勒)投影。其类定位为:
1
class cartopy.crs.Miller(central_longitude=0.0)
参数说明:
central_longitude:中央经线,默认为 0。
示例:
TransverseMercator
TransverseMercator(横轴墨卡托)投影是对标准墨卡托投影的一种变换。其类定义为:
1
2
3
class cartopy.crs.TransverseMercator(central_longitude=0.0, central_latitude=0.0,
false_easting=0.0, false_northing=0.0,
scale_factor=1.0, globe=None)
参数说明:
central_longitude:中央经线,默认为 0;
central_latitude:中央纬线,默认为 0;
false_easting:平面上 X 轴坐标(东方向)的偏移量,以米为单位;
false_northing:平面上 Y 轴坐标(北方向)的偏移量,以米为单位;
scale_factor:中央经线处的长度变形因子,默认为 1;
globe:椭球定义,默认为 WGS84。
示例:
UTM
UTM(通用横轴墨卡托投影),制图中最常用的一种投影方法之一。在 UTM 中,地球上的主要陆地被划分为一个个的网格区间。对于纬度,从南纬 80° 开始,每 8° 被划分为一个区间