расчет центроида растра - PullRequest
       55

расчет центроида растра

0 голосов
/ 04 октября 2018

У меня есть список (ы), содержащие информацию о вероятном местонахождении многих животных в Южной Америке.Например, это тип хранимой информации и то, как она выглядит при построении графика для первого человека.

Пример:

> s[1]
[[1]]
class       : RasterLayer 
dimensions  : 418, 313, 130834  (nrow, ncol, ncell)
resolution  : 0.16666, 0.16666  (x, y)
extent      : -86.333, -34.16842, -55.91633, 13.74755  (xmin, xmax, ymin, ymax)
coord. ref. : NA 
data source : in memory
names       : layer 
values      : 0, 1  (min, max)
> plot(s[[1]])

enter image description here

Примечание: зеленые области - это все "вероятные" места, а серые - "маловероятные" места.

Я хотел бы рассчитать центр тяжести этого вероятного местоположения (т. Е. Центр тяжести зеленой области).

Ниже @dww предложил следующее решение (которое работает длясмоделированные данные), но приводит к сообщению об ошибке с моими данными.

colMeans(xyFromCell(s, which(s[]==1)))

Error in xyFromCell(s[1], which(s[] == 1)) : 
trying to get slot "extent" from an object of a basic class ("list") with no slots

1 Ответ

0 голосов
/ 04 октября 2018

Чтобы найти центроид ячеек, где растр r имеет значение 1, вы можете использовать

colMeans(xyFromCell(r, which(r[]==1)))

По существу, центроид находится на среднем значении широт / долготподмножества местоположений.

Вот некоторые воспроизводимые фиктивные данные для проверки:

r = raster(matrix(sample(0:1, 10000,T), nrow=100,ncol=100))
...