Yanıtlar:
İçinde R
, crop
değerleri ayıklamak ve ( örneğin ) table
saymak için kullanın.
Örnek olarak, dünyayı kapsayan 1 derecelik bir ızgara oluşturalım:
library(raster)
x.raster <- raster(outer(179:0, 0:359, `+`), xmn=-180, xmx=180, ymn=-90, ymx=90)
Sınırlayıcı kutu extent
kullanmak için bir nesneye dönüştürülür crop
:
y.extent <- extent(cbind(c(-125,20), c(-60,50)))
y.raster <- crop(x.raster, y.extent)
Bunu yaptıktan sonra, tablolama basittir:
table(getValues(y.raster))
Bu çıktıda ilk satır değerleri listeler ve ikinci satır karşılık gelen sayılarını listeler:
165 166 167 ... 257 258
1 2 3 ... 2 1
Bir kontrol olarak raster ve kapsamı çizebiliriz:
plot(x.raster)
plot(y.extent, add=T)
Küçük bir ek: ayrıca (bellek güvenli) fonksiyonu "freq" kullanabilirsiniz:
Whuber'ın cevabını takiben:
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)
Ama şimdi yap:
freq(y.raster)
Yalnızca çok büyük nesneler için önemlidir (dosyadaki tarama). 'freq' iki sütunlu bir matris (değer / sayı) döndürürken, 'table' bir tablo döndürür.
crop
dünyayı kapsayan bir dakikalık ızgara için işlemi zamanladım : 10800 satır ve 21600 sütun (233.280.000 hücre) var. Kırpma toplam geçen süre 1.36 saniyede yürütüldü.
v <- extract(x.raster, y.extent)
takip table(v)
extract
geliyor? Bu bir parçası değildir raster
ve R
yardım sistemi ( ??
) bu ada sahip bir işlev bulamaz.