python 创建netcdf_在Python中创建NetCDF文件时如何指定维度值?

我正在创建一个NetCDF4文件,该文件当前有四个变量:

1)地表温度(3D阵列-时间、纬度、经度)

2)经度(1D-每个像素中心的坐标)

3)纬度(1D-每个像素中心的坐标)

图像采集时间1900-01:00

我当前正在使用以下代码来执行此操作:#==========================WRITE THE NETCDF FILE==========================#

newfile = nc.dataset(export_filename, 'w', format = 'NETCDF4_CLASSIC')

#==========================SET FILE DIMENSIONS============================#

newfile.createDimension('lat', ny)

newfile.createDimension('lon', nx)

newfile.createDimension('time', len(filenames))

#==========================SET GLOBAL ATTRIBUTES==========================#

newfile.title = ('Title')

newfile.history = "File created on " + datetime.strftime(datetime.today(), "%c")

newfile.Conventions = 'CF-1.6'

#==========================CREATE DATA VARIABLES==========================#

#--------------------------LST VARIABLE-----------------------------------#

LSTs = newfile.createVariable('LST', np.int16, ('time', 'lat', 'lon'), fill_value = -8000)

LSTs.units = 'Degrees C'

LSTs.add_offset = 273.15

LSTs.scale_factor = 0.01

LSTs.standard_name = 'LST'

LSTs.long_name = 'Land Surface Temperature'

LSTs.grid_mapping = 'latitude_longitude'

LSTs.coordinates = 'lon lat'

LSTs[:] = LSTd[:]

#--------------------------LON AND LAT AND TIME--------------------------#

LONGITUDEs = newfile.createVariable('LONGITUDE', np.float64, ('lon',))

LONGITUDEs.units = 'Decimal Degrees East'

LONGITUDEs.standard_name = 'Longitude'

LONGITUDEs.long_name = 'Longitude'

LONGITUDEs[:] = LONd[:]

LATITUDEs = newfile.createVariable('LATITUDE', np.float64, ('lat',))

LATITUDEs.units = 'Decimal Degrees North'

LATITUDEs.standard_name = 'Latitude'

LATITUDEs.long_name = 'Latitude'

LATITUDEs[:] = LATd[:]

TIMEs = newfile.createVariable('TIME', np.int32, ('time',))

TIMEs.units = 'hours since 1900-01-01 00:00:00'

TIMEs.standard_name = 'Time'

TIMEs.long_name = 'Time of Image Acquisition'

TIMEs.axis = 'T'

TIMEs.calendar = 'gregorian'

TIMEs[:] = time[:]

#--------------------------SAVE THE FILE---------------------------------#

newfile.close();

该代码生成一个netCDF文件,其中地表温度变量有24个波段(一天中每小时一个波段)。这段代码就像我希望的那样工作,尽管这是我希望解决的一个小问题。当我为LST变量运行gdalinfo时,我得到(这是一个简化版本):

^{pr2}$

我希望将这个值1设置为与我在上面代码中包含的'time'变量相同(这是从1900-01-01 00:00:00开始的1081451小时)。因此,我想了解如何对文件中的每个波段进行更改?

更新到问题:当我对文件执行gdalinfo时(同样是一个子集):NETCDF_DIM_EXTRA={time}

NETCDF_DIM_time_DEF={24,3}

但是有一个选项缺少'NETCDF_DIM_time_VALUES',我需要将它设置为时间变量,它应该可以工作。我该怎么做?

目前,它只是被设置为波段编号,但我希望它包含有关它的收购时间的信息。

更新1:

我试着详细说明LSTs.NETCDF_DIM_Time = time

在netCDF文件形成过程中,它将所有时间值分配给gdal中的netCDF_DIM_时间,因此每个频带都有24个时间值,而不是只有一个。

更新2:

随着进一步的挖掘,我认为需要将NETCDF_DIM_time_VALUES元数据设置为“time”变量。我更新了我的问题来询问如何做到这一点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值