GDAL을 활용해서 netCDF를 GeoTiff 형태로 변환하기 위해서는 다음과 같은 과정이 필요합니다.


1. GDAL 빌드 체크


일단 GDAL을 소스코드를 통해 빌드하신 분들은 netCDF 라이브러리를 설치하고 GDAL을 빌드했는지 부터 체크하셔요.

gdalinfo 명령어로 netCDF 파일을 인자로 줬을 때 아래와 같이 에러가 나오면 GDAL 빌드시에 netCDF 라이브러리가 설치되어 있지 않았던 것이죠.


aaa@hhh:~# gdalinfo r50.nc 

ERROR 4: `r50.nc' not recognised as a supported file format.

gdalinfo failed - unable to open 'r50.nc'.



저는 dpkg -l | grep netcdf로 확인해보니깐 다음과 같이 설치되어 있네요.


ii  libnetcdf-dev                                      1:4.1.3-7ubuntu2                                    amd64        Development kit for NetCDF

ii  libnetcdfc++4                                      1:4.1.3-7ubuntu2                                    amd64        Interface for scientific data access to large binary data

ii  libnetcdfc7                                         1:4.1.3-7ubuntu2                                    amd64        Interface for scientific data access to large binary data

ii  libnetcdff5                                          1:4.1.3-7ubuntu2                                    amd64        Interface for scientific data access to large binary data

ii  netcdf-bin                                          1:4.1.3-7ubuntu2                                    amd64        Programs for reading and writing NetCDF files

ii  python-netcdf                                     2.9.4-1                                                 amd64        netCDF interface for Python


혹시 GDAL 설치 전에 netCDF 라이브러리르 설치하지 않고, GDAL을 빌드하신 분들은 아래 명령어로 라이브러리를 설치해주세요.

apt-get install libnetcdf-dev



2. GDAL 다시 빌드 

gdal을 압축해제한 폴더로 이동해서 

cd /path/to/GDAL_source/

./configure
./make
./make install

하셔서 GDAL을 다시 빌드해주세요 :)

*참고: ./configure 했을 때 NetCDF support : yes로 나와야죠.


3. netCDF 적용 확인

1번에서와 마찬가지로 gdalinfo를 통해 netCDF 파일을 확인해보면 정상적으로 내용이 나와야 합니다.


4. netCDF to GeoTiff 

이제는 netCDF를 GeoTiff로 변경해보겠습니다.
3번에서 확인하셨을 수도 있는데요.
여러 Subdataset이 포함되어 있는 것을 확인할 수 있는데요. 아래는 예시입니다.

Subdatasets:
  SUBDATASET_1_NAME=NETCDF:"r50.nc":time_bnds
  SUBDATASET_1_DESC=[1800x2] time_bnds (64-bit floating-point)
  SUBDATASET_2_NAME=NETCDF:"r50.nc":lat
  SUBDATASET_2_DESC=[167x204] latitude (32-bit floating-point)
  SUBDATASET_3_NAME=NETCDF:"r50.nc":lon
  SUBDATASET_3_DESC=[167x204] longitude (32-bit floating-point)
  SUBDATASET_4_NAME=NETCDF:"r50.nc":rs
  SUBDATASET_4_DESC=[1800x167x204] surface_air (32-bit floating-point)

이 subdataset의 이름을 사용해서 GeoTiff로 변경합니다.

gdal_translate -of GTiff -b 1 NETCDF:"rs50.nc":rs rs50b1.tif

-of 옵션은 파일 포맷을 설정하는 것이구요
-b 옵션은 밴드를 설정하는 것이구요.
뒤 2개는 input_image, output_image 입니다.

gdalinfo로 확인한 사항을 기반으로 gdal_translate를 작성하면 됩니다.












+ Recent posts