Câu trả lời:
Đâ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)
r > -Inf
là 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.
rasterToPolygons()
phần đó và sau đó tôi sẽ đánh giá câu trả lời của bạn. Cảm ơn vì -Inf
bit của nó sẽ rất hữu ích!
aggregate
vì bạn sẽ không thấy sự khác biệt nào.
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?
r <- r > -Inf
phần này. Chính xác thì nó đang làm gì? Và nó khác nhau như thế nàovalues(r)[!is.na(values(r))] <- 1
(đặt tất cả các vị trí không NA trong r thành 1).