๊ธฐ๋ณธ์ ์ธ python ๊ฐ๋
์ ์๊ณ ์๋ค๋ ์ ์ ํ,
๊ฐ๋จํ๊ฒ ์ฌ์ฉํ๋ ๊ฒ๋ค ์์ฃผ๋ก ๊ธฐ์ตํ๊ธฐ ์ํด ์ต์ํ์ ์ฝ๋๋ก ์์ฑํ๋ ๊ธ์์ ์ฐธ๊ณ ๋ถํ๋๋ฆฝ๋๋ค.
์ฐจ์ ๋ฐ์ดํฐ์ ๊ฐ๋
NetCDF (Network Common Data Form) ๋ฐ์ดํฐ๊ฐ ๋ญ์์ฉ?
ํด์๊ณผ ๋๊ธฐ ๊ณผํ์์ ๋๋ฆฌ ์ฐ์ธ๋ค.
- ๋ค์ฐจ์ ๋ฐ์ดํฐ
- ์๊ฐ๊ณผ ๊ณต๊ฐ์ ๋ฐ๋ฅธ ๋๊ธฐ, ํด์, ๋ฐ์ดํฐ๋ค
๋ฐฐ์ด ๋๋ ํ๋ ฌ๋ก ๊ตฌ์ฑ๋ ๊ณผํ์ ๋ณด ํ์
ํด์ ์์น ๋ชจ๋ธ ๊ฒฐ๊ณผ๋ ๊ณต๊ฐ์ ๋ณด(3์ฐจ์)์ ์๊ฐ์ ๋ฐ๋ฅธ ๊ฐ์ด ์ ๋ ฅ, ๊ฐ ๋ํ ์ฌ๋ฌ ๊ฐ์ง ๋ณ์๋ฅผ ํฌํจ. (x,y์ ๋ฐ๋ฅธ h๊ฐ. ๋ฉด๋ฐ์ดํฐ)
๋ํ ๊ณต๊ฐ๊ณผ ์๊ฐ์ ๋ฐ๋ฅธ ํ๊ณ , ํํฅ, ํ์ฃผ๊ธฐ ๋ฑ ๋ถ๊ฐ ์ ๋ณด๋ฅผ ํฌํจ.
๊ด์ธก์ ๋ณด ์ผ ๋๋ ๊ด์ธก์๋ช , ํ์ค์, ์์ธต, ์ฅ๋น๋ช ๋ฑ๊ณผ ๋ชจ๋ธ์ผ ๋๋ ์๊ฐ, ๊ณต๊ฐ ํ์ค, ๊ฐ ๋จ์, fill_value ๋ฑ๋ฑ ํฌํจ๋์ด์ผ ํ ์ ๋ณด๋ค์ด ๋ง์.
์๋ก ์๊ฐ๊ณผ ๊ณต๊ฐ (x, y, t) + ๊ทธ ๊ฐ์ ๋ฐ๋ฅธ z ๊น์ง๋ฉด 4์ฐจ์ ๋ฐ์ดํฐ๊ฐ ๋จ.
์ด๋ฐ ์๊ฐ์ ๋ฐ๋ฅธ ๋ค์์ ์ (๊ณต๊ฐ, ๋ช )์ ๊ฐ์ ๊ฐ์ง๊ธฐ์ NetCDF ํ์์ ํ์ฉํ๊ณ ์์.
(๋์ถฉ ๊ณต๊ฐ, ์๊ฐ, ๋ชจ๋ ์ ๋ณด ๋ค์ฐจ์ ๋ฐ์ดํฐ๋ผ๋ ๋ป)
NetCDF file structure ํ์ ํ๊ธฐ ์ค์
- Dimension (์ฐจ์ : ์๋, ๊ฒฝ๋, ์๊ฐ์ ํฌ๊ธฐ, ๊ฐฏ์ ๋ฑ)
์ผ๋ฐ์ ์ผ๋ก (Z,Y,X) - Variables (์ค์ ๋ณ์๋ค์ ๊ฐ)
- attributes (ํ์ผ์ ๋ํ ๋ฉํ์ ๋ณด) ๋ก ๋๋์ด์ ธ ์์.
- Global Attribute
ํ์ธํ๊ธฐ ์ํด์๋ → linux - ncdump, matlap - ncinfo
NCํ์ผ ) Ncdump๋ก ํ์ ํ๊ธฐ
ncdump -h {file}
python library ) Xarray๋ก ๊ฐ์, ์ฉ๋ ํ์ ํ๊ธฐ
"""
File for know the NCfile's digit info with Xarray
"""
import xarray as xr
# file path
file_path = 'data/IBTrACS/IBTrACS.WP.v04r01.nc'
try:
ds = xr.open_dataset(file_path)
print(ds) #print all of dataset info
print(ds.variables) #print variable of dataset
print(ds.attrs) #print attribute of dataset
except FileNotFoundError:
print(f"Error: File not found at path: {file_path}")
except Exception as e:
print(f"An error occurred: {e}")
python library ) iris๋ผ๋ ๊ฒ๋ ์๋ค๊ณ ?
#pip install scitools-iris
import iris
# NC ํ์ผ ๊ฒฝ๋ก
file_path = 'data/20190329_1_gen_data.nc'
# Iris๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ธ(Cube) ํํ๋ก ๋ฐ์ดํฐ ์ฝ๊ธฐ
try:
cubes = iris.load(file_path)
print(cubes) # ํ๋ธ ๋ฆฌ์คํธ ์ ๋ณด ์ถ๋ ฅ
except OSError as e:
print(f"Error: Could not open or read file: {file_path}. {e}")
except Exception as e:
print(f"An unexpected error occurred: {e}")
์๊ฐํ ํด : ncview
- ncview
- IDL NetCDF
- Panoply
- NcBrowse
๊ฐ์ ํด๋ค์ด ์๋ค๊ณ ํ๋๋ฐ ์ฐ์ ncview๋ก ์ข๋ ์์ nc ํ์ผ์ ๋ณด๋ฉด
Lon 170, 176, 186 ์์ผ๋ก ์ฐ์ด ๋ณด๋ ์ฐจ์ด๊ฐ ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค *์ด๋ ๊ฒ ํ์ธ๋ง ํ๋ ์ฉ๋๋ก ์ฌ์ฉํ๋ฉด ์ข๊ฒ ๋ค
๋ํ ๋ค์ํ ํํฐ๋ฅผ ์ ์ฉํด์ ๋ฐ๋ก ๋ณผ ์ ์๋ค๋ ๊ฒ๋ ์ฅ์ ์ด๋ค
-> ์ด๋ค ํจ๊ณผ๊ฐ ์๋ณด์ผ์ง ํ ์คํธ์ฉ์ผ๋ก๋ ์ข์ ๋ฏ
VSCode Extension : NetCDF Explorer
์ค๊ตญ.. ์ด๊ธดํ์ง๋ง ์ผ๋จ ๊น์๋ณด์ ๋์๋ ๊ฒ ๊ฐ๋ค
์ธ๋ค์ผ ์ด๋ฏธ์ง ์ฐธ๊ณ ๋ฐ NetCDF ์ฐธ๊ณ ์๋ฃ ! (ํ ๋ฒ์ ์ฝ์ด๋ณด๋ฉด ์ข๊ฒ ๋ค)
'Data Engineering ์ฌ๋ฐ๋ฐ > Ocean Meteorological Data' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํด์๊ธฐ์์ ์ํ NetCDF ๋ค๋ฃจ๊ธฐ (1) | 2024.12.03 |
---|---|
ํด์๊ธฐ์์ ์ํ ํ์ด์ฌ ๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (4) | 2024.12.01 |