Підрахунок растрових значень у обмежувальному полі (просторовий розмір)


11

З огляду на обмежувальне поле, як я можу порахувати кількість конкретних значень (скажімо, мене цікавить кількість value == 1) у растрі в 1) arcpy або 2) растровому пакеті в R?

Відповіді:


10

В 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)

Карта


3

Незначне доповнення: ви також можете використовувати (безпечну для пам'яті) функцію "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' повертає таблицю.


чи все-таки просто виконувати просторовий запит, а не обрізати зображення? Обрізка може бути дуже повільною для обробки.
Відвідано

1
Обрізка повинна бути дуже швидкою. Як тест, я приурочив cropоперацію до однохвилинної сітки, що покриває землю: вона має 10800 рядків і 21600 стовпців (233,280 000 комірок). Обрізання було виконано за 1,36 секунди за весь минулий час.
whuber

Я також думаю, що це повинно бути швидким, але ви можете порівняти вищезазначене з цим просторовим запитом: v <- extract(x.raster, y.extent) далі table(v)
Роберт Хіджманс

1
Роберте, з якої бібліотеки extract? Це не є частиною, rasterі Rдовідкова система ( ??) також не знаходить жодної функції з цим ім'ям.
whuber

Це функція в растровому пакеті. «Екстракт показує, що (принаймні, для мене це робиться)
Роберт Хіджманс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.