前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >风云卫星FullMask_Grid文件RAW格式转nc

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

作者头像
用户11172986
发布2024-06-20 17:28:11
730
发布2024-06-20 17:28:11
举报
文章被收录于专栏:气python风雨气python风雨
代码语言:javascript
复制
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[lat > 100] = -9999.
    lon[lon < 0] = lon[lon < 0] + 360.
    lon[lon > 361] = -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可以帮助将行列号转化为经纬度。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 气python风雨 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档