17 ๋ถ„ ์†Œ์š”

๐Ÿ‘จโ€๐Ÿ’ป ETCCDI Climate Change Indice ์ •๋ฆฌ

1. ETCCDI

Alt text โ€œExpert Team on Climate Change Detection and Indicesโ€์˜ ์•ฝ์–ด๋กœ, ๊ธฐํ›„ ๋ณ€ํ™” ๊ฐ์ง€ ๋ฐ ์ง€ํ‘œ์— ๊ด€ํ•œ ์ „๋ฌธ ํŒ€. ETCCDI๋Š” ์„ธ๊ณ„ ๊ธฐ์ƒ ๊ธฐ๊ตฌ(WMO)์™€ ์„ธ๊ณ„ ๊ธฐํ›„ ์—ฐ๊ตฌ ํ”„๋กœ๊ทธ๋žจ(WCRP)์˜ ์ผํ™˜์œผ๋กœ ํ™œ๋™ํ•˜๋Š” ๊ตญ์ œ์ ์ธ ์—ฐ๊ตฌ ๊ทธ๋ฃน์ž„

2. ETCCDI Climate Change Indice

CCl/CLIVAR Working Group (WG)๋Š” ETCCDI Climate Change Indice์— ๋Œ€ํ•œ 40๊ฐœ์˜ ์ง€์ˆ˜๋ฅผ ์Šน์ธํ•˜์˜€๋‹ค

์ดํ›„ The joint CCl/CLIVAR/JCOMM Expert Team์ด ๊ทน์น˜์‚ฌ์ƒ์„ ์ •๋Ÿ‰ํ™” ํ•˜๊ธฐ์œ„ํ•ด โ€œGuidelines on Analysis of extremes in a changing climate in support of informed decisions for adaptation, 2009โ€๋ฅผ ์ œ์‹œ, ๊ฐ•์šฐ์™€ ๊ธฐ์˜จ์— ๊ด€ํ•˜์—ฌ ๊ฐ๊ฐ 11๊ฐœ, 16๊ฐœ๋กœ ๊ตฌ์„ฑ๋œ 27๊ฐœ์˜ ์ง€์ˆ˜๋ฅผ ์ œ์‹œํ•˜์˜€๋‹ค. ์ง€์ˆ˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ ETCCDI ๋ฉ”๋‰ด์–ผ์„ ์ฐธ๊ณ ํ•œ๋‹ค.

3. ETCCDI Climate Change Indice์˜ ๋„์ž… ํ•„์š”์„ฑ

Alt text

๊ธฐํ›„ ๋ณ€ํ™”๋Š” ๊ธฐํ›„์˜ ํ‰๊ท ๊ฐ’, ๋ณ€๋™์„ฑ, ๊ทน๊ฐ’, ๊ธฐํ›„ ์‚ฌ๊ฑด์˜ ๋นˆ๋„ ๋ฐ ๊ฐ•๋„ ๋“ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐํ›„ ๋ณ€ํ™”์˜ ์˜ํ–ฅ์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ธฐํ›„ ๋ณ€ํ™”์˜ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์š”์ธ์„ ์ •๋Ÿ‰ํ™” ํ•  ์ˆ˜ ์žˆ๋Š” ์ง€ํ‘œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ด๋Ÿฌํ•œ ์ง€ํ‘œ๋ฅผ ETCCDI Climate Change Indice๋ผ๊ณ  ํ•œ๋‹ค.

4. ETCCDI Climate Change Indice์˜ ์ข…๋ฅ˜

๋ฉ”๋‰ด์–ผ์˜ APPENDIX A: List of ETCCDMI core Climate Indices์„ ๋”ฐ๋ฅธ๋‹ค

ID Indicator name Definitions UNITS
FD0 Frost days Annual count when TN(daily minimum)<0ยบC Days
SU25 Summer days Annual count when TX(daily maximum)>25ยบC Days
ID0 Ice days Annual count when TX(daily maximum)<0ยบC Days
TR20 Tropical nights Annual count when TN(daily minimum)>20ยบC Days
GSL Growing season Length Annual (1st Jan to 31st Dec in NH, 1st July to 30th June in SH) count between first span of at least 6 days with TG>5ยบC and first span after July 1 (January 1 in SH) of 6 days with TG<5ยบC Days
TXx Max Tmax Monthly maximum value of daily maximum temp ยบC
TNx Max Tmin Monthly maximum value of daily minimum temp ยบC
TXn Min Tmax Monthly minimum value of daily maximum temp ยบC
TNn Min Tmin Monthly minimum value of daily minimum temp ยบC
TN10p Cool nights Percentage of days when TN<10th percentile Days
TX10p Cool days Percentage of days when TX<10th percentile Days
TN90p Warm nights Percentage of days when TN>90th percentile Days
TX90p Warm days Percentage of days when TX>90th percentile Days
WSDI Warm spell duration indicator Annual count of days with at least 6 consecutive days when TX>90th percentile Days
CSDI Cold spell duration indicator Annual count of days with at least 6 consecutive days when TN<10th percentile Days
DTR Diurnal temperature range Monthly mean difference between TX and TN ยบC
RX1day Max 1-day precipitation amount Monthly maximum 1-day precipitation Mm
Rx5day Max 5-day precipitation amount Monthly maximum consecutive 5-day precipitation Mm
SDII Simple daily intensity index Annual total precipitation divided by the number of wet days (defined as PRCP>=1.0mm) in the year Mm/day
R10 Number of heavy precipitation days Annual count of days when PRCP>=10mm Days
R20 Number of very heavy precipitation days Annual count of days when PRCP>=20mm Days
Rnn Number of days above nn mm Annual count of days when PRCP>=nn mm, nn is user defined threshold Days
CDD Consecutive dry days Maximum number of consecutive days with RR<1mm Days
CWD Consecutive wet days Maximum number of consecutive days with RR>=1mm Days
R95p Very wet days Annual total PRCP when RR>95th percentile Mm
R99p Extremely wet days Annual total PRCP when RR>99th percentile mm
PRCPTOT Annual total wet-day precipitation Annual total PRCP in wet days (RR>=1mm) mm

5. RClimDex๋ฅผ ์‚ฌ์šฉํ•œ ETCCDI Climate Change Indice์˜ ๊ณ„์‚ฐ ๋ฐฉ๋ฒ•

5.1. RClimDex

  • RClimDex๋Š” R์„ ์ด์šฉํ•œ ETCCDI Climate Change Indice ๊ณ„์‚ฐ ํŒจํ‚ค์ง€์ด๋‹ค. RClimDex๋Š” ๊ธฐํ›„ ๋ณ€ํ™” ์ง€ํ‘œ๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•œ R ํŒจํ‚ค์ง€๋กœ, ๊ธฐํ›„ ๋ณ€ํ™” ์ง€ํ‘œ๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•œ R ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค. RClimDex

  • Python์—์„œ RClimDex๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด์‹๋ฒ„์ „์ธ pyclimdex๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. pyclimdex๋Š” RClimDex์˜ R ํ•จ์ˆ˜๋ฅผ Python์œผ๋กœ ํฌํŒ…ํ•œ ๊ฒƒ์ด๋‹ค. pyclimdex

5.2. ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํ˜•์‹

  • ์ž…๋ ฅ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹์€ ๋ฉ”๋‰ด์–ผ์˜ APPENDIX B: Input Data Format์„ ๋”ฐ๋ฅธ๋‹ค.

  • ์ฝ๊ฑฐ๋‚˜ ์“ฐ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ ํŒŒ์ผ์€ ๋ชฉ๋ก ํ˜•์‹์ž…๋‹ˆ๋‹ค. ๋‹จ, โ€˜ํ’ˆ์งˆ ๊ด€๋ฆฌโ€™ ๋‹จ๊ณ„์—์„œ ์ฒ˜๋ฆฌ๋˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์€ ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค. ์ด ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์—๋Š” ๋ช‡ ๊ฐ€์ง€ ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค:

  1. ASCII ํ…์ŠคํŠธ ํŒŒ์ผ
  2. ๋‹ค์Œ ์ˆœ์„œ์˜ ์—ด: ์—ฐ๋„, ์›”, ์ผ, PRCP, TMAX, TMIN. (์ฐธ๊ณ : PRCP ๋‹จ์œ„ = ๋ฐ€๋ฆฌ๋ฏธํ„ฐ, ์˜จ๋„ ๋‹จ์œ„ = ์„ญ์”จ).
  3. ์œ„์— ์„ค๋ช…๋œ ํ˜•์‹์€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ๊ฐ ์š”์†Œ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„).
  4. ๋ฐ์ดํ„ฐ ๊ธฐ๋ก์˜ ๊ฒฝ์šฐ ๋ˆ„๋ฝ๋œ ๋ฐ์ดํ„ฐ๋Š” -99.9๋กœ ์ฝ”๋”ฉํ•ด์•ผ ํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ ๊ธฐ๋ก์€ ๋‹ฌ๋ ฅ ๋‚ ์งœ ์ˆœ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ˆ„๋ฝ๋œ ๋‚ ์งœ๋Š” ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ์‹œ
1915 01 01 0.0000 -1.1095 -10.4922
1915 01 02 0.0306 -2.5678 -11.8757
1915 01 03 0.0000 -5.6643 -13.6188

6. RClimDex๋ฅผ ์‚ฌ์šฉํ•œ ETCCDI Climate Change Indice ๊ณ„์‚ฐ

6.1. ๋ถ„์„๋Œ€์ƒ ์ง€์—ญ ์„ค์ •

  • ๊ธฐํ›„๋ณ€ํ™”์—์žˆ์–ด ๊ทนํ•œ์ง€์ˆ˜๋Š” ๋†์—…์— ํฐ ์˜ํ–ฅ์„ ๋ผ์น ๊ฒƒ์œผ๋กœ ์‚ฌ๋ฃŒ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋†์—…์ƒ์‚ฐ๋Ÿ‰์ด ๋†’์€ ์ง€์—ญ์ธ ๊ฒฝ์ƒ๋„๋ฅผ ๋ถ„์„๋Œ€์ƒ ์ง€์—ญ์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.

Alt text

6.2. ๋ถ„์„๋Œ€์ƒ ๊ธฐ๊ฐ„ ์„ค์ •

  • 1990๋…„๋ถ€ํ„ฐ 2020๋…„๊นŒ์ง€์˜ ๊ธฐ๊ฐ„์„ ๋ถ„์„๋Œ€์ƒ ๊ธฐ๊ฐ„์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.

6.3. ๋ฐ์ดํ„ฐ ๊ตฌ์ถ•

  • ๊ธฐ์ƒ๋ฐ์ดํ„ฐ๋Š” ASOS๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ASOS๋ฐ์ดํ„ฐ๋Š” ๊ธฐ์ƒ์ฒญ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ณต๊ณต๋ฐ์ดํ„ฐ์ด๋‹ค. Link
  • asos ๋ฐ์ดํ„ฐ๋Š” 10๋…„๊ฐ„ ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ๋”ฐ๋ผ์„œ 1990๋…„๋ถ€ํ„ฐ 2020๋…„๊นŒ์ง€์˜ 30๋…„๊ฐ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 3๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด๋ฐ›์•„์•ผ ํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋“ค์„ ๋‹จ์ผ ํด๋”์— ์ €์žฅํ•˜๊ณ  ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ๋‹จ ํด๋”๋‚ด ์ฒ˜๋ฆฌํ•  ๋ฐ์ดํ„ฐ ์™ธ์— ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์–ด์•ผ ํ•œ๋‹ค.(glob โ€˜*.csvโ€™ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ)
import pandas as pd
import glob

#set options
startDate = '1990-01-01'
endDate = '2019-12-31'

if __name__ == '__main__':
    
    # load data
    dataList = [pd.read_csv(data,encoding='euc-kr') for data in glob.glob('*.csv')]
    dataSet = pd.concat(dataList, axis=0, ignore_index=True)
    #preprocessing
    dataSet[ '์ผ๊ฐ•์ˆ˜๋Ÿ‰(mm)'].fillna(0, inplace=True)
    for col in ['์ตœ์ €๊ธฐ์˜จ(ยฐC)', '์ตœ๊ณ ๊ธฐ์˜จ(ยฐC)', '์ผ๊ฐ•์ˆ˜๋Ÿ‰(mm)']:
        dataSet[col].fillna(method='bfill', inplace=True)
    print('NaN ๊ฐ’ ๊ฐœ์ˆ˜: ', dataSet.isna().sum().sum())
    dataSet.drop_duplicates(inplace=True,subset=['์ง€์ ','์ง€์ ๋ช…','์ผ์‹œ'])
    dataSet['์ผ์‹œ']=pd.to_datetime(dataSet['์ผ์‹œ'])
    dataSet['Y'] = dataSet['์ผ์‹œ'].dt.year
    dataSet['M'] = dataSet['์ผ์‹œ'].dt.month.astype(str).apply(lambda x: x.zfill(2))
    dataSet['D'] = dataSet['์ผ์‹œ'].dt.day.astype(str).apply(lambda x: x.zfill(2))
    dataSet['StaID']=dataSet['์ง€์ '].astype(str)+dataSet['์ง€์ ๋ช…']
    dataSet.sort_values(by=['์ผ์‹œ'], inplace=True)
    dataSet = dataSet[(dataSet['์ผ์‹œ'] >= startDate) & (dataSet['์ผ์‹œ'] <= endDate)]
    dataSet.drop(['์ง€์ ', '์ง€์ ๋ช…', '์ผ์‹œ'], axis=1, inplace=True)
    dataSet=dataSet[['StaID','Y','M','D','์ผ๊ฐ•์ˆ˜๋Ÿ‰(mm)','์ตœ๊ณ ๊ธฐ์˜จ(ยฐC)','์ตœ์ €๊ธฐ์˜จ(ยฐC)']]
    print('์ถœ๋ ฅ๋ฐ์ดํ„ฐ ํ˜•์‹\n', dataSet.iloc[0])
    #save with station ID
    for station in dataSet['StaID'].unique():
        #get standard dev for ๊ธฐ์˜จ
        tempDev=max([dataSet.loc[dataSet['StaID']==station, '์ตœ๊ณ ๊ธฐ์˜จ(ยฐC)'].std(), dataSet.loc[dataSet['StaID']==station, '์ตœ์ €๊ธฐ์˜จ(ยฐC)'].std()])
        #get max prcp
        prcpMax=dataSet.loc[dataSet['StaID']==station, '์ผ๊ฐ•์ˆ˜๋Ÿ‰(mm)'].max()
        dataSet[dataSet['StaID']==station].drop(['StaID'], axis=1).to_csv(f'{station}_pM{prcpMax}_tD{tempDev}.csv', index=False)
        print(f'{station}.txt saved')

6.4. RClimDex ์‹คํ–‰ ๋ฐ ๋ถ„์„

Alt text

๊ฐ•์šฐ์ง€ํ‘œ

  • RX1/RX5: ์šธ๋ฆ‰์ง€์—ญ ๋ฐ ๊ฑฐ์ฐฝ๊ณผ ํ•จ์–‘๋ถ€๊ทผ์—์„œ SLOPE์˜ ์ƒ์Šน์ด ํ™•์ธ๋จ, ๋‚ด๋ฅ™์ง€์—ญ์—์„œ ์•ฝํ•œ ์ƒ์Šน์„ ๋ณด์ž„.

  • R10/R20: ์šธ๋ฆ‰์ง€์—ญ์—์„œ SLOPE๊ฐ€ ์ƒ์Šนํ•˜๋ฉฐ ๋‚ด๋ฅ™์ง€์—ญ์—์„œ๋Š” SLOPE์˜ ํฐ ๋ณ€ํ™”๊ฐ€ ์—†๊ฑฐ๋‚˜ ์•ฝํ•œ ํ•˜๋ฝ์„ ๋ณด์ž„.

  • PRCPTOT: ๋‚ด๋ฅ™์ง€์—ญ์—์„œ์˜ SLOPE๋Š” ๋Œ€์ฒด์ ์œผ๋กœ ํ•˜๊ฐ•ํ•˜๋Š” ์ƒํ™ฉ์œผ๋กœ ๊ฐ•์šฐ ์ด๋Ÿ‰์˜ ๊ฐ์†Œ๊ฐ€ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Œ. ์šธ๋ฆ‰์ง€์—ญ๊ณผ ํ•ด์•ˆ์ง€์—ญ์˜ ๊ฒฝ์šฐ SLOPE๊ฐ€ ์ƒ์Šนํ•˜์—ฌ ๋ณ€ํ™”ํ•˜๋Š” ํ•ด์•ˆ ๊ธฐํ›„๊ฐ€ ๊ฐ•์šฐ๋Ÿ‰์„ ๋†’์˜€์Œ์„ ์œ ์ถ” ํ•  ์ˆ˜ ์žˆ์Œ.

  • ์ „์ฒด์ ์œผ๋กœ ์ถ”์„ธ์„ ์€ 1990๋…„ ๋ถ€ํ„ฐ 2005๋…„ ๊นŒ์ง€ ์ƒ์Šน์„ธ๋ฅผ ๋ณด์˜€์œผ๋ฉฐ ์ดํ›„ ๊ฐ์†Œํ•˜๋Š” ์–‘์ƒ์„ ๋ณด์ž„, ์›”๊ฐ„ ๊ฐ•์šฐ์˜ ์ตœ๋Œ€ ๊ฐ’์€ ์ƒ์Šนํ•˜๋‚˜ ์—ฐ๊ฐ„ ๋‚ด๋ฅ™ ์ง€์—ญ ๊ฐ•์šฐ๋Ÿ‰์€ ๊ฐ์†Œํ•˜๋ฉฐ ์šธ๋ฆ‰ ๋ฐ ํ•ด์•ˆ์ง€์—ญ์—์„œ ๊ฐ•์šฐ๋Ÿ‰SLOPE๋Š” ์ƒ์Šนํ•จ.

์˜จ๋„์ง€ํ‘œ

  • FD0: ์šธ์ง„ ์ง€์—ญ์„ ์ œ์™ธํ•œ ๋Œ€๋ถ€๋ถ„์˜ ์ง€์—ญ์—์„œ SLOPE๊ฐ€ ํ•˜๋ฝ์„ธ๋ฅผ ๋ณด์ž„.

  • SU25: ๋ชจ๋“ ์ง€์—ญ์—์„œ SLOPE๊ฐ€ ์ƒ์Šนํ•˜๋ฉฐ ์˜๋•์ง€์—ญ์—์„œ SLOPE์˜ ์ƒ์Šน์ด ๊ฐ€์žฅ ํผ.

  • TXx: ๋ชจ๋“ ์ง€์—ญ์—์„œ SLOPE๊ฐ€ ์•ฝ๊ฐ„ ์ƒ์Šนํ•˜๋ฉฐ ์˜๋•์ง€์—ญ์—์„œ SLOPE์˜ ์ƒ์Šน์ด ๊ฐ€์žฅ ํผ.

  • TNn: ๊ฑฐ์˜ ๋™์ผํ•œ ๋น„์œจ๋กœ ๊ฐ์†Œํ•˜๋Š” ์ง€์—ญ๊ณผ ์ƒ์Šนํ•˜๋Š” ์ง€์—ญ์ด ์žˆ์œผ๋‚˜. ์ตœ๋Œ€ SLOPE์˜ ๋ณ€ํ™”์œจ์€ ๋Œ€์ฒด๋กœ ์ƒ์Šนํ•จ(๊น€์ฒœ).

  • ์ „์ฒด์ ์œผ๋กœ ์ถ”์„ธ์„ ์€ 0๋„ ์ดํ•˜ ์˜จ๋„ ์ง€ํ‘œ์ธ FD0๋ฅผ ์ œ์™ธํ•˜๊ณ  ์ƒ์Šน์„ ๋ณด์ด๊ณ  ์žˆ์Œ์œผ๋กœ ๊ธฐํ›„๋ณ€ํ™”๋กœ ์ธํ•œ ์˜จ๋„์˜ ์ „๋ฐ˜์ ์ธ ์ƒ์Šน์ด ์žˆ์Œ์„ ์œ ์ถ” ๊ฐ€๋Šฅํ•จ. ํ•ด์•ˆ์ง€์—ญ์—์„œ๋Š” ์˜๋•๊ณผ ์šธ์ง„, ๋‚ด๋ฅ™์ง€์—ญ์—์„œ๋Š” ์ƒ์ฃผ์™€ ๊น€์ฒœ์ง€์—ญ์—์„œ ๊ทธ ๋ณ€ํ™”์œจ์ด ํฌ๋‹ค๋Š”๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Œ.

ํƒœ๊ทธ: ,

์นดํ…Œ๊ณ ๋ฆฌ: , ,

์—…๋ฐ์ดํŠธ:

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ