我试图用以下方法将一个栅格转换为一个空间点数据框架。
mypts <- rasterToPoints(myraster, spatial=T)
输入的栅格 "myraster "只接受整数值: 1,2,3,4,5。1,2, 3, 4, 5. 但是输出的 mypts@data
有非整数值,如4.638932。
我的临时解决方案是做一个简单的四舍五入。
mydata <- round(mypts@data) # deal with floating points - temporary solution
我做了一些搜索,发现问题在于转换后的空间点没有定位在像素的中心。我想这和程度有关系。有谁有建议的解决方法吗?谢谢。
我认为你的假设是错误的。如果你得到这样的值 4.638932
那么光栅的值就不是整数。 请看这些例子。
library(raster)
r <- raster(ncol=36, nrow=18, vals=1:(18*36))
x <- rasterToPoints(r, spatial=T)
head(x, 3)
# layer
#1 1
#2 2
#3 3
非整数数据
rr <- sqrt(r)
xx <- rasterToPoints(rr, spatial=T)
head(xx, 3)
# layer
#1 1.000000
#2 1.414214
#3 1.732051
要检查你的数据,你可以做这样的工作(四舍五入的栅格值)。
rrr <- round(rr)
xxx <- rasterToPoints(rrr, spatial=T)
head(xxx, 3)
# layer
#1 1
#2 1
#3 2
这与细胞的中心或程度无关。