Python气象数据处理与绘图:在不同地图投影上叠加矩形的方法

前言

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

需求

在研究全球气象要素时我们经常要进行分区的讨论,最简单的方法就是使用矩形框进行经纬度的选择。为了让读者以及审稿人一眼就能看出你是如何分区,经纬度范围等设置时,在基础的底图上叠加矩形框并修改如线段颜色,填色等可以让人一目了然,说了这么多,还不如弄几张图来看看。


Robinson投影

PlateCarree投影

方法

这两种投影添加矩形框的方法不太一致,我查过很多资料后整理如下。

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投影来研究全球的一些气象信息,比如季风,温度等。不深究,应该有他独特的含义吧。

总结

没什么好说的,纯粹记录总结

你可能感兴趣的:(Python气象数据处理与绘图:在不同地图投影上叠加矩形的方法)