Keterbatasan data observasi menjadi permasalahan di dalam penelitian, seperti curah hujan. Data curah hujan penting diketahui untuk pemodelan tanaman, kekeringan, dan lain sebagainya. Untuk menutupi keterbatasan tersebut, beberapa pendekatan interpolasi spasial digunakan untuk mengisi data kosong seperti kriging dan spline. Data-data seperti APHRODITE (Asian Precipitation - Highly-Resolved Observational Data Integration Towards Evaluation) dan CHIRPS (Climate Hazards Group InfraRed Precipitation with Station) menggunakan pendekatan tersebut dengan memanfaatkan data observasi dan satelit. Data CHIRPS (\(0.05^0\)) dan APHRODITE (\(0.25^0\)) yang digunakan di sini memiliki resolusi temporal bulanan dan harian, secara berturut-turut. Lokasi yang dipilih adalah daerah Monsun Asia dengan wilayah kajian Danau Toba.

1. Buka library

library(ncdf4); library(raster); library(rasterVis); library(zoo)
## Loading required package: sp
## Loading required package: lattice
## Loading required package: latticeExtra
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric

2. Buka file CHIRPS dan APHRODITE

chirps <- brick("CHRIPS1981-2019.nc", varname = "precipitation")

#Mengatur waktu
chirps <- setZ(chirps, seq(as.Date("1981-01-01"), as.Date("2019-12-01"), by = "month"), "months")
apro <- list.files("aprodite/", ".nc", full.names = T)
apro <- lapply(apro, function(x) brick(x, varname = "precip"))
apro <- stack(apro)

3. Modifikasi data APHRODITE

Oleh karena data APHRODITE memiliki resolusi harian, data tersebut perlu dikonversi menjadi data bulanan. Ketersediaan data CHIRPS minimum hanya ada pada tahun 1981. Data APHRODITE digunakan sebagai pelengkap untuk tahun sebelum 1981, yaitu pada tahun 1957-1980.

#Potong sesuai latitude dan longitude CHIRPS
apro <- crop(apro, extent(chirps))

#Samakan resolusi APHRODITE dengan CHIRPS
apro.resample <- resample(apro, chirps)

#Modifikasi dari data harian ke bulanan
waktu <- setZ(apro.resample, seq(as.Date("1957-01-01"), as.Date("1980-12-31"), by = "day"), "days")
apro.monthly <- zApply(waktu, as.yearmon, sum)

4. Gabungkan Data CHIRPS dan APHRODITE

gabungan <- addLayer(apro.monthly, chirps)

#Masukkan waktu untuk gabungan dari APHRODITE dan CHIRPS
gabungan <- setZ(gabungan, seq(as.Date("1957-01-01"), as.Date("2019-12-01"), by = "month"), "months")
names(gabungan) <- seq(as.Date("1957-01-01"), as.Date("2019-12-01"), by = "month")

#Cropping ke DAS
gabungan <- crop(gabungan, extent(98.375, 99.325,2.15,3)) 

5. Modifikasi CH Gabungan dari data Bulanan menjadi Tahunan (1957-2019)

ch.yearly <- stackApply(gabungan, rep(seq(1,nlayers(gabungan)/12),each = 12), sum)

#Klimatologi 1957-2019
ch.clim   <- calc(ch.yearly, mean)
ch.clim <- crop(ch.clim, extent(98.375, 99.325,2.15,3)) 
crs(ch.clim) <- "+proj=longlat +datum=WGS84 +no_defs"

#Cropping ke DAS
das <- shapefile("Danau Toba/sub das ab.shp")
das <- spTransform(das, CRSobj = "+proj=longlat +datum=WGS84 +no_defs") #Transformasi georeferensi

6. Modifikasi CH Gabungan menjadi data bulanan Klimatologi (1957-2019)

ch.monthly <- stackApply(gabungan, rep(seq(1,12),each = nlayers(gabungan)/12), mean)
names(ch.monthly) <- month.name

7. Simpan Data

Fungsi berikut untuk menyimpan file raster jika ingin digunakan untuk membuat layout

writeRaster(ch.clim, "Curah Hujan Klimatologi (1957-2019)", format = "GTiff")
writeRaster(ch.monthly, "CH Bulanan Klimatologi", format = "GTiff") #1 file isinya 12 layer/bulan

8. Plot data

rasterVis::levelplot(ch.monthly, col.regions=colorRampPalette(c("Red","Yellow","Blue"))) + 
  layer(sp.polygons(das))

rasterVis::levelplot(ch.clim, col.regions=colorRampPalette(c("Red","Yellow","Blue"))) + 
  layer(sp.polygons(das))