Tạo đa giác về phạm vi và ranh giới của một Raster đã cho trong R


13

Tôi muốn tạo hai đa giác.

  1. Một trong những phạm vi hình chữ nhật của raster của tôi. Tôi biết tôi có thể đạt được phạm vi của raster bằng cách sử dụng r <- raster("band5.tif") e <- extent(r) plot(e)cho tôi điều này: nhập mô tả hình ảnh ở đây

  2. Làm cách nào tôi có thể tạo MỘT đa giác của đường biên của raster như hình bên dưới?

Đây là những gì raster của tôi trông giống như:raster ("band5.tif")

Câu trả lời:


21

Đây là một ví dụ.

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

Để có được phạm vi hình chữ nhật

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

Để có được một đa giác bao quanh các ô không phải 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)

Tôi dường như không thể tìm thấy tài liệu về r <- r > -Infphần này. Chính xác thì nó đang làm gì? Và nó khác nhau như thế nào values(r)[!is.na(values(r))] <- 1(đặt tất cả các vị trí không NA trong r thành 1).
csheth

3
r > -Inflà cơ bản R. Làm c(1,NA,3,NA) > -Infđể xem làm thế nào nó hoạt động. Tôi đã thêm một thay thế ( reclassify). Thay thế của bạn hoạt động nhưng nó không phải là một tốt cho các đối tượng lớn.
Robert Hijmans

Tôi chỉ chờ máy tính của tôi xử lý rasterToPolygons()phần đó và sau đó tôi sẽ đánh giá câu trả lời của bạn. Cảm ơn vì -Infbit của nó sẽ rất hữu ích!
csheth

Đối với một raster rất lớn, điều này sẽ mất một lúc, hoặc thậm chí có thể thất bại. Trong trường hợp đó, bạn có thể cân nhắc sử dụng trước aggregatevì bạn sẽ không thấy sự khác biệt nào.
Robert Hijmans

Ngay cả khi chỉ có 100 ô sau khi chạy aggregate()trên r, nó vẫn chưa được xử lý (máy tính được trang bị RAM 16 GB). Vấn đề là tôi cần giữ ranh giới như bản gốc nhất có thể, vì DEM cần được trích xuất từ ​​đa giác kết quả. Nếu tôi tiếp tục lấy mẫu raster của mình, tôi sẽ mất ranh giới đó. Bất kỳ công việc xung quanh?
csheth
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.