Project

General

Profile

Download (2.18 KB) Statistics
| Branch: | Revision:
1
# R code to smooth the boundary area N59 to N60 to the south, by simply taking pixel-wise
2
# averages of the observed SRTM and ASTER using a distance-based weighting function such
3
# that the relative contribution of ASTER decays to zero over a few km
4
# create simple grid indicating distance (in units of pixels) south from
5
# boundary , starting at 1. 
6
#
7
#
8
# Original author: Jim Regetz 
9
# [13-JUL-2011]
10
#	Edits by Yuni to apply ASTER GDEM2, instead of GDEM1, as well as auto-applying 
11
#	for each nine region.  [9-Dec-2011] 
12
# 
13

    
14

    
15

    
16

    
17
library(raster)
18

    
19
aster.dir  <- "/data/project/organisms/DEM/Yuni/Data/aster2"
20
srtm.dir  <- "/data/project/organisms/DEM/Yuni/Data/srtm"
21
aster.below <- list.files(aster.dir, pattern="^aster2_.*_below.tif")
22
aster.above <- list.files(aster.dir, pattern="^aster2_.*_above.tif")
23
srtm.below  <- list.files(srtm.dir, pattern="^srtm_.*_below.tif$")
24

    
25

    
26
blendgau <- function(aster.tile.below, aster.tile.above, srtm.tile.below, aster.dir, srtm.dir){
27
    # load relevant SRTM and ASTER data
28
    srtm.south <- raster(file.path(srtm.dir,  srtm.tile.below)) 
29
    aster.south <- raster(file.path(aster.dir, aster.tile.below)) 
30
    aster.north <- raster(file.path(aster.dir, aster.tile.above))
31
    
32
    # create difference raster for area of overlap
33
    delta.south <- srtm.south - aster.south
34
    
35
    aster.south.matrix <- as.matrix(aster.south) 
36
    ydistS <- row(aster.south.matrix)
37
    
38
    r <- -0.001 # weight drops to 0.5 at ~26 cells, or 2.4km at 3" res 
39
    w <- exp(-0.001*ydistS^2)
40
    aster.south.smooth <- aster.south
41
    aster.south.smooth[] <- values(srtm.south) - as.integer(round(t(w *
42
        as.matrix(delta.south)))) 
43
    aster.south.smooth[aster.south.smooth <0] <- 0 
44
    file.name <- paste("aster2_", substr(srtm.tile.below, 6, 13), "_below_blendgau.tif", sep="") 
45
    writeRaster(aster.south.smooth, file.path(aster.dir, file.name))
46
} 
47

    
48

    
49

    
50

    
51
num.regions <- 9
52
makeGau <-lapply(1:num.regions, function(region, aster.dir, srtm.dir){
53
    aster.tile.below <- aster.below[region]
54
    aster.tile.above <- aster.above[region]
55
    srtm.tile.below  <- srtm.below[region]
56
    blendgau(aster.tile.below, aster.tile.above, srtm.tile.below, aster.dir, srtm.dir)
57
}, aster.dir=aster.dir, srtm.dir=srtm.dir)
58

    
59

    
60

    
(12-12/21)