爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 82990|回复: 42

[源代码] Cartopy 下站点资料画图及白化

  [复制链接]

新浪微博达人勋

发表于 2019-12-30 18:37:48 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 chiqu296 于 2019-12-30 21:27 编辑

   之前发过Basemap下画站点数据的帖子,现在转到Cartopy下,所以重新写了一个,白化使用平流层的萝卜的Python完美白化,只是在投影转换那里稍作了改动。
  1. import os
  2. import maskout
  3. import numpy as np
  4. import xarray as xr
  5. from scipy.interpolate import Rbf
  6. import matplotlib as mpl
  7. import matplotlib.pyplot as plt
  8. import cartopy.crs as ccrs
  9. import cartopy.feature as cfeature
  10. from cartopy.io.shapereader import Reader

  11. SHP = './shapefile/china_shp'

  12. # 数据处理
  13. ds = xr.open_dataset('./r160.nc')
  14. da = ds.PRE.sel(month=slice(6, 8)).mean(dim='month').mean(dim='year')

  15. # 插值
  16. olon = np.linspace(72, 137, 260)
  17. olat = np.linspace(15, 55, 120)
  18. olon, olat = np.meshgrid(olon, olat)
  19. func = Rbf(ds.station_lon, ds.station_lat, da, function='linear')
  20. pre_grid = func(olon, olat)

  21. # 字体
  22. mpl.rcParams['font.sans-serif'] = ['Times New Roman']
  23. mpl.rc('font', size=15, weight='normal')
  24. font = {'family': 'NSimSun','weight': 'normal','size': 15}

  25. # 颜色
  26. levels = [0, 0.1, 10, 25, 50, 100, 250, 500]
  27. cmaps = mpl.colors.ListedColormap(['#FFFFFF', '#A9F18D', '#3DB93D', '#60B8FF', '#0001E2', '#F900FA', '#810045'])
  28. norm = mpl.colors.BoundaryNorm(levels, 7)

  29. # 画图
  30. proj = ccrs.LambertConformal(central_latitude=90, central_longitude=105)
  31. fig, ax = plt.subplots(figsize=(15, 15), subplot_kw=dict(projection=proj))
  32. ax.set_extent([80, 130, 13, 55], ccrs.PlateCarree())
  33. ax.gridlines(linestyle='--')

  34. ax.add_feature(cfeature.OCEAN.with_scale('50m'))
  35. ax.add_feature(cfeature.LAND.with_scale('50m'))
  36. ax.add_feature(cfeature.RIVERS.with_scale('50m'))
  37. ax.add_feature(cfeature.LAKES.with_scale('50m'))

  38. ax.add_geometries(Reader(os.path.join(SHP, 'cnhimap.shp')).geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='k',linewidth=1)

  39. cf = ax.contourf(olon,olat,pre_grid,levels=levels,cmap=cmaps,norm=norm,zorder=0,transform=ccrs.PlateCarree())
  40. ax.scatter(ds.station_lon,ds.station_lat,c='k',s=10,marker='o',transform=ccrs.PlateCarree())

  41. cbar = fig.colorbar(cf,ax=ax,orientation="vertical",aspect=25,pad=0.01,shrink=0.7)
  42. cbar.set_label('毫米', fontdict=font)
  43. cbar.set_ticklabels(levels)
  44. ax.set_title('多年平均夏季降水', fontdict=font)

复制代码


test.png

china_shp.zip

9.52 MB, 下载次数: 646, 下载积分: 金钱 -5

r160.nc

1.01 MB, 下载次数: 257, 下载积分: 金钱 -5

maskout.py

1.11 KB, 下载次数: 431, 下载积分: 金钱 -5

plot.py

2.77 KB, 下载次数: 303, 下载积分: 金钱 -5

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2020-1-2 08:39:22 | 显示全部楼层
好东西,谢啦
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2019-12-30 20:43:09 | 显示全部楼层
很好的白化例子,点赞。思路清晰明了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-12-30 22:33:10 | 显示全部楼层
白化是哪部分,没看到
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-2-2 14:34:31 | 显示全部楼层
老师,用你的方法,是用的cartopy0.17版本,是不是哪个包不兼容呢?

  File "D:\py\nc\maskout.py", line 32, in shp2clip
    contour.set_clip_path(clip)

UnboundLocalError: local variable 'clip' referenced before assignment
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-2-21 16:06:43 | 显示全部楼层
学习学习!!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2020-2-22 10:44:31 | 显示全部楼层
werewolf 发表于 2019-12-30 22:33
白化是哪部分,没看到

我也没有看明白,白化在哪里?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-2-25 15:51:42 | 显示全部楼层
近期要学习用站点资料画全国月平均气温,月降水量图,希望能用上。点我查看给积分不够的朋友的建议,只下了
maskout.py,还没跑通。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-2-27 10:22:50 | 显示全部楼层
用其他下载的地图,运行报错  baowarnings.warn('Tight layout not applied. The left and right margins '   出来的图不对,请问是怎么回事?
myplot.png
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-2-27 10:38:11 | 显示全部楼层
('Tight layout not applied. The left and right margins)报错已解决,但为什么颜色填充没有在中国地图内?感觉是个扇形
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表