数据的读写

这个主题是各种语言和数据的读写操作示例

囚徒5.0_1 python语言nc文件的读写

读取操作


import netCDF4 as nc

#
# 打开.nc文件
dataset = nc.Dataset('nc文件路径')

# 获取所有变量名称
variable_names = dataset.variables.keys()

# 读取特定变量的数据
variable_data = dataset.variables['elevation'][:]

#关闭文件
dataset.close() 

写入操作


lon = np.arange(125.0, 127 +1.0 / 61, 1/60)  # 示例经度数据
lat = np.arange(28, 30 + 1/60, 1/60)  # 示例纬度数据

#***1 创建NetCDF文件
ncid = nc.Dataset('vgg7.nc', 'w', format='NETCDF4')

#***2 创建经度和纬度维度 (维度名称和大小)
dimid_lon = ncid.createDimension('lon', len(lon))
dimid_lat = ncid.createDimension('lat', len(lat))

# 创建经度和纬度变量 createVariable(变量名,值类型,维度)注意这里的维度就是上面创建维度的名称,不然会#报错
varid_lon = ncid.createVariable('lon', 'f8', ('lon',))
varid_lat = ncid.createVariable('lat', 'f8', ('lat',))

# 创建数值变量
varid_data = ncid.createVariable('SIO', 'f8', ('lat', 'lon'))

# 写入经度、纬度和数值数据
varid_lon[:] = lon
varid_lat[:] = lat
varid_data[:] =SIO

# 关闭NetCDF文件
ncid.close()

对上述代码的解释,f8代表64 位浮点数型。

为什么SIO不用创建维度 createDimension。
对于 createDimension 方法,它用于创建维度,而不是变量。在你的代码中,我们可以看到 createDimension 方法被用于创建名为 lonlat 的维度,而不是用于创建名为 SIO 的维度。
在创建变量时,我们可以指定该变量所涉及的维度。在你的代码中,通过 createVariable 方法创建了一个名为 SIO 的变量,并在参数中指定了该变量的维度为 ('lat', 'lon'),即纬度和经度。这表示该变量的值将根据纬度和经度的组合来确定。
因此,在你的代码中,并不需要使用 createDimension 来单独创建 SIO 的维度,因为它的维度已经通过 createVariable 方法中的参数指定了。

他的总体流程就是,建立nc文件,创建维度,创建维度变量,数据写入,关闭文件。

posted @ 2023-11-24 20:25  玩意  阅读(49)  评论(0)    收藏  举报