Seite 1 von 1

Finde lat lon Koordinaten von Oceanen

Verfasst: Fr Nov 15, 2019 1:56 pm
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

Re: Finde lat lon Koordinaten von Oceanen

Verfasst: Fr Nov 15, 2019 2:30 pm
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 ;)

Re: Finde lat lon Koordinaten von Oceanen

Verfasst: Mo Nov 18, 2019 3:38 pm
von jessi
Danke für die Hilfe.

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

Grüße
Jessi

Re: Finde lat lon Koordinaten von Oceanen

Verfasst: Di Nov 19, 2019 12:29 am
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.