R中的rasterToPoints不返回整数值。

问题描述 投票:0回答:1

我试图用以下方法将一个栅格转换为一个空间点数据框架。

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

我做了一些搜索,发现问题在于转换后的空间点没有定位在像素的中心。我想这和程度有关系。有谁有建议的解决方法吗?谢谢。

raster points
1个回答
0
投票

我认为你的假设是错误的。如果你得到这样的值 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

这与细胞的中心或程度无关。

© www.soinside.com 2019 - 2024. All rights reserved.