python 创建nc文件,包含经纬度

应用背景:在处理遥感数据时,经常需要读取和自己创建新的nc文件。鉴于网上写的nc文件处理博文不多,我来做个补充把。

nc文件简介:nc文件是一种网格化存储数据格式,相当于多维变量决定同一个值。比如某天(时间),某地区(经度、纬度)的降雨量(对应的值)。那么这个场景就有三个变量决定同一个函数值。

处理nc文件的工具包:netCDF4

安装netCDF4:pip install netCDF4

再导入python中:import netCDF4 as nc

还有另外一个强大的工具包,但是我用的不多:xarray.dataset

下面进入正题—-创建一个nc文件

#w表示写入
data_NC = nc.Dataset('drop_data.nc', 'w', format='NETCDF4')


# 创建维度,createDimension(维度名称,维度长度)
data_NC.createDimension('latitude', Lat_data.shape[0])
data_NC.createDimension('longitude',Lon_data.shape[0])

# 创建维度变量,createVariable(变量名,值类型,维度)注意这里的维度就是上面创建维度的名称,不然会#报错
data_NC.createVariable("latitude", 'f', ('latitude'))
data_NC.createVariable("longitude", 'f', ('longitude'))

# 创建变量,("对应的函数值", '数据类型', ( "变量一", "变量二"))我创建的是二维数组
data_NC.createVariable("data", 'f', ( "latitude", "longitude"))

# 给维度填充数据,这里的数据是需要自己提前准备好,一般是linspace
# data_NC.variables['维度名'][:] = 维度数据

data_NC.variables['latitude'][:] = Lat_data
data_NC.variables['longitude'][:] = Lon_data

# 给变量填充数据,和维度填充数据方式是一样的,就是存进去
data_NC.variables['data'][:] = BIG_data

# 关闭文件,当报错后一定要单独运行一下这一行,把nc文件关闭,不然他一直处于打开状态,会报错,然后找到#当前nc文件删除,重新运行
data_NC.close()

常见报错:cannot find dimension Lat_data in this group or parent groups

原因:data_NC.createVariable("latitude", 'f', ('latitude'))写成data_NC.createVariable("latitude", 'f', ('Lat_data'))名称不对

报错:Permission denied: b'data_NC.nc'

原因:之前错误的nc文件没有关闭,也没有删除,被占用啦,运行data_NC.close()就好啦,然后找到文件所在位置,删掉他!

所以,不要乱改这里面的名字,老老实实来就可以的。

来源:算法小工具

物联沃分享整理
物联沃-IOTWORD物联网 » python 创建nc文件,包含经纬度

发表评论