气象卫星数据处理—常用函数汇总
数据读取函数
常用数据格式有 nc、hdf、tif等,其中hdf格式中有hdf4,hdf5两种格式;注意:hdf4中有两种主要的数据集:dataset和vdata,这两种数据集的读取方式也不一样。
读取nc文件
# 该函数读取NC格式文件,filename为文件全路径名,sds为NC文件中的数据集名称
def ReadNC(filename, sds):
if os.path.exists(filename):
nc_obj = Dataset(filename)
data = nc_obj.variables[sds][:]
nc_obj.close()
else:
print("%s is not exists, Read HDF Data fileld!" % (filename))
return data
读取hdf4-dataset文件
def read_hdf4_dataset(filename, sds):
hdf_file = SD(filename)
dataset = hdf_file.select(sds)
data = dataset.get()`在这里插入代码片`
return data
读取hdf4-vdata文件
def read_hdf4_vdata(hdf_file_path, vdata_name):
hdf_obj = HDF(hdf_file_path, mode=HC.WRITE | HC.CREATE)
vs_interface = hdf_obj.vstart()
vs_ref = VS.find(vs_interface, vdata_name)
vd_obj = VS.attach(vs_interface, vs_ref,1)
data=vd_obj[:]
vd_obj.detach()
vs_interface.end()
hdf_obj.close()
return np.array(data)[:,0]
读取hdf5文件
# 该函数读取HDF5格式文件,filename为文件全路径名,sds为HDF文件中的数据集
def ReadHDF5SDS(filename, sds):
if os.path.exists(filename):
with h5py.File(filename, 'r') as f:
data = f[sds][:].astype('float16')
f.close()
else:
print("%s is not exists, Read HDF Data fileld!" % (filename))
return data
读取tif文件
# 读取tif
def read_tif(filename):
dataset = gdal.Open(filename)
cols = dataset.RasterXSize # 图像长度
rows = (dataset.RasterYSize) # 图像宽度
# bands = dataset.RasterCount # 波段数
# im_proj = (dataset.GetProjection()) # 读取投影
# im_Geotrans = (dataset.GetGeoTransform()) # 读取仿射变换
data = dataset.ReadAsArray(0, 0, cols, rows) # 转为numpy格式
del dataset
return data
技术支持
ranyinze@163.com