Ubuntu Online, Fedora Online, Windows ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ ๋๋ MAC OS ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ์ ๊ฐ์ ์ฌ๋ฌ ๋ฌด๋ฃ ์จ๋ผ์ธ ์ํฌ์คํ ์ด์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ OnWorks ๋ฌด๋ฃ ํธ์คํ ๊ณต๊ธ์์์ ์คํํ ์ ์๋ ncgen ๋ช ๋ น์ ๋๋ค.
ํ๋ก๊ทธ๋จ:
์ด๋ฆ
ncgen - CDL ํ์ผ์์ netCDF-3 ํ์ผ, netCDF-4 ํ์ผ ๋๋ C ํ๋ก๊ทธ๋จ ์์ฑ
๊ฐ์
ncgen [-b] [-c] [-f] [-k ํ์_์ด๋ฆ] [-ํ์ ์ฝ๋] [-์ ์ถ๋ ฅ ์ธ์ด] [-์๋์
netcdf_ํ์ผ ์ด๋ฆ] [-x] [์ ๋ ฅ ํ์ผ]
๊ธฐ์
์์จ์ netCDF-3(์: ํด๋์) ๋ฐ์ด๋๋ฆฌ .nc ํ์ผ, netCDF-4(์:
ํฅ์๋) ๋ฐ์ด๋๋ฆฌ .nc ํ์ผ ๋๋ ์คํ๋ ๋ ์ผ๋ถ ์์ค ์ธ์ด๋ก ๋ ํ์ผ
ํด๋น ๋ฐ์ด๋๋ฆฌ .nc ํ์ผ์ ๊ตฌ์ฑํฉ๋๋ค. ์ ๋ํ ์ ๋ ฅ ์์จ์ ์ ๋ํ ์ค๋ช ์ ๋๋ค.
CDL(๋คํธ์ํฌ ๊ณตํต ๋ฐ์ดํฐ ํ์ ์ธ์ด)๋ก ์๋ ค์ง ์์ ์ธ์ด๋ก ๋ netCDF ํ์ผ,
์๋์์ ๋ฌ์ฌ ๋์ด์ง. input_file์ด ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ํ์ค ์ ๋ ฅ์์ ์ ๋ ฅ์ ์ฝ์ต๋๋ค. ์๋์ค์ธ ๊ฒฝ์ฐ
์ต์ ์ ํธ์ถ ์ ์ง์ ๋ฉ๋๋ค. ์์จ์ , ์ ๋ ฅ CDL์ ๊ตฌ๋ฌธ๋ง ํ์ธํฉ๋๋ค.
CDL ๊ตฌ๋ฌธ ์๋ฐ์ ๋ํ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์์ฑํ๋ ํ์ผ์ ๋๋ค. ๋ค๋ฅธ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์๋ฅผ ๋ค์ด ํด๋น netCDF ํ์ผ์ ์์ฑํ๊ฑฐ๋ C ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
netCDF C ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ netCDF ํ์ผ์ ์์ฑํฉ๋๋ค.
์ด ๋ฒ์ ์ ncgen์ ์๋ ncgen4๋ผ๊ณ ํ์ต๋๋ค. ์ด์ ncgen ํ๋ก๊ทธ๋จ์๋
ncgen3์ผ๋ก ์ด๋ฆ์ด ๋ณ๊ฒฝ๋์์ต๋๋ค.
์์จ์ ์ปดํจ๋์ธ ํ๋ก๊ทธ๋จ๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค. ncdump ๋ช ๊ฐ์ง ๊ฐ๋จํ ์์ ์ ์ํํ๊ธฐ ์ํด
netCDF ํ์ผ. ์๋ฅผ ๋ค์ด, netCDF ํ์ผ์์ ์ฐจ์์ ์ด๋ฆ์ ๋ฐ๊พธ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ญ์์ค. ncdump ๋ฅผ ์ป์ ์
netCDF ํ์ผ์ CDL ๋ฒ์ , CDL ํ์ผ์ ํธ์งํ์ฌ ์น์ ์ด๋ฆ ๋ณ๊ฒฝ,
์ฌ์ฉ ์์จ์ ํธ์ง๋ CDL ํ์ผ์์ ํด๋น netCDF ํ์ผ์ ์์ฑํฉ๋๋ค.
์ต์
-b (์ด์ง) netCDF ํ์ผ์ ๋ง๋ญ๋๋ค. ๋ง์ฝ -o ์ต์ ์ด ์์ผ๋ฉด ๊ธฐ๋ณธ ํ์ผ ์ด๋ฆ
CDL ํ์ผ์ ๊ธฐ๋ณธ ์ด๋ฆ์์ ๊ตฌ์ฑ๋๋ฉฐ ๋ชจ๋ ์ ๋ฏธ์ฌ๋ ๋ค์์ผ๋ก ๋์ฒด๋ฉ๋๋ค.
`.nc' ํ์ฅ์. ์ง์ ๋ ์ด๋ฆ์ ํ์ผ์ด ์ด๋ฏธ ์กด์ฌํ๋ ๊ฒฝ์ฐ
๋ฎ์ด์ผ๋ค.
-c ์์ฑ C netCDF์ ์ผ์นํ๋ netCDF ํ์ผ์ ์์ฑํ๋ ์์ค ์ฝ๋
์ฌ์. C ์์ค ์ฝ๋๋ ํ์ค ์ถ๋ ฅ์ ๊ธฐ๋ก๋ฉ๋๋ค. -lc์ ๋์ผํฉ๋๋ค.
-f ์์ฑ ํฌํธ๋ 77 netCDF์ ์ผ์นํ๋ netCDF ํ์ผ์ ์์ฑํ๋ ์์ค ์ฝ๋
์ฌ์. ์์ค ์ฝ๋๋ ํ์ค ์ถ๋ ฅ์ผ๋ก ๊ธฐ๋ก๋ฉ๋๋ค. -lf77๊ณผ ๋์ผํฉ๋๋ค.
-o netcdf_ํ์ผ
"nc_create()" ํธ์ถ์ ์ ๋ฌํ ํ์ผ์ ์ด๋ฆ์ ๋๋ค. ์ด ์ต์ ์ ์ง์ ํ๋ฉด
(๋ช ์์ ์ธ -l ํ๋๊ทธ๊ฐ ์๋ ๊ฒฝ์ฐ) "-b" ์ต์ ์ ๋๋ค. ์ด ์ต์ ์
netCDF ํ์ผ์ ํ์ค ์ถ๋ ฅ์ ์ง์ ์ธ ์ ์๊ธฐ ๋๋ฌธ์ ํ์ํฉ๋๋ค.
ํ์ค ์ถ๋ ฅ์ ๊ฒ์ํ ์ ์์ต๋๋ค.
-k ํ์_์ด๋ฆ
-ํ์ ์ฝ๋
-k ํ๋๊ทธ๋ ์์ฑํ ํ์ผ์ ํ์์ ์ง์ ํ๊ณ ์ถ๋ก ์ ์ํด
ncgen์์ ํ์ฉํ๋ ๋ฐ์ดํฐ ๋ชจ๋ธ(์: netcdf-3(ํด๋์) ๋ netcdf-4 ๋ netcdf-5).
๋ฐ๋ก ๊ฐ๊ธฐ๋ก ์ซ์ ํ์ ์ฝ๋ ๋์ ์ง์ ํ ์ ์์ต๋๋ค. ๊ฐ๋ฅํ
ํ์_์ด๋ฆ -k ์ต์ ์ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
'classic' ๋๋ 'nc3' => netCDF ํด๋์ ํ์
'64๋นํธ ์คํ์ ' ๋๋ 'nc6' => netCDF 64๋นํธ ํ์
'64๋นํธ ๋ฐ์ดํฐ ๋๋ 'nc5' => netCDF-5(64๋นํธ ๋ฐ์ดํฐ) ํ์
'netCDF-4' 0r 'nc4' => netCDF-4 ํ์(ํฅ์๋ ๋ฐ์ดํฐ ๋ชจ๋ธ)
'netCDF-4 ํด๋์ ๋ชจ๋ธ' ๋๋ 'nc7' => netCDF-4 ํด๋์ ๋ชจ๋ธ ํ์
๊ฐ๋ฅ ํ์_๋ฒํธ format_names์ ๋ฐ๋ก ๊ฐ๊ธฐ์ธ ์ธ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
3 => netcdf ํด๋์ ํ์
5 => netcdf 5 ํ์
6 => netCDF 64๋นํธ ํ์
4 => netCDF-4 ํ์(ํฅ์๋ ๋ฐ์ดํฐ ๋ชจ๋ธ)
7 => netCDF-4 ํด๋์ ๋ชจ๋ธ ํ์
์ซ์ ์ฝ๋ "7"์ด ์ฌ์ฉ๋๋ ์ด์ ๋ "7=3+4",
์ฑ๋ฅ์ ์ํ netCDF-3 ์คํ ๋ฆฌ์ง ํ์๊ณผ์ ํธํ์ฑ์ ์ํ netCDF-4 ๋ฐ์ดํฐ ๋ชจ๋ธ.
์ด์ ์ ํผ๋์ค๋ฌ์ด ์ซ์ ์ฝ๋ ๋์ ์ด๋ฌํ ์ซ์ ์ฝ๋๋ฅผ ์ฌ์ฉํ NCO ๋๋ถ์ ๋๋ค.
ํ์ ๋ฒํธ.
์ฐธ๊ณ : ์ด์ ๋ฒ์ ํ์ ๋ฒํธ '1', '2', '3', '4'๋ ํ์ ์ด๋ฆ๊ณผ ๋์ผํฉ๋๋ค.
๊ฐ๊ฐ 'nc3', 'nc6', 'nc4' ๋๋ 'nc7'๋ ํ์ฉ๋์ง๋ง ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
ํ์ ๋ฒํธ์ ํ์ ์ด๋ฆ ์ฌ์ด์ ์ฌ์ด ํผ๋. ๋ค์ํ ์ด์ ํ์ ์ด๋ฆ ๋ณ์นญ
ํ์ฉ๋์ง๋ง ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค(์: 'hdf5', 'enhanced-nc3' ๋ฑ). ๋ํ -v๋
์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์ํด -k์ ๋์ผํ ์๋ฏธ๋ก ๋ฐ์๋ค์ฌ์ง๋๋ค.
-x ์ฑ์ฐ๊ธฐ ๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ด๊ธฐํํ์ง ๋ง์ญ์์ค. ์ด๋ ๊ฒ ํ๋ฉด ๋๊ท๋ชจ netCDF ์์ฑ ์๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค.
ํ์ผ์ ํฌ๊ฒ ๋ง๋ค์ง ๋ง ๋์ค์ ์์ฑ ๋ ํ์ผ์์ ๊ธฐ๋ก๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ผ๋ ค๊ณ ์๋ํฉ๋๋ค.
์ฝ๊ฒ ๊ฐ์ง๋์ง ์์ต๋๋ค.
-l ์ถ๋ ฅ ์ธ์ด
-l ํ๋๊ทธ๋ ์์ค ์ฝ๋๋ฅผ ์์ฑํ ๋ ์ฌ์ฉํ ์ถ๋ ฅ ์ธ์ด๋ฅผ ์ง์ ํฉ๋๋ค.
netCDF ์ฌ์๊ณผ ์ผ์นํ๋ netCDF ํ์ผ์ ์์ฑํ๊ฑฐ๋ ์ ์ํฉ๋๋ค. ์ถ๋ ฅ
ํ์ค ์ถ๋ ฅ์ ๊ธฐ๋ก๋ฉ๋๋ค. ํ์ฌ ์ง์๋๋ ์ธ์ด๋
๋ค์ ํ๋๊ทธ.
c|C' => C ์ธ์ด ์ถ๋ ฅ.
f77|fortran77' => FORTRAN 77 ์ธ์ด ์ถ๋ ฅ
; ํ์ฌ ํด๋์ ๋ชจ๋ธ๋ง ์ง์๋ฉ๋๋ค.
j|java' => (์คํ์ ) Java ์ธ์ด ์ถ๋ ฅ
; ๊ธฐ์กด Unidata Java ์ธํฐํ์ด์ค๋ฅผ ๋์์ผ๋ก ํฉ๋๋ค.
ํด๋์ ๋ชจ๋ธ์ด ์ง์๋ฉ๋๋ค.
์ ํ ์ ์, ์ถ๋ ฅ ์ฒด์ฌ
์ถ๋ ฅ ํ์์ ์ ํ์ ์ธ ๊ฐ์ง ํ๋๊ทธ๋ก ๊ฒฐ์ ๋ฉ๋๋ค.
-k ๊น๋ฐ.
_์ฒด์ฌ ์์ฑ (์ฐธ์กฐ ์๋).
๋ฐ์ of CDF-5 (64๋นํธ ๋ฐ์ดํฐ) or
netcdf-4๋ ์ ๋ ฅ CDL์์ ๊ตฌ์ฑํฉ๋๋ค." ์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ ๊ธฐ๊ฐ "netCDF-4 ๊ตฌ์กฐ" ๋ฐฉ๋ฒ
๊ตฌ์ฑ ์ ์ ์, ๊ฐํ ๋ฐ์ดํฐ ๋ชจ๋ธ, ์ง์ ๋ค๋ง ํน๋ณํ ์ฑ๋ฅ ๊ด๋ จ
์์ฑ ์ด๋ฌํ as
_์ฒญํฌ ํฌ๊ธฐ, _๋ํ๋ ์ดํธ๋ ๋ฒจ, _์๋์, ๋ฑ ์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ ๊ธฐ๊ฐ "CDF-5 ๊ตฌ์กฐ" ๋ฐฉ๋ฒ
extended ๋ถํธ ์ ์ ์ ํ ์ in ์ ์, 64-bit ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๋๋ค.
netCDF-4 ์ฌ๋ก์ CDF-5 ์ฌ๋ก ์ฌ์ด์๋ ๋ชจํธ์ฑ์ด ์์ต๋๋ค.
๋ถํธ ์๋ ์ ํ์ด ์ ๋ ฅ์ ํ์๋ฉ๋๋ค.
๊ท์น์ ์ ์ฉ ์์๋๋ก ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. Fortran ๋๋ Java ์ถ๋ ฅ์ด ์ง์ ๋ ๊ฒฝ์ฐ -k ํ๋๊ทธ ๊ฐ 1(ํด๋์
๋ชจ๋ธ)์ ์ฌ์ฉํฉ๋๋ค. CDL์์ ํฅ์๋ ๊ตฌ์ฑ ์ฌ์ฉ๊ณผ์ ์ถฉ๋์
์ค๋ฅ๋ฅผ ๋ณด๊ณ ํฉ๋๋ค.
2. -k ํ๋๊ทธ์ _Format ์์ฑ์ด ๋ชจ๋ ์ง์ ๋ ๊ฒฝ์ฐ _Format ํ๋๊ทธ๋
๋ฌด์ํ๋ค. -k ํ๋๊ทธ๊ฐ ์ง์ ๋์ง ์๊ณ _Format ์์ฑ ๊ฐ์ด ์ง์ ๋ ๊ฒฝ์ฐ,
๊ทธ๋ฌ๋ฉด -k ํ๋๊ทธ ๊ฐ์ด _Format ์์ฑ์ ๊ฐ์ผ๋ก ์ค์ ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด
-k ํ๋๊ทธ๊ฐ ์ ์๋์ง ์์์ต๋๋ค.
3. -k ์ต์ ์ด ์ ์๋๊ณ CDL๊ณผ ์ผ์นํ๋ ๊ฒฝ์ฐ ncgen์ ๋ค์์ ์ถ๋ ฅํฉ๋๋ค.
์์ฒญ๋ ํ์์ ํ์ผ์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ณด๊ณ ๋ฉ๋๋ค.
4. -k ํ๋๊ทธ๊ฐ ์ ์๋์ง ์๊ณ CDF-5 ๊ตฌ์ฑ์ด ์๋ ๊ฒฝ์ฐ CDL์๋ง
-k ํ๋๊ทธ ๊ฐ 5(64๋นํธ ๋ฐ์ดํฐ ๋ชจ๋ธ)๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ง์ ํ netCDF-4๊ฐ ์๋ ๊ฒฝ์ฐ
CDL์ ๊ตฌ์ฑ์์ -k ํ๋๊ทธ ๊ฐ 3(ํฅ์๋ ๋ชจ๋ธ)์ด ์ฌ์ฉ๋ฉ๋๋ค.
5. ํน๋ณํ ์ฑ๋ฅ ๊ด๋ จ ์์ฑ์ด CDL์ ์ง์ ๋ ๊ฒฝ์ฐ -k ํ๋๊ทธ ๊ฐ
4๊ฐ ์ค(netCDF-4 ํด๋์ ๋ชจ๋ธ)์ด ์ฌ์ฉ๋ฉ๋๋ค.
6. ๊ทธ๋ ์ง ์์ผ๋ฉด ncgen์ด -k ํ๋๊ทธ๋ฅผ 1(ํด๋์ ๋ชจ๋ธ)๋ก ์ค์ ํฉ๋๋ค.
์ฌ์ฉ ์
CDL ํ์ผ์ ๊ตฌ๋ฌธ ํ์ธ `foo.cdl':
ncgen foo.cdl
CDL ํ์ผ์์ `foo.cdl', `๋ผ๋ ์ด๋ฆ์ ๋๋ฑํ ๋ฐ์ด๋๋ฆฌ netCDF ํ์ผ์ ์์ฑํฉ๋๋ค.x.nc':
ncgen -o x.nc foo.cdl
CDL ํ์ผ์์ `foo.cdl', netCDF ํจ์๋ฅผ ํฌํจํ๋ C ํ๋ก๊ทธ๋จ ์์ฑ
`๋ผ๋ ๋๋ฑํ ๋ฐ์ด๋๋ฆฌ netCDF ํ์ผ์ ๋ง๋๋ ๋ฐ ํ์ํ ํธ์ถx.nc':
ncgen -lc foo.cdl >xc
์ฌ์ฉ๋ฒ
CDL ํต์ฌ๋ก ์ดํด๋ณด๊ธฐ
๋ค์์ ์ฌ๋ฌ ๋ช ๋ช ๋ ์ฐจ์์ด ์๋ netCDF ํ์ผ์ ์ค๋ช ํ๋ CDL ๊ตฌ๋ฌธ์ ์์ ๋๋ค.
(์๋, ๊ฒฝ๋ ๋ฐ ์๊ฐ), ๋ณ์(Z, t, p, rh, ์๋, ๊ฒฝ๋, ์๊ฐ), ๋ณ์ ์์ฑ(๋จ์,
long_name, valid_range, _FillValue) ๋ฐ ์ผ๋ถ ๋ฐ์ดํฐ. CDL ํค์๋๋ ๊ตต๊ฒ ํ์๋ฉ๋๋ค. (์ด๊ฒ
์์ ๋ ๊ตฌ๋ฌธ์ ์ค๋ช ํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค. ์ค์ CDL ํ์ผ์๋ ๋ ์์ ํ
๋ฐ์ดํฐ๊ฐ ๋ ์๋ฒฝํ๊ฒ ์์ฒด ์ค๋ช ๋ ์ ์๋๋ก ์์ฑ ์งํฉ).
netcdf foo { // CDL์ netCDF ์ฌ์ ์์
์ ํ:
์ ๋ฐ์ดํธ ์ด๊ฑฐ ํ enum_t {ํด๋ฆฌ์ด = 0, ์ ๋์ด = 1, ์ธต์ด = 2};
๋ถํฌ๋ช ์ฒด(11) ๋ถํฌ๋ช _t;
INT(*) vlen_t;
์น์:
์๋ = 10, ๊ฒฝ๋ = 5, ์๊ฐ = ๋ฌด์ ํ ;
๋ณ์:
๊ธด ์๋(์๋), ๊ฒฝ๋(๊ฒฝ๋), ์๊ฐ(์๊ฐ);
๋จ๋ค Z(์๊ฐ, ์๋, ๊ฒฝ๋), t(์๊ฐ, ์๋, ๊ฒฝ๋);
๋๋ธ p(์๊ฐ, ์๋, ๊ฒฝ๋);
๊ธด rh(์๊ฐ, ์๋, ๊ฒฝ๋);
ํ ๊ตญ๊ฐ(์๊ฐ, ์๋, ๊ฒฝ๋);
์ ๋ฐ์ดํธ ๊ผฌ๋ฆฌํ;
// ๋ณ์ ์์ฑ
lat:long_name = "์๋";
์๋:๋จ์ = "๋๋ถ";
lon:long_name = "๊ฒฝ๋";
lon:units = "degrees_east";
time:units = "1992-1-1 00:00:00 ์ดํ ์ด";
// ์ ๋ ฅ๋ ๋ณ์ ์์ฑ
ํ Z:units = "์ง๋ฆฌ์ ์ ๋ฏธํฐ";
๋จ๋ค Z: ์ ํจ ๋ฒ์ = 0., 5000.;
๋๋ธ p:_FillValue = -9999.;
๊ธด rh:_FillValue = -1;
vlen_t :globalatt = {17, 18, 19};
๋ฐ์ดํฐ:
์๋ = 0, 10, 20, 30, 40, 50, 60, 70, 80, 90;
๋ก = -140, -118, -96, -84, -52;
๊ทธ๋ฃน: g {
์ ํ:
ํํฉ๋ฌผ cmpd_t { vlen_t f1; enum_t f2;};
} // ๊ทธ๋ฃน g
๊ทธ๋ฃน: ์๊ฐ {
๋ณ์:
/์ง/cmpd_t ํํฉ๋ฌผ๋ฐ;
๋ฐ์ดํฐ:
compoundvar = {{3,4,5}, enum_t.Stratus } ;
} // ๊ทธ๋ฃน H
}
๋ชจ๋ CDL ๋ฌธ์ ์ธ๋ฏธ์ฝ๋ก ์ผ๋ก ์ข ๋ฃ๋ฉ๋๋ค. ๊ณต๋ฐฑ, ํญ ๋ฐ ์ค ๋ฐ๊ฟ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ฐ๋ ์ฑ์ ์ํด ์์ ๋กญ๊ฒ. ์ฃผ์์ '//' ๋ฌธ์ ๋ค์์ ์ฌ ์ ์์ต๋๋ค.
CDL ์ค๋ช ์ XNUMX๊ฐ์ ์ ํ์ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ ํ, ์น์, ๋ณ์, ๋ฐ์ดํฐ,
ํค์๋๋ก ์์ `์ ํ:', `์ฐจ์:', `๋ณ์:'๋ฐ `๋ฐ์ดํฐ:',
๊ฐ๊ธฐ. ๋ช ๊ฐ์ง ์ฌํญ์ ์ ์ํ์ญ์์ค. (1) ํค์๋์๋ ํํ ์ฝ๋ก ์ด ํฌํจ๋์ด ์์ต๋๋ค.
์ฝ๋ก ๋ฌธ์ ์์๋ ๊ณต๋ฐฑ์ด ์์ด์๋ ์ ๋๋ฉฐ (2) ํค์๋๋
์๋ฌธ์.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ ๋ณ์: ์น์ ์ ํฌํจ๋ ์ ์์ ๋ณ์ ์ ์ธ and ์์ฑ ํ ๋น. ๋ชจ๋
์น์ ์๋ ์ ์ญ ์์ฑ ํ ๋น์ด ํฌํจ๋ ์ ์์ต๋๋ค.
๋ํ, ์ดํ ๋ฐ์ดํฐ : ์น์ ์์ ์ฌ์ฉ์๋ ์ผ๋ จ์ ๊ทธ๋ฃน์ ์ ์ํ ์ ์์ต๋๋ค(
์์ ์). ๊ทธ๋ฃน ์์ฒด์๋ ์ ํ, ์ฐจ์, ๋ณ์, ๋ฐ์ดํฐ ๋ฐ
๊ธฐํ(์ค์ฒฉ๋) ๊ทธ๋ฃน.
netCDF ์ ํ : ์น์ ์ ์ฌ์ฉ์ ์ ์ ์ ํ์ ์ ์ธํฉ๋๋ค. ์ด๋ค์ ๋ค์์ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
๋ค์ ์ ํ ์ค ํ๋: ์ด๊ฑฐ ํ, ๋ธ๋ , ๋ถํฌ๋ช ์ฒด๋ฐ ํํฉ๋ฌผ.
๋ทCDF ์น์ ํ๋ ์ด์์ ๋ค์ฐจ์์ ๋ชจ์์ ์ ์ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
netCDF ํ์ผ์ ํฌํจ๋ ๋ณ์. netCDF ์ฐจ์์๋ ์ด๋ฆ๊ณผ ํฌ๊ธฐ๊ฐ ์์ต๋๋ค. ใ
์น์๋ ๋ฌด์ ํ ํฌ๊ธฐ, ์ฆ ์ด ์ฐจ์์ ์ฌ์ฉํ๋ ๋ณ์๋
ํด๋น ์ฐจ์์ ๊ธธ์ด๋ก ์๋๋๋ค.
A ๋ณ์ ๊ฐ์ ์ ํ์ ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋ ๋ค์ฐจ์ ๋ฐฐ์ด์ ๋ํ๋ ๋๋ค. ๋ณ์์๋
์ฐจ์ ๋ชฉ๋ก์์ ์ค๋ช ํ๋ ์ด๋ฆ, ๋ฐ์ดํฐ ์ ํ ๋ฐ ๋ชจ์. ๊ฐ ๋ณ์๋
๋ํ ๊ด๋ จ ์์ฑ (์๋ ์ฐธ์กฐ) ๋ฐ ๋ฐ์ดํฐ ๊ฐ. ์ด๋ฆ, ๋ฐ์ดํฐ ์ ํ,
๋ณ์์ ๋ชจ์์ ์ ์ธ์ ์ํด ์ง์ ๋ฉ๋๋ค. ๋ณ์ CDL ์น์
์ค๋ช . ๋ณ์๋ ์ฐจ์๊ณผ ์ด๋ฆ์ด ๊ฐ์ ์ ์์ต๋๋ค. ๊ทธ๋ฌํ ๊ด์ต์ ์ํด
๋ณ์๋ XNUMX์ฐจ์์ด๋ฉฐ ์ด๋ฆ์ ์ง์ ํ๋ ์ฐจ์์ ์ขํ๋ฅผ ํฌํจํฉ๋๋ค.
์ฐจ์์๋ ํด๋น ๋ณ์๊ฐ ์์ด๋ ๋ฉ๋๋ค.
๋ทCDF ์์ฑ netCDF ๋ณ์ ๋๋ ์ ์ฒด netCDF์ ๋ํ ์ ๋ณด๋ฅผ ํฌํจํฉ๋๋ค.
๋ฐ์ดํฐ ์ธํธ. ์์ฑ์ ๋จ์, ํน์ ๊ฐ, ์ต๋๊ฐ๊ณผ ๊ฐ์ ์์ฑ์ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋ฐ ์ต์ ์ ํจ ๊ฐ, ์ค์ผ์ผ๋ง ๊ณ์, ์คํ์ ๋ฐ ๋งค๊ฐ๋ณ์. ์์ฑ ์ ๋ณด
๋จ์ผ ๊ฐ ๋๋ ๊ฐ ๋ฐฐ์ด๋ก ํ์๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด "๋จ์"๋ ์์ฑ์ ๋๋ค.
"celsius"์ ๊ฐ์ ๋ฌธ์ ๋ฐฐ์ด๋ก ํํ๋ฉ๋๋ค. ์์ฑ์ ์ฐ๊ฒฐ๋
๋ณ์, ์ด๋ฆ, ๋ฐ์ดํฐ ์ ํ, ๊ธธ์ด ๋ฐ ๊ฐ. ๋ค์๊ณผ ๊ฐ์ ๋ณ์์ ๋์กฐ์ ์ผ๋ก
๋ฐ์ดํฐ๋ฅผ ์ํ ์์ฑ์ ๋ฉํ๋ฐ์ดํฐ(๋ฐ์ดํฐ์ ๋ํ ๋ฐ์ดํฐ)๋ฅผ ์ํ ๊ฒ์ ๋๋ค. ๊ฐ์ง ์์
netCDF-3, ์์ฑ ์ ํ์ ์ฌ์ฉ์ ์ ์ ์ ํ์ผ ์ ์์ผ๋ฉฐ ์ผ๋ฐ์ ์ธ ๋ด์ฅ ์ ํ์ผ ์ ์์ต๋๋ค.
์ ํ.
CDL์์ ์์ฑ์ ์ ํ, ๋ณ์, ':', ์์ฑ์ผ๋ก ์ง์ ๋ฉ๋๋ค.
์ด๋ฆ. ์ ํ์ ์ ํ ์ฌํญ์ด๋ฉฐ ๋๋ฝ๋ ๊ฒฝ์ฐ ํ ๋น๋ ๊ฐ์์ ์ ์ถ๋ฉ๋๋ค.
์์ฑ์. ํ ๋น์ด ๊ฐ๋ฅํ๋ค ๊ธ๋ก๋ฒ ์ด๋ค ๊ฒ๊ณผ๋ ์ฐ๊ฒฐ๋์ง ์์ ์์ฑ
์์ฑ์์ ๋ณ์ ์ด๋ฆ์ ์๋ตํ์ฌ ์ ์ฒด์ ์ผ๋ก netCDF์ ๋ณ์
์ ์ธ. ์ฌ์์ ๋ค์๊ณผ ๊ฐ์ ์ ์ฌ์ ๋ชจํธ์ฑ์ด ์์์ ์ ์ํ์ญ์์ค.
x : ์ = ...
์ด ์ํฉ์์ x๋ ์ ์ญ ์์ฑ์ ์ ํ์ด๊ฑฐ๋ ๋ณ์ ์ด๋ฆ์ผ ์ ์์ต๋๋ค.
์์ฑ์ ๋ํด. x๋ผ๋ ์ ํ๊ณผ x๋ผ๋ ๋ณ์๊ฐ ๋ชจ๋ ์์ ์ ์์ผ๋ฏ๋ก
๋ชจํธํจ์ด๋ค. ๊ท์น์ ์ด ์ํฉ์์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ x๊ฐ ์ ํ์ผ๋ก ํด์๋๋ค๋ ๊ฒ์ ๋๋ค.
๊ฐ๋ฅํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ณ์๋ก.
์ง์ ํ์ง ์์ผ๋ฉด CDL์ ์์ฑ ๋ฐ์ดํฐ ์ ํ์
ํ ๋น๋ ๊ฐ์ ๋๋ค. ์์ฑ์ ๊ธธ์ด๋ ํ ๋น๋ ๋ฐ์ดํฐ ๊ฐ์ ์์ ๋๋ค.
๋๋ ํ ๋น๋ ๋ฌธ์์ด์ ๋ฌธ์ ์์ ๋๋ค. ๋ค์์
๊ฐ์ ์ผํ๋ก ๊ฐ์ ๊ตฌ๋ถํ์ฌ ๋น๋ฌธ์ ์์ฑ์ ํ ๋น๋ฉ๋๋ค. ๋ชจ๋
์์ฑ์ ํ ๋น๋ ๊ฐ์ ๋์ผํ ์ ํ์ด์ด์ผ ํฉ๋๋ค.
CDL ์ฐจ์, ๋ณ์, ์์ฑ, ์ ํ ๋ฐ ๊ทธ๋ฃน์ ์ด๋ฆ์๋ ๋ค์์ด ํฌํจ๋ ์ ์์ต๋๋ค.
์ฌ๋์ ๋ฌธ์(`/')๋ฅผ ์ ์ธํ ๋น์ ์ด utf-8 ๋ฌธ์. ๊ทธ๋ฌ๋ ํน์
๋ฌธ์๋ ์ด๋ฆ์ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ์ด์ค์ผ์ดํํด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์ ์ด์ค์ผ์ดํ ๋ฌธ์๋
๋ฐฑ์ฌ๋์ `\'. ํนํ ์ด๋ฆ ์์ ๋ฌธ์๊ฐ ์ซ์์ธ ๊ฒฝ์ฐ
(0-9)์ธ ๊ฒฝ์ฐ ์ด์ค์ผ์ดํ ๋ฌธ์๊ฐ ์์ ์์ผ ํฉ๋๋ค. ๋ํ '
!"#$%&()*,:;<=>?[]^`ยด{}|~\'๋ ์ด๋ฆ์ ์ด๋์์๋ ๋ํ๋๋ ๊ฒฝ์ฐ ์ด์ค์ผ์ดํํด์ผ ํฉ๋๋ค. ๋ํ ์ฐธ๊ณ
๋ฐ์ค(`_')๋ก ์์ํ๋ ์์ฑ ์ด๋ฆ์
Unidata๋ ์ฌ์ฉ์ ์ ์ ์์ฑ์ ์ฌ์ฉํ๋ฉด ์ ๋ฉ๋๋ค.
`variable', `dimension', `data', `group' ๋ฐ `types'๋ผ๋ ๋จ์ด๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
CDL ์ด๋ฆ, ๊ทธ๋ฌ๋ ์ด๋ฆ๊ณผ ๋ค๋ฐ๋ฅด๋ ์ฝ๋ก ์ฌ์ด์ ๊ณต๋ฐฑ์ด ์์ด์ผ ํฉ๋๋ค.
๋ณ์ ์ด๋ฆ์ผ๋ก ์ฌ์ฉ๋ ๋ ๋ฌธ์. ์ด๊ฒ์ ๋๋ถ๋ถ ์์ฑ์ ๋ฌธ์ ์ ๋๋ค.
์ ์ธ. ์๋ฅผ ๋ค์ด, ์ด๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
netcdf ... {
...
๋ณ์:
์ ์ ์ฐจ์;
์น์: ์์ฑ=0 ; // ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์น์: ์์ฑ=0 ; // ๊ด์ฐฎ์ต๋๋ค.
...
}
์ ํ์ ๋ฐ์ดํฐ : CDL ์ฌ์์ ์น์ ์ netCDF ๋ณ์๊ฐ ์์ ์ ์๋ ๊ณณ์ ๋๋ค.
์ด๊ธฐํ. ์ด๊ธฐํ ๊ตฌ๋ฌธ์ ๊ฐ๋จํฉ๋๋ค. ๋ณ์ ์ด๋ฆ, ๋ฑํธ,
๋ฐ ์ผํ๋ก ๊ตฌ๋ถ๋ ์์ ๋ชฉ๋ก(๊ณต๋ฐฑ, ํญ ๋ฐ ์ค ๋ฐ๊ฟ์ผ๋ก ๊ตฌ๋ถ๋ ์ ์์)
์ธ๋ฏธ์ฝ๋ก ์ผ๋ก ๋๋ฉ๋๋ค. ๋ค์ฐจ์ ๋ฐฐ์ด์ ๊ฒฝ์ฐ ๋ง์ง๋ง ์ฐจ์์ด ๋ค๋ฆ ๋๋ค.
๊ฐ์ฅ ๋น ๋ฅธ. ๋ฐ๋ผ์ ํ๋ ฌ์๋ ์ด ์์๊ฐ ์๋ ํ ์์๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๊ฐ์ด ์ ์ ๊ฒฝ์ฐ
๋ณ์๋ฅผ ์ฑ์ฐ๋ ๋ฐ ํ์ํ ๊ฒ๋ณด๋ค ๋ง์ด ์ ๊ณต๋๋ฉด ์ ํ ์ข ์์ผ๋ก ํ์ฅ๋ฉ๋๋ค.
๊ณ ์ ๋ณ์์ ๋ํ ๊ฐ์ ์ ๊ณตํ์ฌ ์ฌ์ ์ํ ์ ์๋ '๊ฐ ์ฑ์ฐ๊ธฐ'
'_FillValue'๋ผ๋ ์์ฑ์ ๋๋ค. ์์ ์ ํ์ ๋ค์์ ๋ํด ์ ์ธ๋ ์ ํ๊ณผ ์ผ์นํ ํ์๊ฐ ์์ต๋๋ค.
๋ณ์; ์๋ฅผ ๋ค์ด ์ ์๋ฅผ ๋ถ๋ ์์์ ์ผ๋ก ๋ณํํ๊ธฐ ์ํด ๊ฐ์ ๋ณํ์ด ์ํ๋ฉ๋๋ค. NS
์์ `_'๋ ๋ณ์์ ๋ํ ์ฑ์ฐ๊ธฐ ๊ฐ์ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ ์ ํ์ธ ๊ฒฝ์ฐ
๋ณ์๊ฐ ๋ช ์์ ์ผ๋ก `๋ฌธ์์ด'์ด๋ฉด ํน์ ์์ `NIL`์ ์ฌ์ฉํ์ฌ ๋ค์์ ๋ํ๋ผ ์ ์์ต๋๋ค.
๊ธธ์ด๊ฐ XNUMX์ธ ๋ฌธ์์ด๊ณผ ๋ค๋ฅธ nil ๋ฌธ์์ด.
์์์ ์ธ Data ์ ํ
์ด๋ฅ ์ ์ฐจ ๋ฌธ์
๋ฐ์ดํธ 8 ๋นํธ ๋ฐ์ดํฐ
์งง์ 16๋นํธ ๋ถํธ ์๋ ์ ์
INT 32๋นํธ ๋ถํธ ์๋ ์ ์
๊ธด (๋์์ด INT)
int64 64๋นํธ ๋ถํธ ์๋ ์ ์
๋จ๋ค IEEE ๋จ์ ๋ฐ๋ ๋ถ๋ ์์์ (32๋นํธ)
ํ์ค (๋์์ด ๋จ๋ค)
๋๋ธ IEEE ๋ฐฐ์ ๋ฐ๋ ๋ถ๋ ์์์ (64๋นํธ)
์ ๋ฐ์ดํธ ๋ถํธ ์๋ 8๋นํธ ๋ฐ์ดํฐ
์งง์ 16๋นํธ ๋ถํธ ์๋ ์ ์
๋จ์ 32๋นํธ ๋ถํธ ์๋ ์ ์
uint64 64๋นํธ ๋ถํธ ์๋ ์ ์
ํ ์์ ๊ธธ์ด ๋ฌธ์์ด
CDL์ C์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ์ ํ์ ์์ ์งํฉ์ ์ง์ํฉ๋๋ค. ๊ธฐ๋ณธ ๋ฐ์ดํฐ ์ ํ์ ์ด๋ฆ
๋ฐ์ดํฐ ์ ํ์ CDL์์ ์์ฝ์ด์ด๋ฏ๋ก ๋ณ์ ์ด๋ฆ, ์ฐจ์ ๋ฐ
์์ฑ์ ๊ธฐ๋ณธ ์ ํ ์ด๋ฆ์ด ์๋์ด์ผ ํฉ๋๋ค. ์ ์ธ์์ ์ ํ ์ด๋ฆ์ ์ง์ ํ ์ ์์ต๋๋ค.
๋๋ฌธ์ ๋๋ ์๋ฌธ์.
๋ฐ์ดํธ๋ ์ ์ฒด XNUMX๋นํธ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ ํ๊ธฐ ์ํ ๊ฒ์ด๋ฉฐ XNUMX๋ฐ์ดํธ๋ ํน๋ณํ ์๋ฏธ๊ฐ ์์ต๋๋ค.
๋ฌธ์ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ ์ค์ํ ์ ์์ต๋๋ค. ์์จ์ ๋ณํ ๋ฐ์ดํธ ์ ์ธ ์ด๋ฅ ์ ์ฐจ
์ถ๋ ฅ C ์ฝ๋ ๋ฐ ๋นํ์ค ์ ์ธ BYTE ์ถ๋ ฅ ์ ์ธ
ํฌํธ๋ ์ฝ๋.
Shorts๋ -32768์์ 32767 ์ฌ์ด์ ๊ฐ์ ๋ณด์ ํ ์ ์์ต๋๋ค. ์์จ์ ๋ณํ ์งง์ ์ ์ธ
์งง์ ์ถ๋ ฅ C ์ฝ๋ ๋ฐ ๋นํ์ค ์ ์ธ ์ ์*2 ์ ์ธ
ํฌํธ๋ ์ฝ๋๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์ ์๋ -2147483648์์ 2147483647 ์ฌ์ด์ ๊ฐ์ ๋ณด์ ํ ์ ์์ต๋๋ค. ์์จ์ ๋ณํ INT ์ ์ธ
์ INT ์ถ๋ ฅ C ์ฝ๋์ ์ ์ธ ๋ฐ ์ ์ ์ถ๋ ฅ Fortran์ ์ ์ธ
์ํธ. ๊ธด ์ ๋์์ด๋ก ๋ฐ์๋ค์ฌ์ง๋ค. INT CDL ์ ์ธ์์ ์ฌ์ฉ๋์ง๋ง ์ดํ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
์ด์ C long์ ๋ํ 64๋นํธ ํํ์ด ์๋ ํ๋ซํผ์ด ์์ต๋๋ค.
Int64๋ -9223372036854775808์์ 9223372036854775807 ์ฌ์ด์ ๊ฐ์ ๋ณด์ ํ ์ ์์ต๋๋ค. ์์จ์
๋ณํ int64 ์ ์ธ ๋กฑ๋กฑ ์ถ๋ ฅ C ์ฝ๋์ ์ ์ธ.
๋ถ๋ ์์์ ์ ์ฝ -3.4+38์์ 3.4+38 ์ฌ์ด์ ๊ฐ์ ๋ณด์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ค์ ์ธ๋ถ ํํ์
32๋นํธ IEEE ์ ๊ทํ๋ ๋จ์ ๋ฐ๋ ๋ถ๋ ์์์ ์ซ์๋ก. ์์จ์ ๋ณํ ๋จ๋ค
์ ์ธ ๋จ๋ค ์ถ๋ ฅ C ์ฝ๋์ ์ ์ธ ๋ฐ ๋ ์ ์ถ๋ ฅ์ ์ ์ธ
ํฌํธ๋ ์ฝ๋. ํ์ค ์ ๋์์ด๋ก ๋ฐ์๋ค์ฌ์ง๋ค. ๋จ๋ค CDL ์ ์ธ์์.
Double์ ์ฝ -1.7+308์์ 1.7+308 ์ฌ์ด์ ๊ฐ์ ๋ณด์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ค์ ์ธ๋ถ ํํ
64๋นํธ IEEE ํ์ค ์ ๊ทํ๋ ๋ฐฐ์ ๋ฐ๋ ๋ถ๋ ์์์ ์ซ์์ ๋๋ค. ์์จ์
๋ณํ ๋๋ธ ์ ์ธ ๋๋ธ ์ถ๋ ฅ C ์ฝ๋์ ์ ์ธ ๋ฐ ๋๋ธ
์ ๋ ์ถ๋ ฅ ํฌํธ๋ ์ฝ๋์ ์ ์ธ.
์ ์ ์ ์ ํ์ ๋ฌด๋ถํธ ๋์ ํญ๋ชฉ์ ํด๋น ์ ์ ์ ํ์ ๋งคํ๋ฉ๋๋ค.
๋ถํธ ์๋ C ์ ํ. ํด๋น ๋ฒ์๋ XNUMX์์ ์์ํ๋๋ก ์ ์ ํ๊ฒ ์์ ๋ฉ๋๋ค.
char ์ ํ์ ๊ธฐ์ ์ ์ธ ํด์์ ๋ถํธ ์๋ 8๋นํธ ๊ฐ์ด๋ผ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋งํผ
256๊ฐ์ ๊ฐ๋ฅํ ๊ฐ์ ์ธ์ฝ๋ฉ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ ๋์ง ์์ต๋๋ค. char ์ ํ์ ๋ณ์๋
์ฌ์ฉํ ๋ฌธ์ ์ธํธ๋ฅผ ๋ํ๋ด๊ธฐ ์ํด "_Encoding" ์์ฑ์ผ๋ก ํ์ํด์ผ ํฉ๋๋ค. US-
ASCII, ISO-8859-1 ๋ฑ UTF-8 ์ธ์ฝ๋ฉ์ ์ง์ ํ๋ ๊ฒ์
US-ASCII ์ง์ ๋ฉํฐ๋ฐ์ดํธ UTF-8 ๋ฌธ์๋
8๋นํธ ๋ฌธ์. ์ ์ผํ๊ฒ ํฉ๋ฒ์ ์ธ ๋จ์ผ ๋ฐ์ดํธ UTF-8 ๊ฐ์ ์ ์์ 7๋นํธ US-
์ต์์ ๋นํธ๊ฐ XNUMX์ผ๋ก ์ค์ ๋ ASCII ์ธ์ฝ๋ฉ.
๋ฌธ์์ด์ ๊ธฐ๋ณธ์ ์ผ๋ก UTF-8์ ์ฌ์ฉํ์ฌ ์ธ์ฝ๋ฉ๋๋ ๊ฒ์ผ๋ก ๊ฐ์ ํฉ๋๋ค. ์ด๊ฒ์ ๋ค์์ ์๋ฏธํฉ๋๋ค.
๋ฉํฐ๋ฐ์ดํธ UTF-8 ์ธ์ฝ๋ฉ์ด ๋ฌธ์์ด์ ์กด์ฌํ ์ ์์ผ๋ฏ๋ก ์ซ์๊ฐ
๋ฌธ์์ด์์ ๊ณ ์ ํ UTF-8 ๋ฌธ์์ ์๊ฐ ์ฌ์ฉ๋๋ 8๋นํธ ๋ฐ์ดํธ ์๋ณด๋ค ์์ต๋๋ค.
๋ฌธ์์ด์ ์ ์ฅํฉ๋๋ค.
CDL ์์
์์ฑ์ด๋ ๋ณ์์ ํ ๋น๋ ์์๋ ๊ธฐ๋ณธ netCDF ์ ํ ์ค ํ๋์ผ ์ ์์ต๋๋ค.
์์ ๊ตฌ๋ฌธ์ ์ ํ ์ ๋ฏธ์ฌ๊ฐ ๋ค์๊ณผ ๊ฐ์์ผ ํ๋ค๋ ์ ์ ์ ์ธํ๊ณ ๋ C ๊ตฌ๋ฌธ๊ณผ ์ ์ฌํฉ๋๋ค.
long ๋ฐ double๊ณผ ๊ตฌ๋ณํ๊ธฐ ์ํด short ๋ฐ float์ ์ถ๊ฐ๋ฉ๋๋ค.
A ๋ฐ์ดํธ ์์๋ `b'(๋๋ `B')๊ฐ ์ถ๊ฐ๋ ์ ์ ์์๋ก ํ์๋ฉ๋๋ค. ~ ์์
์ด์ netCDF-2 API์์ ๋ฐ์ดํธ ์์๋ ๋จ์ผ ๋ฌธ์ ๋๋
`a' ๋๋ `0'๊ณผ ๊ฐ์ ํ์ค C ๋ฌธ์ ์ด์ค์ผ์ดํ ์ํ์ค. ์ด๊ฒ์ ์ฌ์ ํ โโ์ง์๋ฉ๋๋ค
์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์ ๊ณตํ์ง๋ง ์ซ์์
๋ฐ์ดํธ ์ ํ ๋ฐ ํ ์คํธ ๋ฌธ์ ์ ํ. ๋ฐ์ดํธ ์์์ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
0b // XNUMX๋ฐ์ดํธ
-1b // 1๋นํธ ๋ฐ์ดํธ๋ก -8
255b // ๋ํ ๋ถํธ ์๋ 1๋นํธ ๋ฐ์ดํธ๋ก -8
์งง์ ์ ์ ์์๋ 16๋นํธ ๋ถํธ ์๋ ์๋์ ๋ํ๋ด๊ธฐ ์ํ ๊ฒ์ ๋๋ค. ์์
์ ์งง์ ์์๋ `s' ๋๋ `S'๊ฐ ์ถ๊ฐ๋ ์ ์ ์์์ ๋๋ค. ๋ง์ฝ ์งง์
์์๋ '0'์ผ๋ก ์์ํ๊ณ , '0x'๋ก ์์ํ๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ XNUMX์ง์๋ก ํด์๋ฉ๋๋ค.
XNUMX์ง์ ์์๋ก ํด์๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด:
-2s // ์งง์ -2
0123s // XNUMX์ง์
0x7ffs //XNUMX์ง์
INT ์ ์ ์์๋ 32๋นํธ ๋ถํธ ์๋ ์์ ๋ํ๋ด๊ธฐ ์ํ ๊ฒ์ ๋๋ค. ์ ํํ
an INT ์์๋ ์ผ๋ฐ ์ ์ ์์์ด์ง๋ง ์ ํ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋จ์ผ `l' ๋๋ `L'์ ์ถ๊ฐํฉ๋๋ค(๋ค์ ๋งํ์ง๋ง ๋ ์ด์ ์ฌ์ฉ๋์ง ์์). ํ์ง๋ง ์ฃผ์ํ์ธ์. L ์ ๋ฏธ์ฌ๋
32๋นํธ ์ ์๋ก ํด์๋๋ฉฐ 64๋นํธ ์ ์๋ก ํด์๋์ง ์์ต๋๋ค. ํผ๋์ค๋ฌ์ธ ์ ์์ต๋๋ค.
C long ์ ํ์ ๋ชจํธํ๊ฒ 32๋นํธ ๋๋ 64๋นํธ์ผ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ฒฝ์ฐ INT ์์๋ `0'์ผ๋ก ์์ํ๋ฉฐ, ์์ํ๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ XNUMX์ง์๋ก ํด์๋ฉ๋๋ค.
'0x'๋ฅผ ์ฌ์ฉํ๋ฉด XNUMX์ง์ ์์๋ก ํด์๋ฉ๋๋ค(๊ทธ๋ฌ๋ ์๋์ ๋ถํฌ๋ช ์์ ์ฐธ์กฐ).
์ ํจํ ์ INT ์์์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
-2
1234567890L
0123 // XNUMX์ง์
0x7ff // XNUMX์ง์
int64 ์ ์ ์์๋ 64๋นํธ ๋ถํธ ์๋ ์๋์ ๋ํ๋ด๊ธฐ ์ํ ๊ฒ์ ๋๋ค. ์์
์ int64 constant๋ `ll' ๋๋ `LL'์ด ์ถ๊ฐ๋ ์ ์ ์์์ ๋๋ค. ๋ง์ฝ int64
์์๋ '0'์ผ๋ก ์์ํ๊ณ , '0x'๋ก ์์ํ๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ XNUMX์ง์๋ก ํด์๋ฉ๋๋ค.
XNUMX์ง์ ์์๋ก ํด์๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด:
-2ll // ๋ถํธ ์๋ -2
0123LL // XNUMX์ง์
0x7ffLL //XNUMX์ง์
์ ํ์ ๋ถ๋ ์์์ ์์ ๋จ๋ค ๋ถ๋ ์์์ ์ ๋ํ๋ด๋ ๋ฐ ์ ํฉํฉ๋๋ค.
์ฝ XNUMX๊ฐ์ ์ ํจ ์๋ฆฟ์ ์ ๋ฐ๋๋ฅผ ๊ฐ์ง ๋ฐ์ดํฐ. ์ ํํ ๋จ๋ค ์์๋
'f' ๋๋ 'F'๊ฐ ์ถ๊ฐ๋ C ๋ถ๋ ์์์ ์์์ ๋์ผํฉ๋๋ค. ์๋ฅผ ๋ค์ด
๋ค์์ ๋ชจ๋ ํ์ฉ๋ฉ๋๋ค. ๋จ๋ค ์์ :
-2.0 ์ธต
3.14159265358979f // ์ ๋ฐ๋๊ฐ ๋ฎ์ ์๋ฆฝ๋๋ค.
1.f
์ ํ์ ๋ถ๋ ์์์ ์์ ๋๋ธ ๋ถ๋ ์์์ ์ ๋ํ๋ด๋ ๋ฐ ์ ํฉํฉ๋๋ค.
์ฝ XNUMX๊ฐ์ ์ ํจ ์๋ฆฟ์ ์ ๋ฐ๋๋ฅผ ๊ฐ์ง ๋ฐ์ดํฐ. ์ ํํ ๋๋ธ ์์๋
C ๋ถ๋ ์์์ ์์์ ๋์ผํฉ๋๋ค. ์ ํ์ 'd' ๋๋ 'D'๊ฐ ์ถ๊ฐ๋ ์ ์์ต๋๋ค. ์์ํ
์ ๋ค์์ ๋ชจ๋ ํ์ฉ๋ฉ๋๋ค. ๋๋ธ ์์ :
-2.0
3.141592653589793
1.0-20
1.d
๋ถํธ ์๋ ์ ์ ์์๋ ์ฌ์ด์ ๋ฌธ์ 'U' ๋๋ 'u'๋ฅผ ์ถ๊ฐํ์ฌ ๋ง๋ค ์ ์์ต๋๋ค.
์์ ๋ฐ ๋ชจ๋ ํํ ํฌ๊ธฐ ์ง์ ์ ๋๋ ํฌ๊ธฐ์ ๋์์ ๋ฐ๋ก
์ง์ ์. ๋ฐ๋ผ์ ์๋ฅผ ๋ค์ด 10U, 100su, 100000ul ๋๋ 1000000llu๋ผ๊ณ ๋งํ ์ ์์ต๋๋ค.
๋จ์ผ ๋ฌธ์ ์์๋ ์์๋ฐ์ดํ๋ก ๋ฌถ์ ์ ์์ต๋๋ค. ํ๋ ์ด์์ ์ํ์ค์ธ ๊ฒฝ์ฐ
๋ฌธ์๊ฐ ํฐ๋ฐ์ดํ๋ก ๋ฌถ์ธ ๊ฒฝ์ฐ ํด๋น ํด์์ ๋ค์์์ ์ ์ถํด์ผ ํฉ๋๋ค.
๋ฌธ๋งฅ. ๋ฐ์ดํฐ ์ธํธ๊ฐ netCDF ํด๋์ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์์ฑ๋ ๊ฒฝ์ฐ ์ด๋ฌํ ๋ชจ๋ ์์๋
๋ฌธ์ ๋ฐฐ์ด๋ก ํด์๋๋ฏ๋ก ์์์ ๊ฐ ๋ฌธ์๋ ๋ค์๊ณผ ๊ฐ์ด ํด์๋ฉ๋๋ค.
๋จ์ผ ๋ฌธ์๋ผ๋ฉด. ๋ฐ์ดํฐ ์ธํธ๊ฐ netCDF ํ์ฅ๋ ๊ฒฝ์ฐ ์์๋
์ ๋ฐ๋ผ ํด๋์ ๋ชจ๋ธ ๋๋ ์ค์ ๋ฌธ์์ด(์๋ ์ฐธ์กฐ)๋ก ํด์๋ฉ๋๋ค.
๋ฌธ์์ด์ด ํฌํจ๋ ์์ฑ ๋๋ ๋ณ์์ ์ ํ์ ๋๋ค.
char ์์์ ํด์์ ์ธ์ ๊ฐ๋ฅํ ASCII ๋ฒ์์ ์๋ ์์๋ผ๋ ๊ฒ์ ๋๋ค.
(' '..'~')๋ UTF-1์ 8๋ฐ์ดํธ ํ์ ์งํฉ์ผ๋ก ์ธ์ฝ๋ฉ๋๋ ๊ฒ์ผ๋ก ๊ฐ์ ํฉ๋๋ค.
US-ASCII. ๋ชจ๋ ๊ฒฝ์ฐ์ ์ผ๋ฐ์ ์ธ C ๋ฌธ์์ด ์ด์ค์ผ์ดํ ๊ท์น์
0 ~ 127. 127๋ณด๋ค ํฐ ๊ฐ์ด ํ์ฉ๋์ง๋ง ํด๋น ์ธ์ฝ๋ฉ์ ์ ์๋์ง ์์ต๋๋ค. ์ ์ํ
netCDF ํ์ฅ, char ์ ํ์ ์ฌ์ฉ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๊ณ ๋ฌธ์์ด ์ ํ์ ์ ํธํฉ๋๋ค.
์ผ๋ถ ๋ฌธ์ ์์ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
'a' // ASCII 'a'
"a" // 'a'์ ๋์ผ
"Two\nlines\n" // ๋ ๊ฐ์ ๊ฐํ ๋ฌธ์๊ฐ ํฌํจ๋ 10์ ๋ฌธ์์ด
"a bell:\007" // ASCII ๋ฒจ์ ํฌํจํ๋ ๋ฌธ์์ด
netCDF ๋ฌธ์ ๋ฐฐ์ด "a"๋ ์์๊ฐ ํ๋์ธ ๋ณ์์ ๋ง์ต๋๋ค.
์ข ๋ฃ NULL ๋ฌธ์๊ฐ ๊ฐ์ ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ฌธ์ ๋ฐฐ์ด์ XNUMX๋ฐ์ดํธ๋
์ ์ํด ์ค์ํ ๋ฌธ์์ ๋์ผ๋ก ํด์๋ฉ๋๋ค. ncdump ํ๋ก๊ทธ๋จ, ๋ค์
C ํ์ฝ. ๋ฐ๋ผ์ NULL ๋ฐ์ดํธ๋ ๋ค์์ ์ ์ธํ๊ณ ๋ฌธ์์ด์ ํฌํจ๋์ด์๋ ์ ๋ฉ๋๋ค.
๋์: ์ฌ์ฉ ๋ฐ์ดํธ XNUMX ๋ฐ์ดํธ๋ฅผ ํฌํจํ๋ ๋ฐ์ดํธ ๋ฐฐ์ด ๋์ ๋ฐ์ดํฐ ์ ํ์ ์ฌ์ฉํฉ๋๋ค.
๋ ์์๋ ๋ฌธ์ ์์์ ๊ฐ์ด ํฐ๋ฐ์ดํ๋ฅผ ์ฌ์ฉํ์ฌ ํ์๋ฉ๋๋ค. ์ด๊ฒ
๋ค์ค ๋ฌธ์ ๋ฌธ์์ด์ด ๋ค์์ ๋ํ๋ผ ์๋ ์์ผ๋ฏ๋ก ์ ์ฌ์ ๋ชจํธ์ฑ์ ๋ํ๋ ๋๋ค.
์ฐจ์ ๋ฌธ์ ๊ฐ. ๋ช ํ์ฑ์ ์ผ๋ฐ์ ์ผ๋ก ๋ฌธ๋งฅ์ ๋ฐ๋ผ ๋ฐ์ํ์ง๋ง ์ฃผ์ํด์ผ ํฉ๋๋ค.
์ง์ ํ๊ธฐ ์ํด ์ฐ์ํ ์ฌ๋ฐ๋ฅธ ์ ํ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ ๋ ฅํ์ญ์์ค. ๋ฌธ์์ด ์์๊ฐ ๊ฐ์ ๋ฉ๋๋ค.
ํญ์ UTF-8๋ก ์ธ์ฝ๋ฉ๋ฉ๋๋ค. ์ด๋ ํนํ ๋ฌธ์์ด ์์๊ฐ ์ค์ ๋ก
๋ฉํฐ๋ฐ์ดํธ UTF-8 ๋ฌธ์๋ฅผ ํฌํจํฉ๋๋ค. ํน์ ์์ `NIL`์ ๋ค์์ ๋ํ๋ด๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ธธ์ด๊ฐ XNUMX์ธ ๋ฌธ์์ด๊ณผ ๋ค๋ฅธ nil ๋ฌธ์์ด.
๋ถํฌ๋ช ํ ์์๋ ์์ 0X ๋๋ 0x๊ฐ ์ค๋ XNUMX์ง์ ์ํ์ค๋ก ํ์๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด 0xaa34ffff. ์ด๋ฌํ ์์๋ ์ฌ์ ํ ์ ์ ์์๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ
ํ์์ ๋ฐ๋ผ ์๋ฆฌ๊ฑฐ๋ ํ์ฅํ ์ ์์ต๋๋ค.
ํํฉ๋ฌผ ์์ ์
์ ํ์ด ์ฌ์ฉ์ ์ ์ ์ ํ์ธ ๋ณ์(๋๋ ์์ฑ)์ ๊ฐ์ ์ง์ ํ๋ ค๋ฉด
์์ ํ๊ธฐ๋ฒ์ ๋ก ๋ฌถ์ธ ์ผ๋ จ์ ์์๋ฅผ ํฌํจํ๋๋ก ํ์ฅ๋์์ต๋๋ค.
์ค๊ดํธ(์: "{"..."}"). ์ด๋ฌํ ์์๋ฅผ ๋ณตํฉ์์๋ผ๊ณ ํ๋ฉฐ,
๋ณตํฉ ์์๋ ์ค์ฒฉ๋ ์ ์์ต๋๋ค.
์ ํ "T(*) vlen_t"๊ฐ ์ฃผ์ด์ง๋ฉด T๋ ๋ค๋ฅธ ์์์ ๊ธฐ๋ณธ ์ ํ์ด๋ฉฐ ์ด์ ๋ํ ์์๋
๋ค์๊ณผ ๊ฐ์ด ์ง์ ํด์ผ ํฉ๋๋ค.
vlen_t var[2] = {t11,t12,...t1N}, {t21,t22,...t2m};
๊ฐ tij๋ ์ ํ T์ ์์๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
"compound cmpd_t {T1 f1; T2 f2...Tn fn}" ์ ํ์ด ์ฃผ์ด์ง๋ฉด Ti๋ ๋ค๋ฅธ ์์์ ์ ๋๋ค.
๊ธฐ๋ณธ ์ ํ, ์ด์ ๋ํ ์์๋ ๋ค์๊ณผ ๊ฐ์ด ์ง์ ํด์ผ ํฉ๋๋ค.
cmpd_t var[2] = {t11,t12,...t1N}, {t21,t22,...t2n};
๊ฐ tij๋ Ti ์ ํ์ ์์๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ํ๋๊ฐ ๋๋ฝ๋ ๊ฒฝ์ฐ
ํ๋์ ๊ธฐ๋ณธ ์ ํ์ ๋ํด ์ง์ ๋ ๊ฐ ๋๋ ๊ธฐ๋ณธ ์ฑ์ฐ๊ธฐ ๊ฐ์ ์ฌ์ฉํ์ฌ ์ค์ ๋ฉ๋๋ค.
์ค๊ดํธ ์ฌ์ฉ์ ๋ํ ์ผ๋ฐ์ ์ธ ๊ท์น์ ๋ค์์ ์ ์๋์ด ์์ต๋๋ค. ์ง์ ๋ฐ์ดํฐ ๋ชฉ๋ก ์น์ ์ ์์ด์ผ ํฉ๋๋ค.
์๋.
๋ฒ์ ์ง์ ๊ท์น
๊ทธ๋ฃน์ ์ถ๊ฐํ๋ฉด ์ ์๋ ๊ฐ์ฒด์ ์ด๋ฆ ๊ณต๊ฐ์ด ๋ ์ด์ ๋จ์ํ์ง ์์ต๋๋ค.
๋ชจ๋ ์ ํ, ์ฐจ์ ๋๋ ๋ณ์์ ์ฐธ์กฐ(์ด๋ฆ)์๋ ์ ๋ ์ ๋์ฌ๊ฐ ๋ถ์ ์ ์์ต๋๋ค.
ํน์ ์ ์ธ์ ์ง์ ํ๋ ๊ฒฝ๋ก. ๋ฐ๋ผ์ ๋๊ตฐ๊ฐ๋ ๋งํ ์ ์์ต๋๋ค
๋ณ์:
/g1/g2/t1 v1;
์ฐธ์กฐ๋๋ ์ ํ(t1)์ ๊ทธ๋ฃน g2 ๋ด์ ์ ํ์ด๋ฉฐ, ์ด๋ ๋ค์์ ๋ดํฌ๋ฉ๋๋ค.
๊ทธ๋ฃน g1. Unix ํ์ผ ๊ฒฝ๋ก์ ๋ํ ์ด ํ๊ธฐ๋ฒ์ ์ ์ฌ์ฑ์ ์๋์ ์ด๋ฉฐ,
๊ทธ๋ฃน์ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ์ ํ ํํ๋ก ๊ฐ์ฃผํ์ญ์์ค.
์ด๋ฆ์ด ์ ๋์ฌ๋ก ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ์ง์ ๋ ์ด๋ฆ์ ์ฐพ๊ธฐ ์ํด ๋ฒ์ ๊ท์น์ด ์ ์ฉ๋ฉ๋๋ค.
์ ์ธ. ํ์ฌ ์ธ ๊ฐ์ง ๊ท์น์ด ์์ต๋๋ค. ํ๋๋ ์ฐจ์, ํ๋๋ ์ ํ ๋ฐ
์ด๊ฑฐํ ์์, ๋ค๋ฅธ ๋ชจ๋ ์์.
์ ๋์ด๊ฐ ๋ถ์ง ์์ ์ฐจ์ ์ด๋ฆ์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ(๋ณ์ ์ ์ธ์์์ ๊ฐ์ด) ncgen์ด ๋จผ์
๋ฐ๋ก ์์ ์๋ ๊ทธ๋ฃน์์ ์ฐจ์์ ์ฐพ์ต๋๋ค. ์ฐพ์ ์ ์๋ ๊ฒฝ์ฐ
๊ทธ๋ฐ ๋ค์ ์ด ๊ทธ๋ฃน์ ๋๋ฌ์ธ๋ ๊ทธ๋ฃน์ ์ฐพ์ต๋๋ค. ์ด๊ฒ์ ๊ณ์ํด์
์ฐจ์์ ์ฐพ๊ฑฐ๋ ๋ ์ด์ ๊ทธ๋ฃน์ด ์์ ๋๊น์ง ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๊ทธ๋ฃนํํฉ๋๋ค.
๊ฒ์ ํ ์ ์์ต๋๋ค.
2. ํ์ ์ ์ ๋์ด๊ฐ ๋ถ์ง ์์ ์ด๋ฆ์ด๋ ์ด๊ฑฐํ ์์๊ฐ ์ฌ์ฉ๋ ๋ ncgen์ด ๊ฒ์
์ฌ์ ์ฃผ๋ฌธ ๊น์ด ์ฐ์ ๊ฒ์์ ์ฌ์ฉํ๋ ๊ทธ๋ฃน ํธ๋ฆฌ. ์ด๊ฒ์ ๋ณธ์ง์ ์ผ๋ก
cdl์์ ํ ์คํธ๋ก ์ฐธ์กฐ ์์ ์ผ์นํ๋ ์ ์ธ์ ์ฐพ์ต๋๋ค.
ํ์ผ์ด๋ฉฐ ๊ทธ๋ฃน ๊ณ์ธต ๊ตฌ์กฐ์์ "๊ฐ์ฅ ๋์" ํ์ผ์ ๋๋ค.
3. ๋ค๋ฅธ ๋ชจ๋ ์ด๋ฆ์ ๊ฒฝ์ฐ ๋ฐ๋ก ๋๋ฌ์ธ๋ ๊ทธ๋ฃน๋ง ๊ฒ์๋ฉ๋๋ค.
๋ง์ง๋ง ์ฐธ๊ณ ์ฌํญ. ์ ๋ฐฉํฅ ์ฐธ์กฐ๋ ํ์ฉ๋์ง ์์ต๋๋ค. ์ด๋ ๋ค์์ ์ง์ ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์๋ฅผ ๋ค์ด g1 ๋ฐ/๋๋ g2๊ฐ ์ ์๋๊ธฐ ์ ์ ์ด ์ฐธ์กฐ๊ฐ ๋ฐ์ํ๋ฉด /g1/g1/t2์ด ์คํจํฉ๋๋ค.
์ง์ ์ด๊ฑฐ ์์
์ด๊ฑฐํ ์์(๋ฐ์ดํฐ ๋ชฉ๋ก์์)์ ๋ํ ์ฐธ์กฐ๋ ๋์ผํ๊ธฐ ๋๋ฌธ์ ๋ชจํธํ ์ ์์ต๋๋ค.
์ด๊ฑฐ ์์ ์ด๋ฆ์ ๋ ์ด์์ ์ด๊ฑฐ์ ์ ์๋ ์ ์์ต๋๋ค. cdl ํ์ผ์ธ ๊ฒฝ์ฐ
๋ชจํธํ ์์๋ฅผ ์ง์ ํ๋ฉด ncgen์์ ์ค๋ฅ ์ ํธ๋ฅผ ๋ณด๋ ๋๋ค. ์ด๋ฌํ ์์๋ ๋ค์๊ณผ ๊ฐ์ ์ ์์ต๋๋ค.
๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
1. ์ด๊ฑฐํ ์์ ์์ ์ด๊ฑฐํ ์ด๋ฆ์ ๋ถ์ ๋๋ค.
์ : ์ด๊ฑฐํ.econst์๋ฅผ ๋ค์ด.
2. ์ฌ๋ก XNUMX์ด ์ด๊ฑฐ ์์๋ฅผ ๋ช ํํ๊ฒ ํ๋ ๋ฐ ์ถฉ๋ถํ์ง ์์ ๊ฒฝ์ฐ ๋ค์ ์ค ํ๋์ ๋๋ค.
๊ทธ๋ฃน ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ์ฌ ์ ํํ ์ด๊ฑฐ ์ ํ์ ์ง์ ํด์ผ ํฉ๋๋ค. /g1/g2/enum.econst,
์๋ฅผ ๋ค์ด.
์ด๋ฌ์ ์คํ์ Attributes
์ฑ๋ฅ ๊ด๋ จ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ํน์ํ ๊ฐ์ ์์ฑ์ ์ง์ ํ ์ ์์ต๋๋ค.
ํ์ผ ํ์ ๋ฐ ๋ณ์ ์์ฑ์ ๋ํด. ํ์ผ์ netCDF-4 ํ์ผ์ด์ด์ผ ํฉ๋๋ค.
์ ์ฉํ ์ ์์ต๋๋ค.
์ด๋ฌํ ํน์ํ ๊ฐ์ ์์ฑ์ ์ค์ ๋ก ํ์ผ์ ์ผ๋ถ๊ฐ ์๋๋ผ ๋จ์ง
CDL์์ ๋ฐ์ดํฐ์ ๊ธฐํ ์์ฑ์ ์ค์ ํ๋ ํธ๋ฆฌํ ๋ฐฉ๋ฒ
ํ์ฌ ์ง์๋๋ ํน์ ์์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค: `_Format', `_Fletcher32,
`_ChunkSizes', `_Endianness', `_DeflateLevel', `_Shuffle' ๋ฐ `_Storage'.
`_Format'์ netCDF ํ์ ๋ณํ์ ์ง์ ํ๋ ์ ์ญ ์์ฑ์ ๋๋ค. ๊ทธ ๊ฐ์
`classic', `64-bit offset', `64-bit data', `netCDF-4' ๋๋
`netCDF-4 ํด๋์ ๋ชจ๋ธ'.
๋๋จธ์ง ํน์ ์์ฑ์ ๋ชจ๋ ๋ณ์ ์์ฑ์ ๋๋ค. ๋ณธ์ง์ ์ผ๋ก ๋ชจ๋
netCDF-4 API์ ์ ์๋ ์ผ๋ถ ํด๋น `nc_def_var_XXX' ํจ์์ ๋งคํํฉ๋๋ค. ์ ์ํ
๋ณธ์ง์ ์ผ๋ก ๋ถ์ธ ์์ฑ(_Fletcher32, _Shuffle ๋ฐ _NOFILL),
true ๊ฐ์ ๋ฌธ์์ด `true' ๋๋ `1'์ ์ฌ์ฉํ๊ฑฐ๋ ์ ์ 1์ ์ฌ์ฉํ์ฌ ์ง์ ํ ์ ์์ต๋๋ค.
false ๊ฐ์ `false', `0' ๋๋ ์ ์ 0์ ์์ํฉ๋๋ค.
์ด๋ฌํ ์์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. `_Fletcher32๋ ๋ณ์์ ๋ํ `fletcher32' ์์ฑ์ ์ค์ ํฉ๋๋ค.
2. `_Endianness'๋ ์ธ์ ๋ณ์๊ฐ ์ ์ฅ๋๋์ง์ ๋ฐ๋ผ `little' ๋๋ `big'์ ๋๋ค.
์ฒ์์ผ๋ก ์์ฑ๋์์ต๋๋ค.
3. `_DeflateLevel'์ ์์ถ์ด ์๋ฃ๋ ๊ฒฝ์ฐ 0์์ 9 ์ฌ์ด์ ์ ์์ ๋๋ค.
๋ณ์์ ๋ํด ์ง์ ๋์์ต๋๋ค.
4. `_Shuffle'์ ์ ํ ํํฐ๋ฅผ ์ฌ์ฉํด์ผ ํ๋์ง ์ฌ๋ถ๋ฅผ ์ง์ ํฉ๋๋ค.
5. `_Storage'๋ `์ธ์ ' ๋๋ `์ฒญํฌ'์ ๋๋ค.
6. `_ChunkSizes'๋ ๋ณ์์ ๊ฐ ์ฐจ์์ ๋ํ ์ฒญํฌ ํฌ๊ธฐ ๋ชฉ๋ก์ ๋๋ค.
"add_offset" ๋๋ "scale_factor"์ ๊ฐ์ ์์ฑ์๋ ํน๋ณํ ์๋ฏธ๊ฐ ์์ต๋๋ค.
ncgen.ncgen. ์ด๋ฌํ ์์ฑ์ ํ์ฌ ๊ท์น์ด๋ฉฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ณ์ธต ์์์ ๋ค์์ ํตํด ์ฒ๋ฆฌ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด NCO์ ๊ฐ์ ๋ค๋ฅธ ์ ํธ๋ฆฌํฐ ํจํค์ง.
์ง์ ๋ฐ์ดํฐ ๋ชฉ๋ก
`data:` ์น์ ์์ ๋ณ์์ ๋ํ ๋ฐ์ดํฐ ๋ชฉ๋ก์ ์ง์ ํ๋ ๊ฒ์ ๋ค์ ๋ณต์กํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ ๋ชฉ๋ก์ด ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ๋ฌธ ๋ถ์๋๋๋ก ํ๊ธฐ ์ํด ๋ฐ๋ผ์ผ ํ๋ ๋ช ๊ฐ์ง ๊ท์น์ด ์์ต๋๋ค.
ncgen์ ์ํด.
์ฒซ์งธ, ์ต์์ ์์ค์ ์๋์ผ๋ก ํญ๋ชฉ ๋ชฉ๋ก์ผ๋ก ๊ฐ์ฃผ๋๋ฏ๋ก
๋ด๋ถ์ {...}. ์ฆ, ๋ณ์๊ฐ ์ค์นผ๋ผ์ด๋ฉด ๋จ์ผ ์์-
level ์์์ด๋ฉฐ ๋ณ์๊ฐ ๋ฐฐ์ด์ธ ๊ฒฝ์ฐ N๊ฐ์ ์ต์์ ์์๊ฐ ์์ต๋๋ค. ์ ์ํ
์ต์์ ๋ชฉ๋ก์ ๊ฐ ์์์๋ ๋ค์ ๊ท์น์ด ์ ์ฉ๋์ด์ผ ํฉ๋๋ค.
1. ๋ฌด์ ํ ์ฐจ์์ ์ธ์คํด์ค(์ฒซ ๋ฒ์งธ ์ฐจ์ ์ ์ธ)๋ ๋๋ฌ์ธ์ผ ํฉ๋๋ค.
ํฌ๊ธฐ๋ฅผ ์ง์ ํ๊ธฐ ์ํด {...}๋ก.
2. ๋ณตํฉ ์ธ์คํด์ค๋ {...}์ ํฌํจ๋์ด์ผ ํฉ๋๋ค.
3. ๋ณตํฉ ์ธ์คํด์ค์ ๋น ์ค์นผ๋ผ ํ๋๋ {...}์ ํฌํจ๋์ด์ผ ํฉ๋๋ค.
4. ํฌ๊ธฐ๋ฅผ ์ง์ ํ๋ ค๋ฉด vlens์ ์ธ์คํด์ค๋ฅผ {...}๋ก ๋ฌถ์ด์ผ ํฉ๋๋ค.
์์ฑ๊ณผ ๊ด๋ จ๋ ๋ฐ์ดํฐ ๋ชฉ๋ก์ ์์์ ์ผ๋ก ๋ค์ ๊ฐ์ ๋ฒกํฐ(์ฆ, ๋ชฉ๋ก)์ ๋๋ค.
์์ฑ์ ์ ํ๊ณผ ์์ ๊ท์น์ ์ผ๋์ ๋๊ณ ์ ์ฉํด์ผ ํฉ๋๋ค.
7. ์ค๊ดํธ์ ๋ค๋ฅธ ์ฌ์ฉ์ ํ์ฉ๋์ง ์์ต๋๋ค.
์ด๋ฌํ ๊ท์น์ ํ ๊ฐ์ง ๊ฒฐ๊ณผ๋ ๊ฐ ๋ฐฐ์ด์ด ํ์ ๋ฐฐ์ด์ ๊ฐ์ง ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
์ค๊ดํธ ์์. ์๋ฅผ ๋ค์ด int var(d1)(d2)...(dn)์ ๊ณ ๋ คํ์ญ์์ค. ์ฌ๊ธฐ์ d2...dn์
์ ํ ์๋. ์ด ๋ณ์์ ๋ํ ๋ฐ์ดํฐ ๋ชฉ๋ก์ ์ ์์ ๋จ์ผ ๋ชฉ๋ก์ด์ด์ผ ํฉ๋๋ค.
์ ์์ ๊ฐ์๋ D=d1*d2*...dn ๊ฐ ์ดํ์ ๋๋ค. ๋ชฉ๋ก์ด ์ ์ ์ ์์ต๋๋ค.
D๋ณด๋ค, ์ด ๊ฒฝ์ฐ ์ฑ์ฐ๊ธฐ ๊ฐ์ด ๋ชฉ๋ก์ ์ฑ์ฐ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์์ฑ ๋ฐ์ดํฐ ๋ชฉ๋ก์ ๋ํ ๊ท์น 6์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ์ ์ ํ์ธ ๊ฒฝ์ฐ
attribute๋ ๋ณตํฉ(๋๋ vlen) ์ ํ์ด๋ฉฐ ๋ชฉ๋ก์ ํญ๋ชฉ ์๊ฐ ํ๋์ด๋ฉด
๊ทธ๋ฐ ๋ค์ ๋ณตํฉ ์ธ์คํด์ค๋ ์ค๊ดํธ๋ก ๋ฌถ์ด์ผ ํฉ๋๋ค.
์ง์ ์บ๋ฆญํฐ ๋ฐ์ดํฐ ๋ชฉ๋ก
char ์ ํ์ ๋ณ์์ ๋ํ ๋ฐ์ดํฐ ๋ชฉ๋ก์ ์ง์ ํ๋ ๊ฒ๋ ์ฝ๊ฐ ๋ณต์กํฉ๋๋ค. ๊ณ ๋ คํ๋ค
์
์น์: u=๋ฌด์ ํ; d1=1; d2=2; d3=3;
d4=4; d5=5; u2=UNLIMITED;
๋ณ์: char var(d4,d5);
๋ฐ์ดํฐ ๋ชฉ๋ก: var="1", "two", "three";
์ฑ์ธ var ์์๊ฐ 5๊ฐ ์๊ณ (d4 X d1) ๊ธธ์ด๊ฐ 3, XNUMX์ธ ์ธ ๊ฐ์ ๋ฌธ์์ด์ด ์์ต๋๋ค.
5. ๋ฌธ์์ด์ ๋ฌธ์๋ฅผ XNUMX๊ฐ์ ์์์ ์ด๋ป๊ฒ ํ ๋นํฉ๋๊น?
์ด๋ ์๋ ncgen(ncgen3)์ ๋ชจ๋ฐฉํ๋ ๊ฒ์ด ๋ฐ๋์งํ๊ธฐ ๋๋ฌธ์ ์ด๋ ค์ด ์์ ์ ๋๋ค. ๊ทธ๋งํผ
ํต์ฌ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋ ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. ์ฐจ์ ์ธํธ D1..Dn์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ฌ๊ธฐ์ D1์ ์ ํ์ ์ผ๋ก Unlimited์ผ ์ ์์ต๋๋ค.
์น์. Di์ ํฌ๊ธฐ๋ ๋ชจ๋ ์๋ ค์ ธ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค(๋ฌด์ ํ ํฌํจ).
์น์).
2. ์ผ๋ จ์ ๋ฌธ์์ด ๋๋ ๋ฌธ์ ์์ C1..Cm์ด ์ฃผ์ด์ง๋ฉด ์ฐ๋ฆฌ์ ๋ชฉํ๋ ๋ค์์ ๊ตฌ์ฑํ๋ ๊ฒ์ ๋๋ค.
๊ธธ์ด๊ฐ D1์์ Dn๊น์ง์ ์ธ์ ์ธ ๋จ์ผ ๋ฌธ์์ด์ ๋๋ค. ์ฐธ๊ณ
์ด ์๊ณ ๋ฆฌ์ฆ์์ ๋ฌธ์ ์์๋ ํฌ๊ธฐ 1์ ๋ฌธ์์ด๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
3. ๊ตฌ์ฑ Dx = D1์์ D(n-1)๊น์ง์ ์ธ์ .
4. ๊ฐ ์์ Ci์ ๋ํด ๊ธธ์ด๊ฐ ๋ค์์ ๋ฐฐ์๊ฐ ๋๋๋ก ํ์์ ๋ฐ๋ผ ์ฑ์ฐ๊ธฐ ๋ฌธ์๋ฅผ ์ถ๊ฐํฉ๋๋ค.
NS.
5. ์์ ๋ C1..Cm์ ์ฐ๊ฒฐํ์ฌ ๋ฌธ์์ด S๋ฅผ ์์ฑํฉ๋๋ค.
6. ๊ธธ์ด๊ฐ Dn์ ๋ฐฐ์๊ฐ ๋๋๋ก S์ ์ฑ์ฐ๊ธฐ ๋ฌธ์๋ฅผ ์ถ๊ฐํฉ๋๋ค.
8. S๊ฐ Dx * Dn๋ณด๋ค ๊ธธ๋ฉด ์๋ฅด๊ณ ๊ฒฝ๊ณ ๋ฅผ ์์ฑํฉ๋๋ค.
์ธ ๊ฐ์ง ๋ค๋ฅธ ์ฐธ๊ณ ์ฌ๋ก๊ฐ ์์ต๋๋ค.
1. ๋ฌด์ ํ์ ๋จ์ผ ์ฐจ์๋ง ์๋ ๊ฒฝ์ฐ ๋ชจ๋ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฐ๊ฒฐ ๋ฐ ์ฑ์ฐ๊ธฐ ๋ฌธ์๊ฐ ๊ฒฐ๊ณผ ๋ฌธ์์ด์ ๋์ ์ถ๊ฐ๋์ด
๊ธธ์ด๋ ๋ฌด์ ํ ์ฐจ์์ ๊ธธ์ด์ ๋๋ค. ๊ธธ์ด๊ฐ ์๊ฐ๋ณด๋ค ํฌ๋ฉด
ํฌ๊ธฐ๊ฐ ๋ฌด์ ํ์ธ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ์ ํจ๊ป ์๋ฆฝ๋๋ค.
2. ๋ฌธ์ํ์ด vlen์ธ ๊ฒฝ์ฐ ์๋ฅผ ๋ค์ด "char(*) vlen_t". ์ฐ๋ฆฌ๋ ๋จ์ํ
์ฑ์ฐ์ง ์๊ณ ๋ชจ๋ ์์๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค.
3. ๋ฌธ์ ์ ํ ์์ฑ์ ๊ฒฝ์ฐ ๋จ์ํ ๋ชจ๋ ์์๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค.
netcdf-4์์ ์ฒซ ๋ฒ์งธ ์ด์ธ์ ์ฐจ์์ ๋ฌด์ ํ์ผ ์ ์์ต๋๋ค. ๋ฌผ๋ก ๊ท์ ๋๋ก
์์์ ๋ด๋ถ ๋ฌด์ ํ โโ์ธ์คํด์ค๋ {...}๋ก ๊ตฌ๋ถ๋์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด.
๋ณ์: char var(u,u2);
๋ฐ์ดํฐ ๋ชฉ๋ก: var={"1", "๋"}, {"์ "};
์ด ๊ฒฝ์ฐ u๋ 2์ ์ ํจ ๊ธธ์ด๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค. uXNUMX์ ๊ฐ ์ธ์คํด์ค ๋ด์์
์์ ๊ท์น์ด ์ ์ฉ๋์ด ์ด๋ก ์ด์ด์ง๋๋ค.
๋ฐ์ดํฐ ๋ชฉ๋ก: var={"1","t","w","o"}, {"t","h","r","e","e"};
u2์ ์ ํจ ํฌ๊ธฐ๋ ๋ ์ธ์คํด์ค ๊ธธ์ด(์ด ๊ฒฝ์ฐ XNUMX๊ฐ)์ ์ต๋๊ฐ์ด ๋ฉ๋๋ค.
์ด๊ฒ์ ์์ฑํ๊ธฐ ์ํด ๋ ์งง์ ๊ฒ์ด ํจ๋ฉ๋ฉ๋๋ค.
๋ฐ์ดํฐ ๋ชฉ๋ก: var={"1","t","w","o","\0"}, {"t","h","r","e","e"};
ํจ์ฌ ๋ ๋ณต์กํ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด ๋ณด์ญ์์ค.
๋ณ์: char var(u,u2,u3);
๋ฐ์ดํฐ ๋ชฉ๋ก: var={{"1", "๋"}}, {{"์ "},{"๋ท","xy"}};
์ด ๊ฒฝ์ฐ u๋ ๋ค์ 2์ ์ ํจ ๊ธธ์ด๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค. uXNUMX ์น์๋
ํฌ๊ธฐ = ์ต๋(1,2) = 2; u2์ ๊ฐ ์ธ์คํด์ค ๋ด์์ ์์ ๊ท์น์ด ์ ์ฉ๋์ด
์ด.
๋ฐ์ดํฐ ๋ชฉ๋ก: var={{"1","t","w","o"}}, {{"t","h","r","e","e"},{"f","o","u","r","x","y"}};
u3์ ์ ํจ ํฌ๊ธฐ๋ ๋ ์ธ์คํด์ค ๊ธธ์ด์ ์ต๋๊ฐ์ด ๋ฉ๋๋ค(์ด ๊ฒฝ์ฐ XNUMX๊ฐ).
์ด๊ฒ์ ์์ฑํ๊ธฐ ์ํด ๋ ์งง์ ๊ฒ์ด ์ฑ์์ง ๊ฒ์ ๋๋ค.
๋ฐ์ดํฐ ๋ชฉ๋ก: var={{"1","t","w","o"," "," "}}, {{"t","h","r","e","e "," "},{"f","o","u","r","x","y"}};
๊ทธ๋ฌ๋ u2์ ์ฒซ ๋ฒ์งธ ์ธ์คํด์ค๋ u2์ ์ต๋ ๊ธธ์ด๋ณด๋ค ์์ผ๋ฏ๋ก
u2์ ๋ค๋ฅธ ์ธ์คํด์ค์ ๋ํ ํ๋ฌ๋ฅผ ์ถ๊ฐํ์ฌ ์ด๋ฅผ ์์ฑํฉ๋๋ค.
๋ฐ์ดํฐ ๋ชฉ๋ก: var={{"1","t","w","o"," "," "},{" "," "," "," "," "," "}}, {{"t","h","r","e","e"," "},{"f","o","u","r","x","y"}};
onworks.net ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ncgen ์จ๋ผ์ธ ์ฌ์ฉ