Arctic Trends

This is going to be a detailed foray into the significant warming trend found above 75N latitude.  For starters, an overview of sectors represented in the data.  Number of sectors, and temperature use the scale on the left side.  Longitude and latitude are tied to the scale on the right.  Something interesting happened in 1999 (yes, I thought it was ’98 at first glance).

## The arctic looks interesting, so track average Lat & Lon by year
awk '$1>=75{Year=$3;\
      Lat[Year]+=$1; Lon[Year]+=$2; Temp[Year]+=$4; N[Year]++;\
     }\
     END{print "Year Lat Lon Temp N";\
         for (Y in Temp){\
            print Y,Lat[Y]/N[Y],Lon[Y]/N[Y],Temp[Y]/N[Y],N[Y];\
         }\
     }' ${H}/TAvg_1x1.txt | sort -n > ${H}/ArcticAvgs_data.txt

Stations above 75N latitude:

wget ftp://ftp.ncdc.noaa.gov/pub/data/ghcn/daily/ghcnd-stations.txt
awk '$2>75{print}' ghcnd-stations.txt
CA002400300 82.5200 -62.2800 30.0 ALERT
CA002400305 82.5000 -62.3300 65.0 ALERT CLIMATE GSN 71355
CA002400306 82.5000 -62.3300 65.0 ALERT UA
CA002401200 79.9800 -85.9300 10.0 EUREKA GSN 71917
CA002402346 76.4200 -82.9000 45.0 GRISE FIORD
CA002402600 78.7800 -103.5300 25.0 ISACHSEN
CA002402604 78.7900 -103.5500 58.0 ISACHSEN (AUT) GSN 71074
CA002403450 75.3700 -105.7200 15.0 REA POINT
CA002502700 76.2300 -119.3300 12.0 MOULD BAY A
CA00250M001 76.2400 -119.3500 2.0 MOULD BAY CS GSN 71989
CAW00091004 80.0000 -113.0000 -999.9 ICE SKATE B
GL000004320 76.7700 -18.6700 12.0 DANMARKSHAVN GSN 04320
GLW00017503 76.9833 -56.0667 -999.9 CAMP TUTO SITE 2
GLW00017602 76.5500 -68.8167 -999.9 THULE
GLW00017605 76.5167 -68.8333 -999.9 THULE OP SITE
GLW00017607 77.0000 -56.0833 -999.9 ICECAP
GLW00017610 77.2333 -62.3333 -999.9 THULE MILE 60 SIERRA
GLW00017611 76.4167 -68.3167 -999.9 CAMP TUTO ICECAP STN
GLW00017612 76.4167 -68.2500 -999.9 CAMP TUTO ICECAP ST
GLW00017614 76.4000 -68.1333 -999.9 CAMP TUTO ICECAP STN
GLW00017615 77.1667 -61.1333 -999.9 CAMP CENTURY
GLW00017616 76.4667 -68.6667 -999.9 CAMP TUTO WEST ASC S
GLW00017617 76.3833 -67.9167 -999.9 CAMP TUTO EAST ASC S
RS000020046 80.6000 58.0000 22.0 POLAR_GMO_IM.E.T.KRENKELJ GSN 20046
RS000020049 81.8000 57.9700 51.0 RUDOLF ISLAND 20049
RS000020069 79.5000 77.0000 11.0 OSTROV_VIZE GSN 20069
RS000020087 79.5000 91.1300 7.0 DOMASCHNIY ISLAND (GOLOMYANNYI GSN 20087
RS000020274 77.5000 82.2300 9.0 UYEDINENIYA ISLAND 20274
RS000020292 77.7200 104.2800 13.0 CHELUSKIN,AMSG (IM. E.K.FEDORO GSN 20292
RS000020353 77.0000 68.6000 8.0 MYS_ZELANIJA 20353
RS000020357 76.2000 63.6000 9.0 RUSSKAJ-GAVAN' 20357
RS000020594 76.2000 99.0700 11.0 UST'-TAYMYRA (TAYMYR LAKE) 20594
RS000021358 76.2000 152.8000 16.0 OSTROV_ZOHOVA 21358
RS000021432 76.0000 137.9000 10.0 KOTELNY ISLAND GSN 21432
SV000001008 78.2500 15.4700 29.0 SVALBARD LUFTHAVN GSN 01008
SV000020107 78.1000 14.3000 49.0 BARENCBURG 20107

Which ones have temperature data?

#!/bin/bash

# wget ftp://ftp.ncdc.noaa.gov/pub/data/ghcn/daily/ghcnd-stations.txt
# awk '$2>75{print}' ghcnd-stations.txt
H=`pwd`
cd ftp.ncdc.noaa.gov/pub/data/ghcn/daily
stations=(`awk '$2>75{print $1}' ghcnd-stations.txt`)

## This requires having downloaded & unpacked 1.7Gb
# wget -Nr --exclude-directories=grid ftp://ftp.ncdc.noaa.gov/pub/data/ghcn/daily/ghcnd_all.tar.gz
Tstations=()
for S in ${stations[@]} ; do
   Tstations=(${Tstations[@]} `awk '$1~/TMAX/{print FILENAME; exit}' all/${S}.dly`)
done

## Extract & compose annual temperatures for each station
awk '{ID=substr($1,1,11);stations[ID]=1;\
      Yr=substr($0,12,4);\
      Mo=substr($0,16,2);\
      }\
      $1~/TMAX/{l=length($0); d=1; \
         for(i=22;i<l;i+=8){\
            mx=substr($0,i,5)/10.0;\
            if((mx<100)&&(mx>(-100))){\
               tmx[ID,Yr]+=mx; Nx[ID,Yr]++; \
               if(D[Yr,Mo,d]==""){\
                  D[ID,Yr]++; Day[Yr,Mo,d]=1;\
               }\
            }\
            d++;\
         }\
      }\
      $1~/TMIN/{l=length($0); d=1; \
         for(i=22;i<l;i+=8){\
            mn=substr($0,i,5)/10.0;\
            if((mn<100)&&(mn>(-100))){\
               tmn[ID,Yr]+=mn; Nn[ID,Yr]++;\
            }\
            d++;\
         }\
      }\
     END{printf("Year ");\
         for(I in stations){printf("%s ",I);}\
         printf("\n");\
         for(Y=1961; Y<=2009; Y++){\
            printf("%d ",Y);\
            for(I in stations){\
               if((tmn[I,Y]!="")&&(D[I,Y]>240)){\
                  printf("%f ",((tmx[I,Y]/Nx[I,Y])+(tmn[I,Y]/Nn[I,Y]))/2.0);\
               }else{\
                  printf("nan ");\
               }\
            }\
            printf("\n");\
         }\
     }' ${Tstations[@]} | sort -n > ${H}/ArcticTempByStation.txt
exit

Responses

  1. […] Arctic Trends […]

  2. I don’t know how many times I’ve failed to notice this link.
    I think that by the “Eyeball Method”, most of the series you showed above are clearly trending up by a couple of degrees C. over 50 years.
    Is there a measure of how representative these stations are of the available data?
    I believe some of the recent criticizms of CRU w.r.t. the Russian data, was that the stations chosen were un-representative in terms of trend and length, etc.
    But please understand that I know you can’t do everything!
    Thanks for your efforts.
    Al S.

    • Well, this is “all” the station data above 75N latitude. The only filtering applied was to drop sectors which had fewer than 240 days of data in a particular year. In the “Average Annual Temperature by Station”, the method of merging stations within a 1×1 degree grid was dropped. The 240 day per year requirement was kept. My intent is to discover what happened in 1999, and why some of the longer stations have such a strong warming trend.

  3. […] Arctic Trends […]


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: