- 积分
- 3777
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2017-1-5
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 蔡小亦 于 2023-9-25 17:15 编辑
已解决,经纬度数据和亮温数据对应有问题。
参考http://bbs.06climate.com/forum.php?mod=viewthread&tid=56315获取TBB数据,用cartopy对TBB数据可视化。
FY2E、FY2G数据均能作等值线图,见附件。但作填色图就报错:ValueError: GEOSGeom_createLinearRing_r returned a NULL pointer
搜了很久还是没法解决,代码如下,请大神指教。
- import h5py
- import numpy as np
- import matplotlib.pyplot as plt
- import cartopy.crs as ccrs
- import pandas as pd
- f = h5py.File('./data/TBB/FY2G_TBB_IR1_NOM_20230507_0400.hdf', 'r')
- for key in f.keys():
- print(key)
- a = f.get('FY2G TBB Hourly Product')
- data = np.array(a)
- data = np.ma.masked_outside(data,160,340)
- info = f.get('NomFileInfo')[0]
- print(info)
- lonCenter = info[4]
- loc = np.fromfile('./data/TBB/NOM_ITG_2288_2288(0E0N)_LE.dat',dtype=np.float32,count=-1)
- latlon = loc.reshape(2,2288,2288)
- lon = np.array(latlon[0]+lonCenter)
- lat = np.array(latlon[1])
- lon = np.ma.masked_where(lon>300,lon)
- lat = np.ma.masked_values(lat,300)
- lon_df = pd.DataFrame(lon)
- lat_df = pd.DataFrame(lat)
- data_df = pd.DataFrame(data)
- # 绘图
- fig=plt.figure(figsize=(12,8))
- proj = ccrs.PlateCarree()
- ax = fig.add_subplot(1,1,1,projection = proj)
- ax.set_extent([105,120,18,28],crs=ccrs.PlateCarree())
- ax.coastlines()
- #levels = np.arange(160, 340 ,10),cmap = 'YlGnBu_r'
- ax.contour(lon_df,lat_df,data_df)
- # 填色图报错???
- # ax.contourf(lon_df,lat_df,data_df,levels=np.linspace(np.min(data),np.max(data),400) )
- plt.savefig('tbb.png',format='png',dpi=200)
- print('done')
复制代码
|
|