Cartopy虽然对地理图形的绘制提供了极大的方便,但是个人感觉还是有很多反人类的地方,尤其是在同一个代码中绘制多副图形的时候,比如说地理坐标轴的设置,每幅子图都要设置一遍,最终搞得代码十分的冗长。为了解决这类问题,自定义的封装函数就起了很大作用,只需在最开始定义好,接下来每次使用直接调用即可,再也不用每次画图都重新设置什么刻度,海岸线之类的了。
其实用到的就是python的def功能,通过def自定义函数,return返回所需值,可以极大的简洁重复代码。
比如说绘制下面这幅图,我分别使用未封装的代码和使用封装后的代码绘制,方便对比。
example
未使用封装函数的完整代码:
#公共设置(地图投影,地图边界,坐标刻度地理格式)
proj = ccrs.PlateCarree(central_longitude=80)
img_extent = [0,160, 0, 80]
lon_formatter = cticker.LongitudeFormatter()
lat_formatter = cticker.LatitudeFormatter()
fig2 = plt.figure(figsize=(15,15))
#子图1
f2_ax1 = fig2.add_axes([0.1, 0.1, 0.4, 0.3],projection = proj)
#边界,海岸线,湖泊,坐标刻度