python如何绘制登陆时的卫星云图(TBB)

 更新时间:2023年08月16日 10:40:47   作者:小朱小朱绝不服输  
这篇文章主要介绍了python如何绘制登陆时的卫星云图(TBB),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

根据前面的文章python处理卫星云图获取亮温值可以从hdf文件中获取某时刻某经纬度的亮温值。

然后就是把这些读取的亮温值可视化,绘制成TBB的卫星云图。

先展示一下结果:

1.读取hdf文件

详见上篇文章,这里不再赘述,再贴一下代码。

主要是从全圆盘标对称文件经纬度对照表获取经纬度和从hdf文件中获取亮温值。

# 从全圆盘标对称文件经纬度对照表获取经纬度
def getLatLonFromdat():
    lonlatfile = 'F:/Satellite_Imagery/Code/NOM_ITG_2288_2288(0E0N)_LE.dat'
    with open(lonlatfile, 'rb') as f:
        #lon_fy = np.fromfile(f, count=2288 * 2288, dtype='float32') + 79  # 先存经度,根据卫星的不同加上对应的经度值
        #lat_fy = np.fromfile(f, count=2288 * 2288, dtype='float32')  # 再存纬度
        data = np.fromfile(f, dtype='float32')
        data = data.reshape([2288, 2288, 2], order='F')
    #lon = lon_fy.reshape([2288, 2288], order='F')
    #lat = lat_fy.reshape([2288, 2288], order='F')
    lon = data[:, :, 0] + 104.5
    lat = data[:, :, 1]
    return lon, lat
# 从hdf文件中获取亮温值
def getTBBFromhdf():
    hdfFile = h5py.File('F:/IR/Satellite_Imagery/IR_data/利奇马/FY2G_FDI_ALL_NOM_20190811_1200.hdf', 'r')
    db1 = hdfFile['/CALChannelIR1']
    hw1 = hdfFile['/NOMChannelIR1']
    # db2 = hdfFile['/CALChannelIR2']
    # hw2 = hdfFile['/NOMChannelIR2']
    # db3 = hdfFile['/CALChannelIR3']
    # hw3 = hdfFile['/NOMChannelIR3']
    # db4 = hdfFile['/CALChannelIR4']
    # hw4 = hdfFile['/NOMChannelIR4']
    infoh = hdfFile['/NomFileInfo']
    # 查看卫星的经纬度
    lat_hdf = infoh[0][3]
    lon_hdf = infoh[0][4]
    # print(lat_hdf)
    # print(lon_hdf)
    hw = hw1[()]
    db = db1[()]  # 获取定标表的值
    tb = np.zeros(shape=(2288, 2288))  # 2288*2288的图像每个具体的亮温值
    for i in range(2288):
        for j in range(2288):
            if hw[i][j] == 65535 or hw[i][j] == 65534:
                tb[i][j] = 0
            else:
                a = hw[i][j]
                tb[i][j] = db[0][a]
    tb = tb.T
    return tb

2. 画图

fig = plt.figure(figsize=(8, 6))
m = Basemap(projection='cyl', llcrnrlat=10, llcrnrlon=110, urcrnrlat=40,  urcrnrlon=140)  # 使用Basemap绘制地图,这里可以读取对应的地图shp文件。
m.drawcoastlines(color='black')
m.drawstates(color='black')
m.drawcountries(color='black')
x, y = m(lon, lat)  # 将lats / lons转换为地图投影坐标
# 绘制轮廓图
# 这里data就是计算的亮温值,x,y就是经纬度投影的坐标
cf = m.contourf(x, y, data, levels=np.linspace(180, 301, 400), cmap='jet')
cbar = m.colorbar(cf, location='right', size='5%', pad='2%')
font = {'family': 'serif',
        'color': 'darkred',
        'weight': 'normal',
        'size': 16,
        }
cbar.set_label('Brightness Temperature ( K )', fontdict=font)
m.drawmeridians(np.arange(110, 140, 5), labels=[0, 0, 0, 1])
m.drawparallels(np.arange(10, 40, 5), labels=[1, 0, 0, 0])
# 将最佳路径集上的经纬度映射到地图上,再把该点绘制在地图上
best_lon, best_lat = m(best_lon, best_lat)
m.plot(best_lon, best_lat, 'o', color='fuchsia', ms=5)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
plt.title('Brightness Temperature(2019081112) ', fontdict=font)
plt.savefig('test.png')
plt.show()

注:读取地图文件时,可以使用readshapefile函数。

以2019081112时刻为例,对应地图10-40,110-140的区域,读取对应的hdf文件,绘制该点的卫星云图的亮温值。

总结

这是找了好久,调整过的结果。

以上仅为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python深度学习pytorch神经网络Dropout应用详解解

    Python深度学习pytorch神经网络Dropout应用详解解

    这篇文章主要为大家介绍了Python深度学习中关于pytorch神经网络Dropout的应用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-10-10
  • 爬虫训练前端基础Bootstrap5排版表格图像

    爬虫训练前端基础Bootstrap5排版表格图像

    这篇文章主要为大家介绍了爬虫训练前端基础Bootstrap5排版表格图像,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Python中可变和不可变对象的深入讲解

    Python中可变和不可变对象的深入讲解

    python与C/C++不一样,它的变量使用有自己的特点,学python的时候一定要记住一切皆为对象,一切皆为对象的引用,这篇文章主要给大家介绍了关于Python中可变和不可变对象的相关资料,需要的朋友可以参考下
    2021-07-07
  • Python中的print() 函数和格式化操作方法

    Python中的print() 函数和格式化操作方法

    ​print()​函数和字符串格式化是每个Python开发者必须掌握的基础技能,从简单的%​操作符到强大的f-string,Python一直在进化,让我们的编码工作变得更加愉快和高效,本文介绍Python中的print()函数和格式化操作方法,感兴趣的朋友一起看看吧
    2025-10-10
  • pymysql的简单封装代码实例

    pymysql的简单封装代码实例

    这篇文章主要介绍了pymysql的简单封装代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Python使用剪切板的方法

    Python使用剪切板的方法

    这篇文章主要为大家详细介绍了Python使用剪切板的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Flask框架学习笔记之模板操作实例详解

    Flask框架学习笔记之模板操作实例详解

    这篇文章主要介绍了Flask框架学习笔记之模板操作,结合实例形式详细分析了flask框架模板引擎Jinja2的模板调用、模板继承相关原理与操作技巧,需要的朋友可以参考下
    2019-08-08
  • Python使用sqlite3第三方库读写SQLite数据库的方法步骤

    Python使用sqlite3第三方库读写SQLite数据库的方法步骤

    数据库非常重要,程序的数据增删改查需要数据库支持,python处理数据库非常简单,而且不同类型的数据库处理逻辑方式大同小异,下面这篇文章主要给大家介绍了关于Python使用sqlite3第三方库读写SQLite数据库的方法步骤,需要的朋友可以参考下
    2022-07-07
  • python爬虫之bs4数据解析

    python爬虫之bs4数据解析

    这篇文章主要介绍了python爬虫之bs4数据解析,文中有非常详细的代码示例,对正在学习python爬虫的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • Python快速实现定时器的五种常见方法详解

    Python快速实现定时器的五种常见方法详解

    这篇文章主要为大家详细介绍了使用Python语言快速实现定时器的五种常见方法,分为内置方法 与 第三方库的方法,感兴趣的小伙伴可以了解下
    2025-07-07

最新评论