User Tools

Site Tools


wikistudholland:utwente_xiaojing

Geovisual Analysis of Synchronization in Weather Data-- temperature in the Netherlands as case study

Xiaojing Wu, Geo-information Processing Dept., University of Twente

INTRODUCTION

Long and consistent time series of weather data are available in most countries. This data is fundamental to quantify climate change as well as to study a wide range of environmental processes. Thus, discovering and analyzing spatio-temporal weather patterns is essential for understanding the Earth system. One particularly interesting pattern is synchronization, which refers to the degree of temporal similarity between two or more time series(Hudson et al. 2011). The identification of weather synchronous regions or years helps to understand the impact of climate change on living organisms. For instance, years with synchronous temperature patterns present synchronous phenological development.

Project objectives

Import the synchronization results of SOM clustering and shp file of NL map into R; Render different colours to stations belonging to different clusters at daily, weekly and monthly resolutions.

Vector Data

Dutch daily temperature data collected at 28 meteorological stations for 20 years (1st January 1992 to 31st December 2011). This data was downloaded freely from the website of the Royal National Meteorological Institute (known by its Dutch acronym, the KNMI).

Geograhical map of the Netherlands (Map 1) for visualize synchronization results is to use the Thiessen polygon map generated around stations to show the spatial distribution of the stations and to define the area influenced by each station.

    * Map 1. Geographical Map of the Nethlerands

Color Data

Colors used to render maps are from http://colorbrewer2.org/

Method

Method

Work-flow

Import synchronized stations of SOMs clustering at daily, weekly and monthly resolution into R;
Import the shapefile of geographical map in the Netherlands into R;
Import the colours needed for rendering into R;
Render the colours to the shapefile to indicate SOMs clustering results at different temporal resolutions. 

Computational implementation

- Project
# my R code here
# personal project assignment
 
library(rgdal)
library(maptools)
ogrInfo("/home/user/ost4sem/project/input/","polygons_NL")
#Source: "/home/user/ost4sem/project/input/", layer: "polygons_NL"
#Driver: ESRI Shapefile number of rows 28 
#Feature type: wkbPolygon with 2 dimensions
#Extent: (3.360785 50.75517) - (7.29271 53.55458)
#LDID: 87 
#Number of fields: 11 
#name type length typeName
#1   OBJECTID    0      9  Integer
#2       FID_    0      9  Integer
#3  Longitude    2     19     Real
#4   Latitude    2     19     Real
#5    Number_    0      9  Integer
#6       Name    4    254   String
#7  Elevation    0      9  Integer
#8       stID    2     16     Real
#9   dayclust    2     16     Real
#10 weekclust    2     16     Real
#11  monclust    2     16     Real
#READ SHAPEFILE INTO STS_POLYGONS
sts_polygons <- readShapePoly("/home/user/ost4sem/project/input/polygons_NL.shp")
as(sts_polygons,"data.frame")[1:5,1:10]
#OBJECTID FID_ Longitude Latitude Number_           Name Elevation stID dayclust weekclust monclust
#0       21   21   3.90000 51.53333     323 Wilhelminadorp         2  323        4         3         3
#1       27   27   5.41667 51.45000     370      Eindhoven        20  370        3         2         3
#2       30   30   6.20000 51.50000     391          Arcen        19  391        3         2         2
#3       14   14   6.56667 52.75000     279      Hoogeveen        12  279        1         1         1
#4        7    7   5.35000 52.88333     267       Stavoren        -1  267        1         1         1
 
#plot geographical map of the Netherlands and labels each polygon with its stationID and name
plot(sts_polygons,border="black")
text(coordinates(sts_polygons),labels=paste(sts_polygons$Number_, sts_polygons$Name, sep="\n"),cex=0.6)
 
#read in colors to render polygons belonging to different clusters
colors_4 = read.table("/home/user/ost4sem/project/input/colors_4.txt",header = F)
colors_3 = read.table("/home/user/ost4sem/project/input/colors_3.txt",header = F)
#Warning message:
#  In read.table("/home/user/ost4sem/project/input/colors_4.txt", header = F) :
#  incomplete final line found by readTableHeader on '/home/user/ost4sem/project/input/colors_4.txt'
 
#firstly render the daily resolution results of somclustering
for (i in 1:4) {
   day_clust <- sts_polygons[sts_polygons$dayclust==i,]
   plot(day_clust,border="black",col=rgb(colors_4[i,]),add=TRUE)
   rm(day_clust)
}
text(coordinates(sts_polygons),labels=paste(sts_polygons$Number_, sts_polygons$Name, sep="\n"),cex=0.6)
 
#then render the weekly resolution results of somclustering
for (i in 1:3) {
  day_clust <- sts_polygons[sts_polygons$weekclust==i,]
  plot(day_clust,border="black",col=rgb(colors_3[i,]),add=TRUE)
  rm(day_clust)
}
text(coordinates(sts_polygons),labels=paste(sts_polygons$Number_, sts_polygons$Name, sep="\n"),cex=0.6)
 
#finally render the monthly resolution results of somclustering
for (i in 1:3) {
  day_clust <- sts_polygons[sts_polygons$monclust==i,]
  plot(day_clust,border="black",col=rgb(colors_3[i,]),add=TRUE)
  rm(day_clust)
}
text(coordinates(sts_polygons),labels=paste(sts_polygons$Number_, sts_polygons$Name, sep="\n"),cex=0.6)

RESULTS and DISCUSSION

Synchronization results of SOMs clustering are displayed at daily (Map 2), weekly (Map 3) and monthly (Map 4) resolutions. There are 4 clusters of synchronous stations at daily resolution and 3 at both weekly and monthly. The reduction of the numbers is justified because of the loss in details when daily temperature data is aggregated to weekly and monthly data.

           * Map 2. Synchronization results at daily resolution

           * Map 3. Synchronization results at weekly resolution

           * Map 4. Synchronization results at monthly resolution

Therefore, different temporal resolutions indeed influence spatial synchronization results in weather data.

wikistudholland/utwente_xiaojing.txt · Last modified: 2021/01/20 20:36 (external edit)