Python地理信息库包—— Cartopy
一、简介
在前面的教程中,我们已经讲解了常用的二维型数据的可视化方法。但是在日常研究中,由于大气科学属于地学系统,和地球地理信息的结合十分密切,大多数时间,需要在图形中添加地理信息。作为胶水语言,在Python中,目前还在使用的地理可视化库包尚有basemap、cartopy、geopandas等,但由于basemap是基于Python 2,而2已经不再维护,这意味着basemap也要为Python 2陪葬。而geopandas是基于pandas的,属于商务图表利器,但对于气象科研,显得力不从心。现在仅介绍basemap接班者cartopy。
二、Cartopy的安装在前面已经推荐大家使用conda安装更新库包,从几个Python交流群反馈来看,请尽量不要混用pip与conda来安装库包,反复在pip和conda之间横跳最为致命。如果最开始选择conda,请尽量从一而终。安装Cartopy的命令主要有下面两种:conda install cartopyconda install -c conda-forge cartopy###conda-forge是一个提供库包辅助社区按照之前的教程,请随意新建一个文档,输入import cartopy ,如果没有报错(无事发生*囧*),说明库包已正常安装。三、初识Cartopy
由于地球是球体,而我们使用的地图是平面的,将球型展开为平面进行绘制时有距离、面积的失真。所以地图学家们提出了各种各样的投影方式,来尽量减小某方面的失真。Cartopy作为专业地理制图库包,提供了非常多的投影方式,能够满足气象业务的需求(import cartopy.crs as ccrs)。其中需要我们重点关注的是:
默认投影(PlateCarree)兰勃脱投影(Lambert)墨卡托投影(Mercator)
极投影(我对此类投影的统一称呼,当然学名不叫极投影)
其中,默认投影适合单独省份或者地级市的绘制,这种情况下其变形基本无法看出(内蒙古的meteoer请走开);兰勃脱投影适合中纬度大范围绘制,比如绘制全中国大公鸡、东亚形势、西北太平洋等;墨卡托投影适合低纬度赤道附近的绘制,一般研究台风、纬向环流等(我也不是专门研究这个的,只能说也许、大概、差不离、估摸着是这样);极投影适合研究寒潮的北极冷涡。我找到了一张图展示了墨卡托形变(南极离赤道最远,面积变化最大 ):
当然,默认制图时,中心经线一般为本初子午线。这样中国就偏安东部了,cartopy提供了修改中心经线的命令:cartopy.crs.PlateCarree(central_longitude=0.0)首先调出默认等距投影platecarree,在内部参数central_longitude处修改到你需要的中心经度。四、实际操作千读不如一练,Python气象绘图显然也是如此,下面通过简要的一幅小图,我们来直观感受cartopy的运作。import matplotlib.pyplot as plt###引入库包import ca