Policz wartość rastra w obwiedni (zasięg przestrzenny)

11

Biorąc pod uwagę obwiednię, jak mogę policzyć liczbę określonych wartości (powiedzmy, jestem zainteresowany liczbą value == 1) w rastrze w 1) arcpy lub 2) pakiecie rastrowym w R?

Widziany
źródło

Odpowiedzi:

10

W Rużyj, cropaby wyodrębnić wartości i ( np. ) tableJe policzyć.


Na przykład stwórzmy siatkę 1 stopnia obejmującą glob:

library(raster)
x.raster <- raster(outer(179:0, 0:359, `+`), xmn=-180, xmx=180, ymn=-90, ymx=90)

Obwiednia jest konwertowana na extentobiekt w celu użycia crop:

y.extent <- extent(cbind(c(-125,20), c(-60,50)))
y.raster <- crop(x.raster, y.extent)

Po wykonaniu tej czynności zestawienie tabel jest proste:

table(getValues(y.raster))

W tym wyniku pierwszy wiersz zawiera wartości, a drugi ich odpowiadające liczby:

165 166 167 ... 257 258
  1   2   3 ...   2   1

Jako czek możemy wykreślić raster i zakres:

plot(x.raster)
plot(y.extent, add=T)

Mapa

Whuber
źródło
3

Drobny dodatek: możesz również użyć (bezpiecznej pamięci) funkcji „freq”:

Po odpowiedzi Whuber:

library(raster)
x.raster <- raster(outer(179:0, 0:359, '+'), xmn=-180, xmx=180, ymn=-90, ymx=90)
y.extent <- extent(cbind(c(-125,20), c(-60,50)))
y.raster <- crop(x.raster, y.extent)

Ale teraz wykonaj:

freq(y.raster)

Ma to znaczenie tylko w przypadku bardzo dużych obiektów (raster w pliku). „freq” zwraca macierz dwukolumnową (wartość / liczba), podczas gdy „table” zwraca tabelę.

Robert Hijmans
źródło
czy w ogóle jest po prostu wykonywanie zapytania przestrzennego zamiast przycinania obrazu? Kadrowanie może być bardzo wolne w przetwarzaniu.
Widziany
1
Przycinanie powinno być bardzo szybkie. Jako test zaplanowałem cropoperację na jednominutową siatkę pokrywającą ziemię: ma 10800 rzędów i 21600 kolumn (233 280 000 komórek). Uprawa została wykonana w łącznym czasie, który upłynął 1,36 sekundy.
whuber
Myślę też, że powinien być szybki, ale można porównać powyższe z tym zapytaniem przestrzennym: v <- extract(x.raster, y.extent) a następnie table(v)
Robert Hijmans
1
Robert, z której biblioteki extract? Nie jest częścią, rastera Rsystem pomocy ( ??) również nie znajduje żadnej funkcji o tej nazwie.
whuber
Jest to funkcja w pakiecie rastrowym. wyciąg? pokazuje, że (przynajmniej dla mnie tak jest)
Robert Hijmans