光栅:在 R 中也计算零点出现
raster: Count zeros points occurrence too in R
当我没有点时,我无法按像素计算光栅中的点数。在我的例子中:
#Create a raster and some points
xmn = 17;xmx = 23;ymn=42;ymx=49
my_ras<-raster(matrix(1:12,3,4), xmx=xmx, xmn=xmn,ymx=ymx,ymn=ymn)
my_points<-data.frame(x=runif(10,xmn,xmx), y=runif(10,ymn,ymx))
#Count the points
pointcount<- rasterize(my_points, my_ras, fun='count')
#Vizualize
plot(my_ras)
points(my_points, pch=16)
d <- data.frame(coordinates(pointcount), count=pointcount[])
summary(d)
# x y count
# Min. :17.75 Min. :43.17 Min. :1.000
# 1st Qu.:18.88 1st Qu.:43.17 1st Qu.:1.000
# Median :20.00 Median :45.50 Median :1.500
# Mean :20.00 Mean :45.50 Mean :1.667
# 3rd Qu.:21.12 3rd Qu.:47.83 3rd Qu.:2.000
# Max. :22.25 Max. :47.83 Max. :3.000
# NA's :6
在这里,问题是我没有没有点的像素的 0 值。我不能制作零点栅格,因为在现实世界中,我的栅格中有目标区域外的 NA
值,这会导致实际零点(无点)和区域边界外的零点之间出现错误。
我需要 zeros 和 NA 值(如果有的话)(显然在这种情况下没有),有什么想法吗?也许 sf
包里有这样的东西。
示例数据
library(raster)
xmn = 17;xmx = 23;ymn=42;ymx=49
ras <-raster(matrix(1:12,3,4), xmx=xmx, xmn=xmn,ymx=ymx,ymn=ymn)
points <-data.frame(x=runif(10,xmn,xmx), y=runif(10,ymn,ymx))
您可以使用 background=0
而不是 NA
pointcount<- rasterize(points, ras, fun='count', background=0)
如果现在要排除某些区域,可以使用raster::mask
。或者,如果您的栅格具有 NA 和零值,则可以将 rasterize
与 update=TRUE
一起使用
当我没有点时,我无法按像素计算光栅中的点数。在我的例子中:
#Create a raster and some points
xmn = 17;xmx = 23;ymn=42;ymx=49
my_ras<-raster(matrix(1:12,3,4), xmx=xmx, xmn=xmn,ymx=ymx,ymn=ymn)
my_points<-data.frame(x=runif(10,xmn,xmx), y=runif(10,ymn,ymx))
#Count the points
pointcount<- rasterize(my_points, my_ras, fun='count')
#Vizualize
plot(my_ras)
points(my_points, pch=16)
d <- data.frame(coordinates(pointcount), count=pointcount[])
summary(d)
# x y count
# Min. :17.75 Min. :43.17 Min. :1.000
# 1st Qu.:18.88 1st Qu.:43.17 1st Qu.:1.000
# Median :20.00 Median :45.50 Median :1.500
# Mean :20.00 Mean :45.50 Mean :1.667
# 3rd Qu.:21.12 3rd Qu.:47.83 3rd Qu.:2.000
# Max. :22.25 Max. :47.83 Max. :3.000
# NA's :6
在这里,问题是我没有没有点的像素的 0 值。我不能制作零点栅格,因为在现实世界中,我的栅格中有目标区域外的 NA
值,这会导致实际零点(无点)和区域边界外的零点之间出现错误。
我需要 zeros 和 NA 值(如果有的话)(显然在这种情况下没有),有什么想法吗?也许 sf
包里有这样的东西。
示例数据
library(raster)
xmn = 17;xmx = 23;ymn=42;ymx=49
ras <-raster(matrix(1:12,3,4), xmx=xmx, xmn=xmn,ymx=ymx,ymn=ymn)
points <-data.frame(x=runif(10,xmn,xmx), y=runif(10,ymn,ymx))
您可以使用 background=0
而不是 NA
pointcount<- rasterize(points, ras, fun='count', background=0)
如果现在要排除某些区域,可以使用raster::mask
。或者,如果您的栅格具有 NA 和零值,则可以将 rasterize
与 update=TRUE