R'de belirli bir Raster'in kapsamı ve sınırında çokgenler oluşturun


13

İki çokgen oluşturmak istiyorum.

  1. Bunlardan biri rasterimin dikdörtgen uzantılarından. Kullanarak raster boyutunu elde edebilirsiniz biliyorum r <- raster("band5.tif") e <- extent(r) plot(e)bana bunu verir: resim açıklamasını buraya girin

  2. Aşağıda gösterildiği gibi raster sınırının BİR poligonunu nasıl oluşturabilirim?

Rasterim şöyle görünüyor:resim ( "band5.tif")

Yanıtlar:


23

İşte bir örnek.

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

Dikdörtgen kapsamı elde etmek için

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

NA olmayan hücreleri çevreleyen bir çokgen elde etmek için

# 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 > -InfParça hakkında belge bulamıyorum . Tam olarak ne yapıyor? Ve ne kadar farklı values(r)[!is.na(values(r))] <- 1(r'de 1'de NA olmayan tüm konumları ayarlar).
csheth

3
r > -Inftemeldir R. c(1,NA,3,NA) > -InfNasıl çalıştığını görmek için yapın . Bir alternatif ekledim ( reclassify). Alternatifiniz işe yarıyor ama büyük nesneler için iyi değil.
Robert Hijmans

Sadece bilgisayarımın rasterToPolygons()parçayı işlemesini bekliyorum ve bunun üzerine cevabınızı değerlendireceğim. -InfBiraz teşekkürler çok yararlı olacak!
csheth

Çok büyük bir tarama için bu biraz zaman alacaktır, hatta başarısız bile olabilir. Bu durumda aggregate, farkı yine de görmeyeceğiniz için önce kullanmayı düşünebilirsiniz .
Robert Hijmans

Açık aggregate()r'yi çalıştırdıktan sonra sadece 100 hücre olsa bile, işlenmedi (bilgisayar 16 GB RAM ile donatılmış). Sorun, bir DEM'nin sonuçtaki çokgenden çıkarılması gerektiğinden, sınırı olabildiğince yerel tutmam gerekiyor. Rasterimi daha aşağı örneklersem bu sınırı kaybedeceğim. Herhangi bir iş var mı?
csheth
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.