GDAL 데이터 세트 (공간 정보가있는 래스터)를 NetCDF 파일로 변환하는 기능으로 odo 라이브러리를 확장하려고합니다.odo.resource (소스)에서 odo.resource (대상)로 데이터 가져 오기
gdal 데이터 세트를 읽는 것이 좋습니다. 그러나 netcdf의 생성 단계에서 gdal 데이터 세트 (odo.odo (source, target)를 호출 할 때 아직 알지 못하는 메타 데이터)의 메타 데이터가 필요합니다. 내가 어떻게 이걸 얻을 수 있니?
지금까지 내 코드의 짧은 버전 :
import odo
from odo import resource, append
import gdal
import netCDF4 as nc4
import numpy as np
@resource.register('.+\.tif')
def resource_gdal(uri, **kwargs):
ds = gdal.Open(uri)
# metadata I need to transfer to netcdf
b = ds.GetGeoTransform() #bbox, interval
return ds
@resource.register('.+\.nc')
def resource_netcdf(uri, dshape=None, **kwargs):
ds = nc4.Dataset(uri,'w')
# create lat lon dimensions and variables
ds.createDimension(lat, dshape[0].val)
ds.createDimension(lon, dshape[1].val)
lat = ds.createVariable('lat','f4', ('lat',))
lon = ds.createVariable('lon','f4', ('lon',))
# create a range from the **gdal metadata**
lat_array = np.arange(dshape[0].val)*b[1]+b[0]
lon_array = np.arange(dshape[1].val)*b[5]+b[3]
# assign the range to the netcdf variable
lat[:] = lat_array
lon[:] = lon_array
# create the variable which will hold the gdal data
data = ds.createVariable('data', 'f4', ('lat', 'lon',))
return data
@append.register(nc4.Variable, gdal.Dataset)
def append_gdal_to_nc4(tgt, src, **kwargs):
arr = src.ReadAsArray()
tgt[:] = arr
return tgt
감사합니다!