目录
读取nc文件相应变量:
# H8data = H8data['latitude','longitude','CLTYPE'] 这样提取是不对的
def read_file(file, key='Ic'):
with netCDF4.Dataset(file, 'r') as f:
lat = f['lat'][:]
lon = f['lon'][:]
lev = f['lev'][:]
var = f[key][:]
return lat, lon, lev, var
若不用 with as,则需要用close
# H8data = Dataset(z_file)
# z_file.close()
读取hdf文件:
方法1
# 读取hdf4 hdf5
import netCDF4
with netCDF4.Dataset(file, 'r') as f:
vars = f.variables
for var in vars:
print(var) #查看变量
data = f['lat'][:]
方法2
with h5py.File(file, 'r') as f:
f.keys()
a = f['data'][:]
方法3
def get_data_y(file):
"""
获取数据
1.读取数据
2.清洗数据
:param file:
:return:
"""
# 读取经纬度
f = HDF(file, SDC.READ)
vs_data = f.vstart() # Initialize the VS API over the file and return a VS instance
data_lat = vs_data.attach('Latitude')
data_lon = vs_data.attach('Longitude')
lat = np.array(data_lat[:])
lon = np.array(data_lon[:])
data_lat.detach() # "close" the data
data_lon.detach() # "close" the data
vs_data.end() # terminate the data interface
f.close()
# 2.读取产品信息
file_data = SD(file1, SDC.READ)
# 定位数据集
sds_obj_re = file_data.select('RO_liq_effective_radius')
sds_obj_lwc = file_data.select('RO_liq_water_content')
# 获取数据
Re = sds_obj_re.get()
LWC = sds_obj_lwc.get()
# 打印数据信息
sds_info_re = sds_obj_re.info()
sds_info_lwc = sds_obj_lwc.info()
print(sds_info_re, sds_info_lwc)
pprint.pprint(sds_obj_re.attributes())
pprint.pprint(sds_obj_lwc.attributes())
解析二进制文件 :
def read_t1729(file):
with open(file, 'rb') as f:
# ======解析标头文件(0-360字符)======
tmp = f.read()
header = struct.unpack('360s', tmp[:360])[0].decode('GBK')
print(header)