Минимальная высота в пределах км

Попытка найти минимальную высоту в пределах 10 км от определенной широты и долготы с помощью R.

Пока у меня есть

dem <- getData("SRTM", lat=42.90, lon=-78.85, path = datadir)
plot(dem)

Я знаю, что мне нужно создавать пространственные точки и в конечном итоге буферизовать / извлекать информацию.

Когда я пытаюсь:

buffdem <- buffer(dem, width=10000)

Это не работает, потому что у меня нет очков.

Я пытался

dem <- getData("SRTM", lat=42.90, lon=-78.85, path = datadir)
coords <- data.frame(
  x = rnorm(100),
  y = rnorm(100)
)
coordinates(dem)

spdf = SpatialPointsDataFrame(coords, dem)

Я получаю следующую ошибку:

Ошибка в validObject (.Object): недопустимый объект класса «SpatialPointsDataFrame»: недопустимый объект для слота «data» в классе «SpatialPointsDataFrame»: получен класс «RasterLayer», должен быть или расширять класс «data.frame»


person user6754289    schedule 26.10.2015    source источник
comment
Воспроизводимый пример, пожалуйста.   -  person harre    schedule 26.10.2015
comment
Необязательно буферизовать точки. Сделайте фокусировку min растра, а затем используйте extract - см. ?focal   -  person jbaums    schedule 26.10.2015
comment
воспроизводимость означает, что вы предоставляете нам образец набора данных, который мы можем использовать для демонстрации / тестирования решений: tinyurl.com/reproducible-000   -  person Ben Bolker    schedule 26.10.2015
comment
Понятно, попробую фокусную мин. Спасибо!   -  person user6754289    schedule 26.10.2015
comment
Я бы опубликовал пример, но этот ftp для меня очень медленный. Я посмотрю, найду ли плитку поменьше.   -  person jbaums    schedule 26.10.2015
comment
Оглядываясь назад, я думаю, что точки буферизации, вероятно, разумны. Поскольку вы работаете с данными размером ~ 90 м, я предполагаю, что расчет фокального минимума в 10000 м (примерно 111 x 111) займет некоторое время. В этом случае вы сможете просто сделать buffer(dem, coords, width=10000, fun=min).   -  person jbaums    schedule 27.10.2015
comment
сработало, все настроено, спасибо   -  person user6754289    schedule 27.10.2015


Ответы (1)


Я думаю, что это делает то, что вам нужно:

library(raster)
#elevation <- getData("SRTM", lat=42.90, lon=-78.85)
#poi <- cbind(lon=-78.85, lat=42.90)

используя меньший примерный набор данных для более быстрой загрузки:

elevation <- getData('alt', country='CHE')
poi <- cbind(8.13, 46.47)

e <- extract(elevation, poi, buffer=10000)

sapply(e, min, na.rm=TRUE)

Кстати, это дубликат this и этот вопрос.

person Robert Hijmans    schedule 27.10.2015