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.
crophoạ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 rastervà Rhệ 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.