Seite 1 von 1

Interpolation verfeinern

Verfasst: Mi Mai 19, 2021 3:47 pm
von jessi
Hallo ihr lieben,

ich versuche Messdaten auf ein Gitter zu interpolieren und bin dabei wie folgt vorgegangen:

Code: Alles auswählen

library(ggplot2)
library(akima)
library(viridis)
library(ggthemes)

#Ausgangsvektor
str(nied)
'data.frame':   550 obs. of  6 variables:
 $ Codename: Factor w/ 738 levels "BER","KOE",..: 1 2 3 5 6 7 8 10 11 12 ...
 $ Mittel  : num  14.68 4.38 1.8 12.3 55.29 ...
 $ Laenge  : num  1.5 13.78 10.94 9.58 14.3 ...
 $ Breite  : num  42.5 47.6 47.4 47.2 46.5 ...
 $ int     : num  3 1 1 3 4 2 1 3 3 4 ...

# int enthält die jeweilige Kategorie, entsprechend des Mittels. Für die Kategorien möchte ich nun meine Interpolation ausführen. 

s <- length(nied$Mittel)

di <- interp(nied$Laenge, nied$Breite, nied$int, 
xo = seq(min(nied$Laenge), max(nied$Laenge), length = s), 
yo = seq(min(nied$Breite), max(nied$Breite), length = s), duplicate = "median", linear=TRUE, extrap=FALSE)

 str(di)
List of 3
 $ x: num [1:550] -16.2 -16.1 -16 -15.8 -15.7 ...
 $ y: num [1:550] 28.5 28.5 28.6 28.7 28.8 ...
 $ z: num [1:550, 1:550] 1 NA NA NA NA NA NA NA NA NA ...

dat_interp <- data.frame(expand.grid(x=di$x, y=di$y), z=c(di$z))

str(dat_interp)
'data.frame':   302500 obs. of  3 variables:
 $ x: num  -16.2 -16.1 -16 -15.8 -15.7 ...
 $ y: num  28.5 28.5 28.5 28.5 28.5 ...
 $ z: num  1 NA NA NA NA NA NA NA NA NA ...

### erstelle aus Interpolation tiff.Raster ##
#library(raster)

coordinates(dat_interp) <- ~ x + y
gridded(dat_interp) <- TRUE
r_interp <- raster(dat_interp)

crs(r_interp) <- "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0" ## 

Nun zeigt das Ergebnis noch einige Ecken und Kanten und auch Änderungen an den interp-Einstellungen liefern kein anderes Ergebnis. Könntet ihr mir hier bitte weiterhelfen um das Ergebnis etwas "smoother" zu machen.

Danke für eure Hilfe :)
Jessi

Re: Interpolation verfeinern

Verfasst: Mi Mai 19, 2021 9:38 pm
von EDi
Ich würde ein GAM fitten mit 2-dimensionalen smooth, siehe z.b. hier: https://noamross.github.io/gams-in-r-course/chapter3

Wenn du Randeffekt hast (z.b. in Seen) dann kann man auch ein Soap-film smoother nehmen: https://fromthebottomoftheheap.net/2016 ... smoothers/