Страница 1 из 1

Посчитать площадь растра

Добавлено: 28 май 2018, 14:42
Prince660
Есть растр со значениями ячеек "1" и "0" нужно посчитать площадь всех ячеек со значением "1", как это сделать?
Я так понял что нужно посчитать количество ячеек с нужным значением и умножить на площадь одной ячейки. Вот только как посчитать количество нужных ячеек?

Re: Посчитать площадь растра

Добавлено: 28 май 2018, 14:51
rhot
r.stats сразу считает площадь.

Re: Посчитать площадь растра

Добавлено: 28 май 2018, 14:51
trir

Re: Посчитать площадь растра

Добавлено: 28 май 2018, 15:04
Prince660
rhot писал(а):
28 май 2018, 14:51
r.stats сразу считает площадь.
Спасибо! Подскажите ещё как этим пользоваться. Никогда с GRASS не работал..((

Re: Посчитать площадь растра

Добавлено: 28 май 2018, 15:11
rhot
Prince660 писал(а):
28 май 2018, 15:04
Спасибо! Подскажите ещё как этим пользоваться. Никогда с GRASS не работал..((
По-английски тоже не читаете?

Re: Посчитать площадь растра

Добавлено: 28 май 2018, 16:16
Александр Мурый
Prince660 писал(а):
28 май 2018, 15:04
Подскажите ещё как этим пользоваться.
Через "Processing" в QGIS находим модуль <r.stats>, выбираем нужный растр, указываем опцию "Print area totals in square meters", ждём результата в виде списка.

Re: Посчитать площадь растра

Добавлено: 29 май 2018, 09:17
nickleb
... в R попробовал через библиотеку raster:

Код: Выделить всё

library("raster")
#генерируем "подопытный" растр r
r <- raster(nrow=seq(from =  -90,  to =  90,  by = 1),
                ncol=seq(from = -180,   to = 180, by = 2))

#0 или 1 присваиваем значениям ячееек "случайным образом": либо "0", либо "1"
values(r) <- sample(c(0,1), replace=TRUE, size=ncell(r))

#"подопытный" растр r готов
str(r)

#значения ячеек с "0" "для удобоваримости" в NA "обращаем"
values(r)[values(r)==0] <- NA
str(r)

#получаем количество ячеек со значением "1"
countCells1 <- cellStats(r, stat='sum', na.rm=TRUE)
str(countCells1)

#получаем растр a с площадями ячеек растра r (NA-значения - они же "0" - " игнорируем")
a <- area(r, na.rm = TRUE)
str(a)

#вот так, получаем собственно, общую площадь ячеек растра r со значением "1"
AreaCellsWith1 <- cellStats(a, stat='sum', na.rm=TRUE)
str(AreaCellsWith1)

Re: Посчитать площадь растра

Добавлено: 29 май 2018, 09:46
rhot
Что-то муторно... И потом, функция raster::area считает приблизительно.
Проще так:

Код: Выделить всё

library(dplyr)
df <- as.data.frame(freq(r))
df <- mutate(df, area=count*30/1e4) # площадь в га, если пространственное разрешение растра 30 м

Re: Посчитать площадь растра

Добавлено: 29 май 2018, 10:01
nickleb
rhot писал(а):
29 май 2018, 09:46
Проще так:
согласен! лаконично и изящно, rhot, ежели регулярное пространственное разрешение растра... я-то по lon/lat "муторно" так сделал этакий tutorial-конспектик...

Re: Посчитать площадь растра

Добавлено: 29 май 2018, 10:10
rhot
Забыл добавить как включить поддержку R в QGIS.
https://docs.qgis.org/2.18/en/docs/trai ... intro.html

Re: Посчитать площадь растра

Добавлено: 29 май 2018, 10:12
Эдуард Казаков
Ещё вариант в QGIS:
Processing - Processing Toolbox - Scripts - Tools - Get scripts from on-line scripts collection - Uninstalled - Unique values count
Установить, он появится там же в Scripts - Raster.
Посчитает, сколько каких пикселей.

Re: Посчитать площадь растра

Добавлено: 29 май 2018, 12:06
Ariki
Ещё варианты
viewtopic.php?f=14&t=18999&p=128049