Interpolation verfeinern

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
jessi
Beiträge: 100
Registriert: Mo Jul 10, 2017 9:23 am

Interpolation verfeinern

Beitrag 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
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Interpolation verfeinern

Beitrag 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/
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Antworten