Ich möchte zwei Polygone erstellen.
Ich möchte zwei Polygone erstellen.
Antworten:
Hier ist ein Beispiel.
library(raster)
# example data
x <- raster(system.file("external/test.grd", package="raster"))
Um die rechteckige Ausdehnung zu erhalten
e <- extent(x)
# coerce to a SpatialPolygons object
p <- as(e, 'SpatialPolygons')
Um ein Polygon zu erhalten, das Zellen umgibt, die nicht NA sind
# make all values the same. Either do
r <- x > -Inf
# or alternatively
# r <- reclassify(x, cbind(-Inf, Inf, 1))
# convert to polygons (you need to have package 'rgeos' installed for this to work)
pp <- rasterToPolygons(r, dissolve=TRUE)
# look at the results
plot(x)
plot(p, lwd=5, border='red', add=TRUE)
plot(pp, lwd=3, border='blue', add=TRUE)
r > -Inf
ist einfach R
. Tun Sie, um c(1,NA,3,NA) > -Inf
zu sehen, wie es funktioniert. Ich habe eine Alternative hinzugefügt ( reclassify
). Ihre Alternative funktioniert, ist aber nicht für große Objekte geeignet.
rasterToPolygons()
Teil verarbeitet, und daraufhin werde ich Ihre Antwort auswerten. Vielen Dank für das -Inf
bisschen, es wird sehr nützlich sein!
aggregate
da Sie den Unterschied sowieso nicht sehen würden.
aggregate()
on r hat es nicht verarbeitet (Computer mit 16 GB RAM ausgestattet). Das Problem ist, dass ich die Grenze so nativ wie möglich halten muss, da ein DEM aus dem resultierenden Polygon extrahiert werden muss. Wenn ich mein Raster weiter nach unten taste, verliere ich diese Grenze. Irgendwelche Abhilfe?
r <- r > -Inf
. Was genau macht es? Und wie unterschiedlich ist es vonvalues(r)[!is.na(values(r))] <- 1
(wodurch alle Orte, die nicht NA sind, in r auf 1 gesetzt werden).