Câu trả lời:
Trong R
, sử dụng crop
để trích xuất các giá trị và ( ví dụ ) table
để đếm chúng.
Ví dụ: hãy tạo lưới 1 độ bao phủ toàn cầu:
library(raster)
x.raster <- raster(outer(179:0, 0:359, `+`), xmn=-180, xmx=180, ymn=-90, ymx=90)
Hộp giới hạn được chuyển đổi thành một extent
đối tượng để sử dụng crop
:
y.extent <- extent(cbind(c(-125,20), c(-60,50)))
y.raster <- crop(x.raster, y.extent)
Đã làm điều đó, lập bảng là đơn giản:
table(getValues(y.raster))
Trong đầu ra này, hàng đầu tiên liệt kê các giá trị và hàng thứ hai liệt kê tổng số tương ứng của chúng:
165 166 167 ... 257 258
1 2 3 ... 2 1
Để kiểm tra, chúng ta có thể vẽ sơ đồ raster và mức độ:
plot(x.raster)
plot(y.extent, add=T)
Một bổ sung nhỏ: bạn cũng có thể sử dụng chức năng "freq" (bộ nhớ an toàn):
Theo câu trả lời của whuber:
library(raster)
x.raster <- raster(outer(179:0, 0:359, '+'), xmn=-180, xmx=180, ymn=-90, ymx=90)
y.extent <- extent(cbind(c(-125,20), c(-60,50)))
y.raster <- crop(x.raster, y.extent)
Nhưng bây giờ làm:
freq(y.raster)
Nó chỉ quan trọng đối với các đối tượng rất lớn (raster trên tệp). 'freq' trả về ma trận hai cột (giá trị / số đếm) trong khi 'bảng' trả về một bảng.
crop
hoạt động trong một phút lưới bao phủ trái đất: nó có 10800 hàng và 21600 cột (233.280.000 ô). Cây trồng đã được thực hiện trong tổng thời gian 1,36 giây.
v <- extract(x.raster, y.extent)
tiếp theo là table(v)
extract
đến từ đâu? Nó không phải là một phần của raster
và R
hệ thống trợ giúp ( ??
) cũng không tìm thấy bất kỳ chức năng nào có tên này.