Đếm giá trị raster trong hộp giới hạn (phạm vi không gian)


11

Đưa ra một hộp giới hạn, làm thế nào tôi có thể đếm số lượng giá trị cụ thể (giả sử, tôi quan tâm đến số lượng value == 1) trong một raster trong 1) gói Arcpy hoặc 2) trong Raster?

Câu trả lời:


10

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)

Bản đồ


3

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.


Có cách nào chỉ thực hiện truy vấn không gian chứ không phải cắt xén hình ảnh? Cắt xén có thể rất chậm để xử lý.
Nhìn thấy

1
Cắt xén nên rất nhanh. Để thử nghiệm, tôi đã tính thời gian cho 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.
whuber

Tôi cũng nghĩ rằng nó nên nhanh, nhưng bạn có thể so sánh ở trên với truy vấn không gian này: v <- extract(x.raster, y.extent) tiếp theo là table(v)
Robert Hijmans

1
Robert, thư viện extractđến từ đâu? Nó không phải là một phần của rasterRhệ 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.
whuber

Đây là một chức năng trong gói raster. ? trích xuất cho thấy rằng (ít nhất là đối với tôi)
Robert Hijmans
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.