Створіть багатокутники міри та межі заданого растра в R


13

Я хочу створити два багатокутники.

  1. Один з прямокутних протяжностей мого растра. Я знаю, що я можу отримати масштаб растра, використовуючи r <- raster("band5.tif") e <- extent(r) plot(e)мені це: введіть тут опис зображення

  2. Як я можу створити ОДИН багатокутник межі растра, як показано нижче?

Ось як виглядає мій растр:растровий ("band5.tif")

Відповіді:


23

Ось приклад.

library(raster)
# example data
x <- raster(system.file("external/test.grd", package="raster"))

Щоб отримати прямокутний розмір

e <- extent(x)
# coerce to a SpatialPolygons object
p <- as(e, 'SpatialPolygons')  

Щоб отримати багатокутник, який оточує клітини, що не є NA

# make all values the same. Either do
r <- x > -Inf
# or alternatively
# r <- reclassify(x, cbind(-Inf, Inf, 1))

# convert to polygons (you need to have package 'rgeos' installed for this to work)
pp <- rasterToPolygons(r, dissolve=TRUE)

# look at the results
plot(x)
plot(p, lwd=5, border='red', add=TRUE)
plot(pp, lwd=3, border='blue', add=TRUE)

Я не можу знайти документацію на r <- r > -Infчастину. Що це саме робить? І чим він відрізняється values(r)[!is.na(values(r))] <- 1(який встановлює всі локації, які не є r в 1).
csheth

3
r > -Infє основним R. Зробіть, c(1,NA,3,NA) > -Infщоб побачити, як це працює. Я додав альтернативу ( reclassify). Ваша альтернатива працює, але вона не є хорошою для великих об'єктів.
Роберт Хіджманс

Я просто чекаю, коли комп'ютер обробить rasterToPolygons()частину, і після цього я оціню вашу відповідь. Дякуємо за -Infшматочок, який буде дуже корисним!
csheth

Для дуже великого растру це займе певний час, а то і може вийти з ладу. У такому випадку ви можете розглянути перше використання, aggregateоскільки різниці ви б не побачили.
Роберт Хіджманс

Навіть із лише 100 комірок після запуску aggregate()on r він не обробляється (комп'ютер, оснащений 16 Гб оперативної пам’яті). Проблема полягає в тому, що мені потрібно зберігати кордону максимально рідним, оскільки DEM потрібно витягти з результуючого багатокутника. Якщо я ще більше зніму свій растр, я втрачу цю межу. Будь-яка робота навколо?
csheth
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.