0

我已经使用 R 和 PythonWin 在空间上应用统计模型。我在两个程序中创建了相同的预测栅格,并且输出不同(不是疯狂不同,而是不同)。我想知道两个预测栅格之间的差异是否可能是由于缩放问题(我必须缩放栅格中的值,因为我缩放了我正在应用的模型中的变量)?

我有 23546 列 x 9157 行、30 x 30 像元大小和浮动像素类型的大型栅格文件。如果我使用 scale{raster} 缩放 R 中的栅格值,则输出的平均值为 7.9e-17 和 stdev 1。

inputras<-raster(file)
outras1<-scale(inputras)
cellStats(outras1, mean)
# returns 7.874414e-17
cellStats(outras1, sd)
# returns 1

如果我通过减去平均值并除以标准偏差来缩放同一栅格的值,我会得到相同的输出。没有惊喜。

X<-cellStats(inputras, mean)
Y<-cellStats(inputras, sd)
outras2<-(inputras-X)/Y
cellStats(outras2, mean)
# returns 7.874414e-17
cellStats(outras2, sd)
#returns 1

如果我在 PythonWin 中对同一栅格使用 arcpy.GetRasterProperties 执行此操作,则会得到不同的输出。

inputras=arcpy.Raster(file)
X=float(arcpy.GetRasterProperties_management (inputras, "MEAN").getOutput(0))
Y=float(arcpy.GetRasterProperties_management (inputras, "STD").getOutput(0))
outras=(inputras-X)/Y
A=arcpy.GetRasterProperties_management (outras, "MEAN")
B=arcpy.GetRasterProperties_management (outras, "STD")
print A, B
#returns a mean of -6.8e-8 and a stdev of 0.999

我也许应该指出,所有输出的最小值和最大值都是相同的。

为什么在使用(据我所知)相同的缩放值方法时,R 与 PythonWin 的输出方式不同?提前感谢您对此事的任何想法。

4

1 回答 1

0

你检查是否

X<-cellStats(inputras, mean)
Y<-cellStats(inputras, sd)

返回与

X=float(arcpy.GetRasterProperties_management (inputras, "MEAN").getOutput(0))
Y=float(arcpy.GetRasterProperties_management (inputras, "STD").getOutput(0))
于 2015-02-27T00:41:04.463 回答