Ich möchte isolierte Pixel (oder Pixelklumpen <9) aus meinem Rasterbild entfernen .
library(raster)
# create some raster data
r <- raster(ncols=12, nrows=12)
set.seed(0)
r[] <- round(runif(ncell(r))*0.7 )
rc <- clump(r)
Vor dem Entfernen von Pixelklumpen <9
Nach dem Entfernen von Pixelklumpen <9 :
In Erdas gibt es das Sieb-Werkzeug , um dies zu tun, aber wie kann man es in R ersetzen?
Antworten:
Beachten Sie, dass
clump
die Klumpen-ID "4" von der Funktion 2 Zellen auf der rechten Seite hatte, die mit Zellen auf der linken Seite verbunden waren.quelle
Dank @gene und https://geoscripting-wur.github.io/AdvancedRasterAnalysis/ kann ich jetzt meine Frage beantworten (kopiert und geändert):
Bibliothek (Raster)
und gewünschtes Ergebnis (mit einer Zeile und einer Spalte NA auf jeder Seite des Rasters).
quelle
Eine zusätzliche Antwort für projizierte Daten.
bfastSpatial::areaSieve()
nimmt ein Schwellenwertargument an, sodass Klumpen, die kleiner als der Schwellenwert sind, entfernt werden.https://www.rdocumentation.org/packages/bfastSpatial/versions/0.6.2/topics/areaSieve
quelle