【问题标题】:Why does R scale{raster} function give a different output than scaling the same raster in PythonWin?为什么 R scale{raster} 函数给出的输出与在 PythonWin 中缩放相同的栅格不同?
【发布时间】:2015-02-23 20:40:59
【问题描述】:

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

【问题讨论】:

  • 这些小的差异可能是由于浮点数据类型不同或两种语言之间的某些原因造成的。

标签: python transformation raster arcpy r-raster


【解决方案1】:

你有没有检查过

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))

【讨论】:

  • 感谢您花时间考虑我的问题。这是个好主意。我确实检查了 R 和 PythonWin 的 inputras 统计数据是否相同……而且它们都是相同的; mean=1473.1 和 stdev=876.8。
猜你喜欢
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-28
  • 1970-01-01
  • 2016-03-14
  • 2016-12-16
相关资源
最近更新 更多