气ython风雨 发表于 2024-4-3 21:41:16

风云卫星FullMask_Grid文件RAW格式转nc


import numpy as np
import netCDF4 as nc

def fy4disk(rawfile, dim):
    """
    FY-4A数据行列号和经纬度查找表2km、4km,读取raw文件,存成nc.
    :param rawfile: raw文件全路径
    :param dim: 行列数(2km:5496,4km:2748)
    :return:
    """
    sz = np.fromfile(rawfile, dtype=float, count=dim*dim*2)
    latlon = np.reshape(sz, (dim, dim, 2))

    lat = latlon[:, :, 0]
    lon = latlon[:, :, 1]

    lat = -9999.
    lon = lon + 360.
    lon = -9999.

    return lon, lat

if __name__ == '__main__':
    rawfile = r'D:\work\fire_point\FullMask_Grid_2000\FullMask_Grid_4000.raw'
#   dim = 5496# 2km
   dim = 2748 # 4km

    lon, lat = fy4disk(rawfile, dim)

    # 写入NetCDF文件
    ncfile = r"D:\work\fire_point\FullMask_Grid_2000\FullMask_Grid_4000.nc"
    with nc.Dataset(ncfile, 'w', format='NETCDF4') as ds:
      # 创建维度
      ds.createDimension('x', dim)
      ds.createDimension('y', dim)

      # 创建变量
      longitude = ds.createVariable('Lon', 'f4', ('x', 'y'))
      latitude = ds.createVariable('Lat', 'f4', ('x', 'y'))

      # 赋值
      longitude[:, :] = lon
      latitude[:, :] = lat

      # 添加属性
      longitude.units = 'degrees_east'
      latitude.units = 'degrees_north'参考气象家园帖子
https://bbs.06climate.com/forum.php?mod=viewthread&tid=90074

csdn帖子
https://blog.csdn.net/Monkey_dada/article/details/109052557

文中用到的文件可以从下面网址下载

https://www.heywhale.com/mw/project/61bb07fb7e520c001797a32d/dataset

这时候有朋友要问,这个文件是做什么用的?我的理解较浅,简单说说。

大家知道卫星遥感数据通常是没有所谓经纬度,当处理它们时只能获取到xy的行列号,以上的FullMask_Grid可以帮助将行列号转化为经纬度。

文章来源于微信公众号:气ython风雨

页: [1]
查看完整版本: 风云卫星FullMask_Grid文件RAW格式转nc