맨위로가기

NetCDF

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

NetCDF는 기후학, 기상학, 해양학 등 과학 분야에서 널리 사용되는 데이터 형식 및 소프트웨어 라이브러리이다. 1988년 UCAR에서 시작되어, C, C++, 포트란, 자바 등 다양한 프로그래밍 언어를 지원하며, 플랫폼 독립적이고 자기 기술적인 특징을 갖는다. NetCDF는 여러 바이너리 형식을 지원하며, HDF5 데이터 형식을 사용할 수 있는 NetCDF-4/HDF5 형식을 포함한다. 또한, NetCDF 연산자(NCO), ncBrowse, Panoply 등 다양한 소프트웨어를 통해 NetCDF 파일을 조작, 시각화, 분석할 수 있다. 기후 및 예측 규칙(CF)을 준수하며 병렬 컴퓨팅을 위한 Parallel-NetCDF도 존재한다. NetCDF-Java 라이브러리는 다양한 파일 형식을 지원하며, 공통 데이터 모델을 구현한다.

2. 역사

1988년 UCAR(대학대기과학연구협회)에서 시작된 NetCDF 프로젝트는 현재까지도 활발하게 지원받고 있다. 1990년 출시된 최초의 NetCDF 바이너리 형식("netCDF 클래식 형식")은 전 세계적으로 널리 사용되며 모든 NetCDF 릴리스에서 완벽하게 지원된다. 2008년 출시된 버전 4.0은 HDF5 데이터 파일 형식을 사용할 수 있게 하였다. 2010년 버전 4.1은 C포트란 클라이언트가 OPeNDAP를 통해 원격 데이터의 지정된 하위 집합에 접근할 수 있도록 지원을 추가했다. 이후 지속적인 버전 업데이트를 통해 성능 개선, 기능 추가 및 버그 수정이 이루어지고 있다. (예: 윈도우 빌드 지원, 아마존 S3 객체 읽기 지원, Zarr 형식 지원, Zstandard 압축 지원 등)[3][4]

이 형식은 원래 NASA에서 개발한 공통 데이터 형식(CDF)의 개념적 모델을 기반으로 했지만, 이후 분기되어 호환되지 않는다.

3. 형식 설명

NetCDF 라이브러리는 여러 가지 바이너리 형식을 지원하며, 모든 형식은 자기 기술적(self-describing)이다. 즉, 파일 자체에 데이터 배열 레이아웃, 파일 메타데이터(이름/값 속성 형태) 등 파일에 대한 정보가 헤더에 포함되어 있다.[3][4] 플랫폼 독립적이므로, 바이트 순서와 같은 문제는 소프트웨어 라이브러리에서 처리된다. 데이터는 효율적인 서브세팅을 지원하는 방식으로 저장된다.

NetCDF에서 지원하는 바이너리 형식은 다음과 같다.

형식설명
클래식 형식최초 NetCDF 릴리스에서 사용되었으며, 여전히 파일 생성의 기본 형식이다.
64비트 오프셋 형식3.6.0 버전에서 도입되었으며, 더 큰 변수 및 파일 크기를 지원한다.
netCDF-4/HDF5 형식4.0 버전에서 도입되었으며, 일부 제한 사항이 있는 HDF5 데이터 형식이다.
HDF4 SD 형식읽기 전용 접근을 지원한다.
CDF5 형식parallel-netcdf 프로젝트와 협력하여 지원한다.



2008년에 출시된 버전 4.0부터 NetCDF API는 HDF5 데이터 형식 사용을 허용한다.[5] 이를 통해 NetCDF 사용자는 훨씬 더 큰 파일 및 여러 개의 무제한 차원과 같은 HDF5의 이점을 활용할 수 있다.

이전 버전과의 호환성은 완벽하게 지원되므로, 이전 NetCDF 파일에 접근하거나 이전 버전의 C 및 Fortran API를 사용하는 데 문제가 없다.

4. 소프트웨어

netCDF 라이브러리는 다음과 같은 다양한 바이너리 형식을 지원한다.


  • 클래식 형식: 최초 netCDF 릴리스에 사용되었으며, 현재도 파일 생성 기본 형식이다.
  • 64비트 오프셋 형식: 버전 3.6.0에서 도입되었으며, 더 큰 변수 및 파일 크기를 지원한다.
  • netCDF-4/HDF5 형식: 버전 4.0에서 도입되었으며, HDF5 데이터 형식을 사용한다. 일부 제한 사항이 있다.
  • HDF4 SD 형식: 읽기 전용 접근을 지원한다.
  • CDF5 형식: parallel-netcdf 프로젝트와 협력하여 지원한다.


모든 형식은 자기 기술적이다. 즉, 파일 레이아웃과 데이터 배열을 설명하는 헤더가 있으며, 파일 메타데이터는 이름/값 속성 형태로 제공된다. 이 형식은 플랫폼 독립적이며, 바이트 순서 문제는 소프트웨어 라이브러리에서 처리한다. 데이터는 효율적인 서브세팅을 지원하는 방식으로 저장된다.[5]

버전 4.0부터 netCDF API는 HDF5 데이터 형식 사용을 허용하여, 더 큰 파일 및 여러 개의 무제한 차원 등 netCDF 형식에서 불가능했던 기능을 지원한다. 이전 netCDF 파일 접근과 C, 포트란 API 사용에 대한 완벽한 이전 버전과의 호환성도 제공된다.

4. 1. 접근 라이브러리

UCAR에서 제공하는 소프트웨어 라이브러리는 netCDF 파일에 대한 읽기/쓰기 접근을 제공하며, 필요한 배열과 메타데이터를 인코딩 및 디코딩한다. 핵심 라이브러리는 C로 작성되었으며, C, C++, 포트란(포트란 77, Fortran 90) 애플리케이션을 위한 응용 프로그래밍 인터페이스(API)를 제공한다. Unidata에서 개발하고 유지 관리하는 독립적인 Java 구현은 핵심 데이터 모델을 확장하고 추가 기능을 추가한다. C 라이브러리를 기반으로 하는 netCDF 인터페이스는 R, Perl Data Language, Python, Ruby, Haskell,[8] Mathematica, MATLAB, Interactive Data Language(IDL), Julia, Octave 등 다양한 언어에서 사용할 수 있다. API 호출 사양은 언어 간에 매우 유사하며, 버전 2와 버전 3 API 호출은 약간의 차이가 있지만 하위 호환성을 위해 지원된다.[6][7]

4. 2. 응용 프로그램

NetCDF 파일은 다양한 응용 소프트웨어에서 활용된다. 여기에는 명령줄 유틸리티부터 그래픽 정보 시각화 패키지까지 다양한 종류가 포함된다.

소프트웨어설명
NetCDF Operators (NCO)netCDF 파일 조작 및 분석을 위한 다양한 명령을 제공한다. 기본 레코드 연결, 배열 슬라이싱, 평균 등의 기능을 수행할 수 있다.[9]
ncBrowse다양한 netCDF 파일 규칙에 대한 Java 그래픽, 애니메이션 및 3D 시각화를 포함하는 일반적인 netCDF 파일 뷰어이다.[10]
ncviewnetCDF 형식 파일의 시각적 브라우저이다. netCDF 파일의 필드를 시각화하기 위한 간단하고 빠른 GUI 기반 도구이며, 데이터 배열의 다양한 차원을 탐색하여 원시 데이터 값을 살펴볼 수 있다. 색상 맵 변경, 데이터 반전 등의 작업도 가능하다.[11]
PanoplyNASA GISS에서 개발한 netCDF 파일 뷰어로, 지리 격자 데이터 표현에 중점을 둔다. 자바로 작성되어 플랫폼에 독립적이며, 다양한 맵 투영법과 서로 다른 스케일 색상 표를 사용할 수 있다.[12]
NCAR Command Language (NCL)netCDF 파일의 데이터를 분석하고 시각화하는 데 사용된다.[9]
파이썬PyNIO[13] 모듈을 사용하여 netCDF 파일에 접근할 수 있다. 또한, `netCDF4-python`[14], `xarray` 모듈을 통해 판다스와 유사한 `DataFrame`으로 읽을 수 있다.[15]
Ferret대규모의 복잡한 격자 데이터 세트를 분석하는 해양학자 및 기상학자의 요구를 충족하도록 설계된 대화형 컴퓨터 시각화 및 분석 환경이다. Mathematica와 유사한 분석 방식을 제공한다.
GrADS (격자 분석 및 표시 시스템)지구 과학 데이터에 쉽게 접근, 조작 및 시각화하는 데 사용되는 대화형 데스크톱 도구이다.[16]
nCDF_BrowserIDL 프로그래밍 언어로 작성된 시각적 nCDF 브라우저이다.[17]
ArcGIS버전 9.2 이후부터 기후 및 예측 메타데이터 규칙을 따르고 동일한 간격의 좌표를 가진 직사각형 격자를 포함하는 netCDF 파일을 지원한다.[19]
OriginPro버전 2021b부터 [20] netCDF CF 규칙을 지원하며, 대규모 데이터 세트 처리를 위한 평균화 기능을 제공한다.
GDAL (지리 공간 데이터 추상화 라이브러리)netCDF 데이터에 대한 읽기 및 쓰기 접근을 지원한다.[21]
netCDF ExplorernetCDF 파일을 위한 다중 플랫폼 그래픽 브라우저이다. OPeNDAP을 통해 로컬 또는 원격으로 파일을 탐색할 수 있다.
R`ncdf4`(HDF5 지원 포함)[22] 또는 `RNetCDF`(HDF5 지원 없음)[23]와 같은 패키지를 통해 netCDF를 지원한다.
HDFqlC, C++, Java, Python, C#, Fortran 및 R에서 고급 언어(SQL과 유사)를 통해 netCDF-4/HDF5 파일을 관리할 수 있게 한다.[24]
ECMWF의 MetviewGRIB 및 BUFR과 함께 NetCDF를 처리할 수 있다.
OpenChrom이클립스 공용 라이선스 조건에 따라 변환기를 제공한다.[25]
Panoply미국 항공 우주국(NASA)의 GISS에서 제공하는 netCDF를 표시하기 위한 소프트웨어


5. 일반적인 사용

기후학, 기상학, 해양학 분야(예: 일기 예보, 기후 변화) 및 GIS 분야에서 일반적으로 사용된다.

NetCDF는 많은 GIS 응용 프로그램과 일반적인 과학 데이터 교환을 위한 입/출력 형식이다. 배열 지향 데이터 접근을 위한 인터페이스와 C, Fortran, C++, Java 및 기타 언어를 위한 라이브러리 모음을 제공하며, 과학 데이터를 나타내는 기계 독립적 형식을 지원한다.[26] NetCDF 인터페이스의 목적은 배열 지향형 데이터를 자기 기술적이고 이식성 있는 형식으로 생성, 접근, 공유하는 데 있다. 여기서 "자기 기술적"이란 파일이 자체적으로 포함된 데이터에 대한 정보를 내포하고 있다는 의미이며, "이식성"이란 파일 내의 데이터가 정수, 문자, 부동 소수점의 저장 방식이 다른 컴퓨터 간에 주고받을 수 있다는 것을 의미한다.

NetCDF는 MIT 라이선스의 오픈 소스 소프트웨어로 공개되어 있으며, C++, FORTRAN 77, Fortran 90, Java, Perl, Ruby, Python, Haskell, Mathematica, MATLAB, IDL, Octave 등 다양한 프로그래밍 언어에서 이용할 수 있다.

NetCDF는 기상, 해양, 기후 변화 등 분야에서 국제적으로 널리 사용된다. NetCDF는 시뮬레이션 결과뿐만 아니라, 사용된 격자의 위도, 경도, 높이, 날짜 및 시간, 지도 투영법 등 정보도 함께 저장할 수 있기 때문이다. ESRI ArcGIS, QGIS 등 주요 지리 정보 시스템이 NetCDF를 지원하므로, NetCDF에 저장된 시뮬레이션 결과를 지도에 시각화하여 지리 정보와 중첩하여 활용할 수 있다.

NetCDF의 자기 기술성을 높이기 위해 규약이 정해져 있으며, 가장 널리 사용되는 규약은 COARDS 규약 및 그 후계인 CF 규약이다. 주요 지리 정보 시스템 등에서 NetCDF를 다루려면 CF 규약을 준수해야 한다.

6. 규약

기후 및 예측(CF) 규칙은 지구 과학 데이터를 위한 메타데이터 규칙으로, NetCDF API로 생성된 파일의 처리 및 공유를 촉진하기 위한 것이다. 이 규칙은 데이터와 동일한 파일에 포함된 메타데이터(따라서 파일을 "자기 설명"이라 한다)를 정의하여 각 변수의 데이터가 나타내는 것과 데이터의 공간적 및 시간적 속성(그리드 셀 경계 및 셀 평균화 방법과 같은 그리드 정보 포함)에 대한 확실한 설명을 제공한다. 이를 통해 다양한 출처의 데이터를 사용하는 사용자는 어떤 데이터가 비교 가능한지 결정할 수 있으며, 강력한 추출, 재격자화, 및 표시 기능을 갖춘 애플리케이션을 구축할 수 있다.

NetCDF의 자기 기술성을 높이기 위해 규약이 정해져 있다. 규약이란 NetCDF의 변수, 속성, 차원의 사용법을 정한 규칙이다. 가장 널리 사용되는 규약은 COARDS 규약 및 그 후계인 CF 규약이다. 주요 지리 정보 시스템 등에서 다룰 수 있는 NetCDF는 CF 규약을 준수해야 한다.

7. Parallel-NetCDF

병렬 컴퓨팅을 위한 netCDF 확장판인 Parallel-NetCDF (PnetCDF)는 아르곤 국립 연구소와 노스웨스턴 대학교에서 개발되었다.[27] 이는 MPI 통신의 I/O 확장인 MPI-IO를 기반으로 구축되었다. Parallel-NetCDF 라이브러리는 고수준 netCDF 데이터 구조를 사용하여 여러 프로세서 간에 파일 읽기 및 쓰기 응용 프로그램을 효율적으로 분산하기 위한 최적화를 활용할 수 있다. Parallel-NetCDF 패키지는 클래식 및 64비트 오프셋 형식만 읽고 쓸 수 있으며, netCDF-4.0에서 사용할 수 있는 HDF5 기반 형식은 읽거나 쓸 수 없다.

Unidata netCDF 라이브러리의 병렬 I/O는 HDF5 데이터 파일의 경우 릴리스 4.0부터 지원되었다. 버전 4.1.1부터 Unidata NetCDF C 라이브러리는 NetCDF API를 사용하여 Parallel-NetCDF 라이브러리를 통해 클래식 및 64비트 오프셋 파일에 대한 병렬 I/O를 지원한다.

8. 다른 형식과의 상호 운용성 (C/Fortran/C++ 라이브러리)

netCDF C 라이브러리와 이를 기반으로 하는 라이브러리(Fortran 77 및 Fortran 90, C++ 등)는 버전 4.1.1부터 HDF5 형식의 데이터를 일부 제한 사항과 함께 읽을 수 있다.[5] 또한, HDF4 형식의 데이터는 HDF4 SD(Scientific Data) API를 사용하여 생성된 경우 netCDF C 라이브러리에서 읽을 수 있다.

9. NetCDF-Java 공통 데이터 모델

NetCDF-Java 라이브러리는 다양한 파일 형식과 원격 액세스 프로토콜을 읽는다. NetCDF-Java 라이브러리가 읽는 파일 형식과 원격 엑세스 프로토콜은 다음과 같다.


  • BUFR 형식 문서[28] (개발 진행 중)
  • CINRAD 레벨 II[29] (중국 레이더 형식)
  • DMSP[30] (국방 기상 위성 프로그램)
  • DORADE[31] 레이더 파일 형식
  • GINI[32] (GOES Ingest 및 NOAAPORT 인터페이스) 이미지 형식
  • GEMPAK[33] 격자 데이터
  • GRIB 버전 1 및 버전 2 (테이블 작업 진행 중)
  • GTOPO[34] 30초 고도 데이터 세트 (USGS)
  • 계층적 데이터 형식 (HDF4, HDF-EOS2, HDF5, HDF-EOS5)
  • NetCDF[35] (클래식 및 대형 형식)
  • NetCDF-4[36] (HDF5 기반)
  • NEXRAD 레이더[37] 레벨 2 및 레벨 3.


NetCDF-Java 라이브러리는 이러한 형식을 통해 과학 데이터 세트를 위한 공통 데이터 모델을 구현한다.

Java 공통 데이터 모델은 세 개의 계층으로 구성된다.

# ''데이터 액세스'' 계층은 데이터 읽기를 처리한다.

# ''좌표계'' 계층은 데이터 배열의 좌표를 식별한다. 지리 참조 좌표계는 특별히 주석 처리된다.

# ''과학 데이터 유형'' 계층은 그리드, 이미지 및 점 데이터와 같은 특정 유형의 데이터를 식별하고 각 종류의 데이터에 대한 특수 메서드를 추가한다.

데이터 액세스 계층의 데이터 모델은 NetCDF-3 데이터 모델을 일반화한 것이며 NetCDF-4 데이터 모델과 실질적으로 동일하다. 좌표계 계층은 기후 및 예측 메타데이터 규칙의 개념을 구현하고 확장한다. 과학 데이터 유형 계층을 사용하면 개방형 지리 공간 컨소시엄 사양과 유사하게 좌표 공간에서 데이터를 조작할 수 있다.

참조

[1] 웹사이트 NetCDF Home Page https://www.unidata.[...] Unidata/UCAR 2017-12-05
[2] 웹사이트 OGC standard netCDF Classic and 64-bit Offset http://www.opengeosp[...] Opengeospatial.org 2017-12-05
[3] 웹사이트 Background - The NetCDF Users' Guide https://www.unidata.[...] Unidata.ucar.edu 2013-11-27
[4] 웹사이트 CDF - Frequently asked questions https://cdf.gsfc.nas[...] 2018-11-02
[5] 웹사이트 Version 4.0 of the netCDF API https://web.archive.[...] Unidata.ucar.edu 2013-11-27
[6] 웹사이트 ncdf http://cirrus.ucsd.e[...] Cirrus.ucsd.edu 2013-11-27
[7] 웹사이트 Rnetcdf https://cran.r-proje[...] Cran.r-project.org 2013-11-27
[8] 웹사이트 hnetcdf: Haskell NetCDF library http://hackage.haske[...] hackage.haskell.org 2014-07-10
[9] 웹사이트 Software for Manipulating or Displaying NetCDF Data https://www.unidata.[...] Unidata.ucar.edu 2020-10-23
[10] 웹사이트 ncBrowse https://web.archive.[...] Epic.noaa.gov 2013-11-27
[11] 웹사이트 ncview http://meteora.ucsd.[...] Meteora.ucsd.edu 2013-11-27
[12] 웹사이트 Panoply http://www.giss.nasa[...] Goddard Institute for Space Studies 2013-11-27
[13] 웹사이트 PyNIO http://www.pyngl.uca[...] Pyngl.ucar.edu 2013-11-27
[14] 웹사이트 netCDF4 https://unidata.gith[...] 2017-12-04
[15] 웹사이트 xarray: N-D labeled arrays and datasets in Python http://xarray.pydata[...] 2016-09-07
[16] 웹사이트 GrADS Home Page http://cola.gmu.edu/[...] 2018-04-10
[17] 웹사이트 Coyote's Guide to IDL Programming https://web.archive.[...] Dfanning.com 2013-11-27
[18] 웹사이트 Coyote Library https://web.archive.[...] Dfanning.com 2013-11-27
[19] 웹사이트 ArcGIS version 9.2 http://www.esri.com/[...] Esri.com 2013-11-27
[20] 웹사이트 NetCDF Importing and Processing https://www.originla[...] originlab.com 2021-05-11
[21] 웹사이트 NetCDF network Common Data Form http://www.gdal.org/[...] Gdal.org 2013-11-27
[22] 논문 ncdf4: Interface to Unidata netCDF (version 4 or earlier) format data files https://cran.r-proje[...] 2014
[23] 논문 RNetCDF: Interface to NetCDF Datasets https://cran.r-proje[...] 2015
[24] 문서 http://www.hdfql.com
[25] 논문 OpenChrom: a cross-platform open source software for the mass spectrometric analysis of chromatographic data 2010
[26] 웹사이트 What Is netCDF? http://www.unidata.u[...] Unidata Program Center 2012-11-26
[27] 웹사이트 parallel-netcdf http://www.mcs.anl.g[...] Mcs.anl.gov 2013-11-27
[28] 웹사이트 BUFR FORMAT DOCUMENTATION https://web.archive.[...] 2008-02-02
[29] 웹사이트 http://www.unidata.u[...]
[30] 웹사이트 http://dmsp.ngdc.noa[...]
[31] 웹사이트 http://www.atd.ucar.[...]
[32] 웹사이트 GINI Satellite Format http://weather.unisy[...] Weather.unisys.com 2013-11-27
[33] 웹사이트 Unidata | GEMPAK http://www.unidata.u[...] Unidata.ucar.edu 2013-11-27
[34] 웹사이트 http://edc.usgs.gov/[...]
[35] 웹사이트 NetCDF http://www.unidata.u[...] Unidata.ucar.edu 2013-11-27
[36] 웹사이트 NetCDF-4 https://web.archive.[...] Unidata.ucar.edu 2013-11-27
[37] 웹사이트 NCDC: Radar Resources http://www.ncdc.noaa[...] Ncdc.noaa.gov 2013-11-27
[38] 웹인용 NetCDF Home Page https://www.unidata.[...] Unidata/UCAR 2017-12-05
[39] 웹인용 OGC standard netCDF Classic and 64-bit Offset http://www.opengeosp[...] Opengeospatial.org 2017-12-05



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com