정보
- 업무명 : NetCDF 파일을 이용한 시각화 도구 소개
- 작성자 : 이상호
- 작성일 : 2020-02-03
- 설 명 :
- 수정이력 :
내용
[개요]
- 안녕하세요? 기상 연구 및 웹 개발을 담당하고 있는 해솔입니다.
- NetCDF 파일 (*.nc)은 대표적인 대용량 기상 자료의 포맷으로서 많은 연구에서 사용합니다.
- 따라서 다양한 가시화 및 분석 도구을 소개해 드리고자 합니다.
[가시화 도구]
- Ferret
- Ferret는 시애틀에 있는 Thermal Modeling and Analysis Project (TMAP)에 의해 수치 해상 모델의 출력을 분석하고 관측 자료와 비교하기 위해 개발되었습니다.
- 최근에 과학적 가시화를 위해 우수한 패키지들이 개발되었습니다. 특히 지구물리 계산 및 데이터베이스 연결 그리고 빅데이터 계산을 위한 메모리 관리가 있습니다.
yes? use "uwnd.mean.nc"
yes? !Use only the first time step for this plot
yes? set region/l=1
yes? contour uwnd
- Grid Analysis and Display System (GrADS)
- GrADS는 그리드 데이터를 분석하고 가시화할 수 있습니다.
- 즉 NetCDF 또는 HDF 파일을 SDF (Self Describing File) 인터페이스를 통해 간단하게 읽기 및 표출 기능을 제공합니다.
ga-> sdfopen uwnd.mean.nc
Scanning self-describing file: uwnd.mean.nc
Found displayable variable uwnd with 0 levels in SDF file.
Data file uwnd.mean.nc is open as file 1
LON set to 0 360
LAT set to -89 89
LEV set to 0 0
Time values set: 1980:1:1:0 1980:1:1:0
ga-> d uwnd
- Interactive Data Language (IDL)
- IDL은 ITT Visual Information Solutions의 상용 소프트웨어 패키지로서 NetCDF 파일을 읽을 수 있습니다.
- IDL v4.0 이상에서는 다음과 명령어를 통해 확인할 수 있습니다.
IDL. Version 4.0.1b (sunos sparc).
Copyright 1989-1996, Research Systems, Inc.
All rights reserved. Unauthorized reproduction prohibited.
Installation number: 1627-1.
Licensed for use by: Climate Diagnostics Center
% Compiled module: $MAIN$.
IDL> id = ncdf_open("/Datasets/coads1a.enh/sst.mean.nc")
IDL> sstid = ncdf_varid(id,"sst")
IDL> ncdf_varget, id, sstid, sst
IDL> contour, sst(*, *, 1)
- NetCDF File Browser (ncBrowse)
- ncBrowse는 그래픽 디스플레이를 생성하고 netCDF 파일의 속성을 볼 수 있는 Java 어플리케이션입니다.
- Panoply
- Panoply는 NASA/GISS의 GUI NetCDF 뷰어입니다. 지도와 지역 평균을 표시할 수 있으며 원도우 (Window)와 리눅스 (Linux) 및 맥 (Mac)에서 사용할 수 있습니다.
- NCAR Command Language (NCL)
- NCL은 NCAR 명령 언어로서 NetCDF 파일도 읽을 수 있는 무료 소프트웨어입니다.
- 아래와 같이 명령어를 통해 파일 읽기 및 가시화할 수 있습니다.
f = addfile("slp.2002.nc", "r")
; convert to float [contributed.ncl]
slp =short2flt(f->slp)
; open a "x11", "ps" or "ncgm" file
wks =gsn_open_wks("ps", "slp_ce")
; create a default ce plot
plot=gsn_csm_contour_map_ce(wks, slp(0, :, :), False)
- NetCDF Operator (NCO)
- NCO는 NetCDF 파일에서 사용하는 무료 소프트웨어입니다. 각 연산자는 ls 또는 mkdir과 같은 Unix (또는 Linux) 셸에서 실행되는 독립 실행형 명령 소프트웨어입니다. 또한 주로 그리드 과학 데이터의 조작 및 분석을 지원하도록 설계되었습니다.
- 즉 NetCDF 또는 HDF4 파일을 이용하여 여러 자료 처리 (예 : 평균화 또는 메타 데이터 조작 등)을 수행할 뿐만 아니라 NetCDF 형태로 출력도 가능합니다.
ncrcat 85.nc 86.nc 87.nc 88.nc 89.nc 8589.nc
- CoastWatch Data Analysis Tool (CDAT)
- CDAT는 그리드 (Grid) 기후 데이터에 액세스하고 관리 할 수 있도록 설계된 소프트웨어입니다.
- 즉 객체 지향 언어를 사용하여 별도의 소프트웨어 하위 시스템과 패키지를 연결한 통합 환경이 있습니다. 이는 Python과 소프트웨어를 완벽하게 상호 연결하는 역할을 수행합니다.
- Python은 독립형 스크립트 (응용 프로그램) 및 그래픽 사용자 인터페이스 (GUI)를 비롯한 다양한 사용자 인터페이스를 지닐뿐만 아니라 범용 기능을 가진 스크립트 언어를 제공합니다. 그 결과 모듈 수치 계산을 위한 배열 연산 및 시각화에 대해 제공합니다.
- MATrix LABoratory (MATLAB)
- MATLAB은 광범위한 가시화 및 수치 계산이 가능한 고급 언어입니다. NetCDF 지원은 MATLAB 7.7 이상 버전에 내장되어 있습니다.
- 이전 버전의 경우 NetCDF 파일에 대한 MEXNC 인터페이스 (http://mexcdf.sourceforge.net)에서 사용할 수 있습니다.
- 그리고 NetCDF v4.0 지원은 R2010b에서 시작합니다.
- Higher Level NetCDF Code
% MATLAB script to inquire about variable names and read in all variables
% from a netcdf file. Uses native netcdf support in MATLAB
%
% Usage:
% oid='myfile.nc';
% nc_readall
%
% Warning: this reads in variables and assigns them to the same variable name in MATLAB as in the netcdf file
% does not handle udunits, so time coordinate typically needs to be modified for use in MATLAB.
%
% oid file name or URL to a netcdf file
f = ncinfo(oid);
nvars = length(f.Variables);
for k = 1:nvars
varname=f.Variables(k).Name;
disp(['Reading: ' varname]);
eval([varname ' = ncread(''' oid ''',''' varname ''');']);
end
- Native NetCDF code
oid='https://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/noaa.ersst/sst.mnmean.nc'
sst=double(ncread(oid,'sst'));
nlat=double(ncread(oid,'lat'));
nlon=double(ncread(oid,'lon'));
mv=ncreadatt(oid,'/sst','missing_value');
sst(find(sst==mv))=NaN;
[Nlt,Nlg]=meshgrid(nlat,nlon);
%Plot the SST data without using the MATLAB Mapping Toolbox
figure
pcolor(Nlg,Nlt,sst(:,:,1));shading interp;
load coast;hold on;plot(long,lat);plot(long+360,lat);hold off
colorbar
%Plot the SST data using the MATLAB Mapping Toolbox
figure
axesm('eqdcylin','maplatlimit',[-80 80],'maplonlimit',[0 360]); % Create a cylindrical equidistant map
pcolorm(Nlt,Nlg,sst(:,:,1)) % pseudocolor plot "stretched" to the grid
load coast % add continental outlines
plotm(lat,long)
colorbar
oid = 'https://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/NARR/Monthlies/monolevel/prate.mon.mean.nc'
prate=ncread(oid,'prate');
nlat=double(ncread(oid,'lat'));
nlon=double(ncread(oid,'lon'));
scale = ncreadatt(oid,'/prate','scale_factor');
offset = ncreadatt(oid,'/prate','add_offset');
mv=double(ncreadatt(oid,'/prate','missing_value'));
mv = double(mv*scale+offset);
prate(find(prate>=mv))=NaN;
%Plot the NARR precipitation data using the MATLAB Mapping Toolbox
figure
axesm('robinson','Frame','on','Grid','on','maplatlimit',[0 88],'maplonlimit',[150 0],'MeridianLabel','on','ParallelLabel','on');
pcolorm(nlat,nlon,log(prate(:,:,1))) % pseudocolor plot "stretched" to the grid
load coast % add continental outlines
plotm(lat,long)
colorbar
figure
axesm('ortho','Grid','on','Frame','on','Origin',[40,250,14],'maplatlimit',[0 88],'maplonlimit',[150 0]); % Create a cylindrical equidistant map
pcolorm(nlat,nlon,log(prate(:,:,1))) % pseudocolor plot "stretched" to the grid
load coast % add continental outlines
plotm(lat,long)
colorbar
참고 문헌
[논문]
- 없음
[보고서]
- 없음
[URL]
- 없음
문의사항
[기상학/프로그래밍 언어]
- sangho.lee.1990@gmail.com
[해양학/천문학/빅데이터]
- saimang0804@gmail.com
'기상학·천문학 > 연구개발' 카테고리의 다른 글
[연구개발] 차세대 정지궤도 기상위성 천리안위성 2A호 (GK2A, GEO-KOMPSAT-2A) 소개 (1) | 2020.03.20 |
---|---|
[연구개발] 프로그래밍 : 과학자들을 위한 필수 기술 (0) | 2020.03.06 |
[연구개발] NetCDF 파일을 이용한 엑셀 (Excel) 변환 도구 소개 (0) | 2020.02.04 |
[연구개발] 기상위성 자료에 필요한 입력 자료 (위도 및 경도, 복사량 변환 테이블) 소개 (0) | 2020.01.09 |
[연구개발] 국내 기상/기후자료 데이터 시스템 이해 (0) | 2019.12.13 |
최근댓글