为什么R scale {raster}函数提供的输出与在PythonWin中缩放相同栅格的输出不同?

时间:2015-02-23 20:41:00

标签: python transformation raster arcpy r-raster

我已经使用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的输出的方法不同?提前感谢您对此事的任何想法。

1 个答案:

答案 0 :(得分: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))