前言
python提供的地图投影有很多,我主要使用Cartopy模块进行投影的选择以及绘制。下面是官网对不同投影的解释以及示例,具体可以每个点开看看就知道
- PlateCarree
- AlbersEqualArea
- AzimuthalEquidistant
- EquidistantConic
- LambertConformal
- LambertCylindrical
- Mercator
- Miller
- Mollweide
- Orthographic
- Robinson
- Sinusoidal
- Stereographic
- TransverseMercator
- UTM
- InterruptedGoodeHomolosine
- RotatedPole
- OSGB
- EuroPP
- Geostationary
- NearsidePerspective
- EckertI
- EckertII
- EckertIII
- EckertIV
- EckertV
- EckertVI
- EqualEarth
- Gnomonic
- LambertAzimuthalEqualArea
- NorthPolarStereo
- OSNI
- SouthPolarStereo
需求
在研究全球气象要素时我们经常要进行分区的讨论,最简单的方法就是使用矩形框进行经纬度的选择。为了让读者以及审稿人一眼就能看出你是如何分区,经纬度范围等设置时,在基础的底图上叠加矩形框并修改如线段颜色,填色等可以让人一目了然,说了这么多,还不如弄几张图来看看。
方法
这两种投影添加矩形框的方法不太一致,我查过很多资料后整理如下。
PlateCarree投影
首先添加底图
fig_1 = plt.figure(figsize=(12,14))
ax = fig_1.add_axes([0.3,2.6, 0.6, 0.5] , projection=ccrs.PlateCarree())
这时候运行命令的话一张地图就出来了,比如我要添加北美的矩形框,就要使用patches的命令,并且transform要设置为PlateCarree,这时候就可以。
ax.coastlines()
ax.set_global()
NA= patches.Rectangle((-170, 25),120,45,linewidth=4,linestyle='-' ,zorder=4,edgecolor='grey',facecolor='none', transform=ccrs.PlateCarree())
ax.add_patch(NA) #-170 -50 25-70
然后使用
Robinson
如果想添加矩形的区域要使用transform=ccrs.PlateCarree,如果你设置为Robinson是没有结果的,这里要注意一下就行。
ax.add_patch(mpatches.Rectangle(xy=[-170, 25], width=120, height=45,
facecolor='blue',
alpha=0.5,
transform=ccrs.PlateCarree() ) )
当然为了好玩也可以设置为其他的,比如 transform=ccrs.Geodetic
这个Robinson投影我用的不太多,还是比较喜欢PlateCarree投影。最近看论文,发现一些好的期刊都喜欢用Robinson投影来研究全球的一些气象信息,比如季风,温度等。不深究,应该有他独特的含义吧。
总结
没什么好说的,纯粹记录总结