Finde lat lon Koordinaten von Oceanen

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

Finde lat lon Koordinaten von Oceanen

Beitrag von jessi »

Hallo liebes Forum,

ich habe ein RasterFile (durch Interpolation) von Europa und und würde nun gerne die Koordinaten der Wasserflächen herausfinden und die Werte (Temperaturwerte) an diesen Koordinaten Null oder NA setzen.

Gibt es eine Möglichkeit, dies in R zu machen?

Ich habe versucht mit den Natural Earth oceans shapefile die Landflächen zu bestimmen und mich so an die Lösung heranzutasten.

Code: Alles auswählen

library(rgdal)
library(rgeos)

URL <- "http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/physical/ne_110m_ocean.zip"
fil <- basename(URL)
if (!file.exists(fil)) download.file(URL, fil)
fils <- unzip(fil)
oceans <- readOGR(grep("shp$", fils, value=TRUE), "ne_110m_ocean",
                  stringsAsFactors=FALSE, verbose=FALSE)

tt <- rasterToPoints(r_interp) # r_interp ist mein Rasterfile; daraus habe ich die Koordinaten gelesen 
lon <- tt[,1]
lat <- tt[,2]
poi <- data.frame(lon, lat)
coordinates(poi) <- ~lon+lat
proj4string(poi) <- CRS(proj4string(oceans))

o <- over(poi, oceans) #hier sind die NAs Landflächen

## 124422        NA      NA           NA
## 124423        NA        NA        NA
## 124424         0      Ocean        0
## 124425         0      Ocean        0
## 124426         0      Ocean        0
## 124427         0      Ocean        0
## 124428         0      Ocean        0
## 124429         0      Ocean        0

o <- o[ -c(which(is.na(o$min_zoom))), ] # NA löschen 

In der Variable o sind die Punkte mit Ocean Null und die Landflächen NA, im nächsten Schritt habe ich die NAs gelöscht, sodass nur noch die Id der Ocean stehen bleiben. Allerdings weiß ich jetzt nicht weiter. Kann ich die übrigen ID (z.B. 124422, ...) in die entsprechenden Koordinaten umwandeln und diese bzw. die Werte an diesen Koordinaten im RasterFile auf NA oder Null setzen?

Ich möchte die MEssdaten über Europa, die ich interpoliert und in ein RasterFile gespeichert habe, graphisch darstellen. Allerdings wird auch über den Atlantik interpoliert (hier liegen keine Messwerte vor). Deshalb möchte ich in einem neuen Raster bzw. in der Graphik die Werte über den Meeresoberflächen Null/NA setzen.

Vielen Dank für eure Hilfe.
Jessi
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Finde lat lon Koordinaten von Oceanen

Beitrag von EDi »

Ich vermute du suchst nach ?raster::mask...

Code: Alles auswählen

library(raster)
library(sp)

r <- raster(xmn=1, xmx=5, ymn=1, ymx=5, nrows=4, ncols=4)
r[] <- 1:length(r)
r[]
plot(r)

ocean_p = Polygon(cbind(c(2,4,4,1,2),c(2,3,5,4,2)))
ocean = SpatialPolygons(list(Polygons(list(ocean_p), "ocean1")))

plot(r)
plot(ocean, add = TRUE)

mr <- mask(r, ocean)
mr[]
plot(mr)
plot(ocean, add = TRUE)
Das nächste mal bitte ein reprodzierbares Beispiel (wie ich) posten ;)
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.
jessi
Beiträge: 100
Registriert: Mo Jul 10, 2017 9:23 am

Re: Finde lat lon Koordinaten von Oceanen

Beitrag von jessi »

Danke für die Hilfe.

Oh, dachte, das wäre schon ein ausreichendes Beispiel :shock:

Grüße
Jessi
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Finde lat lon Koordinaten von Oceanen

Beitrag von EDi »

Oh, dachte, das wäre schon ein ausreichendes Beispiel :shock:
Läuft bei mir nicht:

Code: Alles auswählen

R> tt <- rasterToPoints(r_interp) # r_interp ist mein Rasterfile; daraus habe ich die Koordinaten gelesen 
Error in rasterToPoints(r_interp) : 
  could not find function "rasterToPoints"
R> require(raster)
Loading required package: raster
R> tt <- rasterToPoints(r_interp) # r_interp ist mein Rasterfile; daraus habe ich die Koordinaten gelesen 
Error in nlayers(x) : object 'r_interp' not found
Deshalb nicht reproduzierbar für mich.
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