I은 네 개의 변수를 갖는 NetCDF4 파일 생성하고 :Python에서 NetCDF 파일을 만들 때 치수 값을 지정하는 방법은 무엇입니까?
1) 토양 표면 온도 (3D 어레이 - 시간, 위도, 경도)
2) 경도 (1D - 각 화소의 중심의 좌표)
을3) 위도 (1D는 -) 각각의 화소 센터의 Y 좌표
4) 시간 (1900-01-01 0시 0분 0초)
보낸 시간에서의 화상 취득의 시간 I는 현재 사용하고있는 따르다 코드를 보내고 것은 이렇게하려면 :
#==========================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();
이 코드는 24 개 밴드를 갖는 랜드 표면 온도 변수 (하루의 시간마다 하나)와 netCDF의 파일을 생성한다. 이 코드는 제가 해결하고자하는 하나의 작은 문제 임에도 불구하고 작동합니다.
Band 1.....
...
NETCDF_DIM_TIME = 1
...
내가 1이 값이 1,081,451 같은 인 '시간'변수 (과 동일하게 설정해야 할 : 나는 LST 변수에 대한 gdalinfo를 실행하면, 내가 얻을 (이 감소 된 버전입니다) 1900-01-01 00:00:00 이후로) 위의 코드에 포함되어 있습니다. 따라서 파일의 각 밴드에 대해 이것이 어떻게 변경 될 수 있는지 알고 싶습니까?에 의문을
업데이트 : 파일에 gdalinfo 않으면 (다시, 부분 집합) :
NETCDF_DIM_EXTRA={time}
NETCDF_DIM_time_DEF={24,3}
하지만 거기 NETCDF_DIM_time_VALUES를 '없는 옵션이고 나는 시간으로 설정해야합니다 변수와 그것을 작동합니다. 어떻게해야합니까?
현재 밴드 번호가 설정되어 있지만 수집 시간과 관련된 정보가 포함되기를 바랍니다.
업데이트 1 : 나는 netCDF의 파일을 형성하는 동안
LSTs.NETCDF_DIM_Time = time
을 지정하는 데 노력하고 각 밴드는 24 시간을 가질 수 있도록이 GDAL에 NETCDF_DIM_TIME 시간에서 모든 값을 할당 한
값이 아니라 하나.
업데이트 2 : 내가 생각하는 몇 가지 더 파고와
는 '시간'변수로 설정 될 필요가 NETCDF_DIM_time_VALUES 메타 데이터입니다. 어떻게해야하는지 묻는 질문을 업데이트했습니다.