【发布时间】:2016-01-16 11:28:40
【问题描述】:
我使用raster 函数在R 中导入了两个栅格(栅格A 和B)。
我想将A 的像素提取到数据框中,其中B 等于1。
我正在尝试以下方法,但是,我获得的所有像素都具有相同的值,尽管它们在原始数据集中是不同的。
这两个栅格具有相同的维度(ncols、nrows、ncell、分辨率、范围、投影)。
library(raster)
library(rgdal)
# import inputs
A <- raster('/pat/to/rasterA.tif')
B <- raster('/pat/to/rasterB.tif')
# extract raster values from A over raster B where B == 1
mydata <- data.frame(A[B[B == 1]])
编辑 1
可能是当我执行A[B[B == 1]] 时,来自RasterLayer 的对象A 和B 的类变为numeric,这会产生问题吗?我通过class(A[B[B == 1]]) 发现了这一点,它给出了numeric。
编辑 2
好吧,这很奇怪。我试着做mydata <- data.frame(A[B]),现在输出只有B == 1 位置的原始A。在从A 提取所有像素之前尝试此操作(正如我所料)。我可以通过计算B 中的个数和mydata 中的元素数来确定它是正确的,这是相同的。就像索引跳过了B 中的所有零一样。谁能解释一下?
【问题讨论】:
-
通常在 r 中,TRUE 被转换为 1,FALSE 被转换为 0。因此,栅格可能将 0 和 1 的向量解释为 FALSE 和 TRUE。
标签: r dataframe raster r-raster