Відповіді:
В R
використовується crop
для вилучення значень і ( наприклад ) , table
щоб порахувати їх.
Як приклад, давайте створимо сітку 1 ступеня, що охоплює земну кулю:
library(raster)
x.raster <- raster(outer(179:0, 0:359, `+`), xmn=-180, xmx=180, ymn=-90, ymx=90)
Обмежувальне поле перетворюється на extent
об'єкт з метою використання crop
:
y.extent <- extent(cbind(c(-125,20), c(-60,50)))
y.raster <- crop(x.raster, y.extent)
Зробивши це, таблиця проста:
table(getValues(y.raster))
У цьому висновку перший рядок перераховує значення, а другий перераховує їх відповідні підрахунки:
165 166 167 ... 257 258
1 2 3 ... 2 1
В якості перевірки ми можемо побудувати растр і ступінь:
plot(x.raster)
plot(y.extent, add=T)
Незначне доповнення: ви також можете використовувати (безпечну для пам'яті) функцію "freq":
Після відповіді від шубер:
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)
Але тепер зробіть:
freq(y.raster)
Це має значення лише для дуже великих об'єктів (растр у файлі). 'freq' повертає матрицю з двома стовпцями (значення / кількість), тоді як 'table' повертає таблицю.
crop
операцію до однохвилинної сітки, що покриває землю: вона має 10800 рядків і 21600 стовпців (233,280 000 комірок). Обрізання було виконано за 1,36 секунди за весь минулий час.
v <- extract(x.raster, y.extent)
далі table(v)
extract
? Це не є частиною, raster
і R
довідкова система ( ??
) також не знаходить жодної функції з цим ім'ям.