利索能及
我要发布
收藏
专利号: 2024109977241
申请人: 南通大学
专利类型:发明专利
专利状态:已下证
更新日期:2025-11-13
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种Suomi NPP夜光遥感数据H5至GeoTiff格式的批量转换方法,其特征在于,包括以下步骤:步骤一:批量获取H5文件名称

首先,定义H5文件名称列表h5_files;然后使用os.listdir()函数获取输入文件夹in_dir中的所有文件,记为in_files;随后,遍历in_files,判断每个文件名称的扩展名是否以h5结尾,如果是,则将该输入文件夹路径与文件名相结合,追加到列表h5_files;

步骤二:设置转换参数

设置GeoTiff数据输出的文件夹路径,记为out_dir;设置数据缩放因子,记为scalar;

设置无效值,记为nodata;

步骤三:读取H5文件结构

首先,遍历列表h5_files中的各个文件,记为h5_file.使用h5py.File()函数读取h5_file文件中的数据结构,分别获取1级组和2级组,记为groups_l1和groups_l2;groups_l1中包括选项:'All_Data'和'Data_Products';groups_l2中需包括选项:'VIIRS‑DNB‑GEO_All'和'VIIRS‑DNB‑SDR_All';基于groups_l2,分别获取3级组的几何信息项和传感器数据记录项,分别记为g3_geo和g3_sdr;

步骤四:读取指定变量数据

首先,设置要提取数据集的变量名称,记为dataset_name,并定义数据集变量,记为dataset;然后判断dataset_name的变量类型,如果为sdr类型,则在3级组g3_sdr中提取数据集,并对数据集统一乘以缩放因子scalar;如果dataset_name的变量类型为geo,则在3级组g3_geo中直接提取数据集;

步骤五:地理坐标校正;

步骤六:输出GeoTiff数据。

2.根据权利要求1所述的一种Suomi NPP夜光遥感数据H5至GeoTiff格式的批量转换方法,其特征在于,在步骤五中,具体包括以下步骤:(1)定义检查坐标有效性函数chk_cds(),该函数用于判断输入的坐标(lon,lat)是否在有效区间{(lon,lat)|lon∈[‑180,180],lat∈[‑90,90]}内,如果是,则返回True,否则返回False;

(2)读取初始地理坐标数据,通过3级组g3_geo分别获取经度坐标矩阵Lon和纬度坐标矩阵Lat,分别计算Lon和Lat的个数,记为N_Lat和N_Lon.令变量rows=N_Lat,变量cols=N_Lon;

(3)筛选坐标有效值,定义坐标有效值约束条件:valid_indices=(Lon>=‑180)&(Lat>=‑90)&(Lon<=180)&(Lat<=90);通过valid_indices,提取Lon和Lat中的有效坐标值,分别记为Lonv和Latv;

(4)计算几何校正后的坐标角点,在有效坐标列表Lonv和Latv中,通过使用最小值min()和最大值max()函数计算几何校正后的影像左上角和右下角坐标,分别记为:(LonMin,LatMax)和(LonMax,LatMin);

(5)计算分辨率,在上一步的基础上,计算经度方向和纬度方向上的像素分辨率,分别记为Lon_Res=(LonMax‑LonMin)/(N_Lon*1.0)和Lat_Res=(LatMax‑LatMin)/(N_Lat*

1.0);

(6)几何校正,首先定义校正后的数据存储变量,记为data_array,该变量为rows*cols的二维矩阵,初始像素值设为nodata;

然后,根据行和列分别遍历数据集变量dataset,逐一提取单个数据;令提取的第i行第j列像素值,记为_data=dataset[i,j],同时提取坐标变量Lon和Lat中对应的坐标值,分别记为_lon=Lon[i,j]和_lat=Lat[i,j];

随后,通过chk_cds()函数判断坐标(_lon,_lat)是否有效;如果有效,分别计算坐标(_lon,_lat)在校正后的数据集data_array中的行列号;则有:col=int((_lon‑LonMin)/Lon_Res)和row=int((LatMax‑_lat)/Lat_Res);进一步地,为确保col和row有效,需要进行坐标边界约束,则有:col=min(col,cols‑1)和row=min(row,rows‑1);

最后,将data_array中的像素[row,col]值赋值为_data。

3.根据权利要求1所述的一种Suomi NPP夜光遥感数据H5至GeoTiff格式的批量转换方法,其特征在于,在步骤六中,具体包括以下步骤:首先,设置输出数据文件名,记为tif_name.tif_name的命名方式为:tif_name=out_dir+os.sep+os.path.basename(h5_file)[0:‑3]+'_'+dataset_name+'.tif'.;

然后,利用gdal.GetDriverByName('GTiff').Create()函数根据参数tif_name,cols,rows创建输出栅格数据集,记为dataset_out;

随后,使用SetGeoTransform()函数根据参数(LonMin,Lon_Res,0,LatMax,0,‑Lat_Res)为dataset_out定义地理空间参考信息;

紧接着,使用SetProjection()函数为dataset_out定义投影坐标系统;

最后,使用WriteArray函数将几何校正后的数据集data_array写入dataset_out的栅格波段。