比较变异函数和variog函数

时间:2014-02-23 16:30:48

标签: r geospatial projection proj4 geor

我认为(可能是错误的)在最简单的情况下,variog包中的geoRvariogram包中的sp的输出将是相同的。

我有这个数据集:

head(final)
lat     lon  elev seadist  tradist samples rssi
1 60.1577 24.9111 2.392     125 15.21606     200  -58
2 60.1557 24.9214 3.195     116 15.81549     200  -55
3 60.1653 24.9221 4.604     387 15.72119     200  -70
4 60.1667 24.9165 7.355     205 15.39796     200  -62
5 60.1637 24.9166 3.648     252 15.43457     200  -73
6 60.1530 24.9258 2.733      65 16.10631     200  -57

由(我猜)未投影的数据组成,所以我将它们投影

#data projection
#convert to sp object:
coordinates(final) <- ~ lon + lat #longitude first
library(rgdal)
proj4string(final) =  "+proj=longlat +datum=WGS84"
UTM <- spTransform(final, CRS=CRS("+proj=utm +zone=35V+north+ellps=WGS84+datum=WGS84"))

根据gstat

生成没有趋势的变差函数
var.notrend.sp<-variogram(rssi~1, UTM)
plot(var.notrend.sp)

Plot gstat

尝试在geoR中使用

获取相同的输出
UTM1<-as.data.frame(UTM)
UTM1<-cbind(UTM1[,6:7], UTM1[,1:5])
UTM1
coords<-UTM1[,1:2]
coords
var.notrend.geoR <- variog(coords=coords, data=rssi,estimator.type='classical')
plot(var.notrend.geoR)

plot geoR

1 个答案:

答案 0 :(得分:1)

有几点。

  • gstat可以使用未投影的数据,并计算大圆距离
  • 将“投影”设置为"+proj=longlat +datum=WGS84"不会将数据转换为基于笛卡尔网格的系统(例如UTM)

你在variogram的输出中看到的是(合理地)使用大圆距离的事实。如果你查看距离轴的比例,你会发现范围是完全不同的,因为geoR不知道(并且不能解释)你没有使用基于网格的投影的事实

如果您想将苹果与苹果进行比较,请使用rgdalspTransform将坐标系转换为适当的投影,然后创建具有相似规格的变异图。 (注意,gstat定义了一个截止值(跨越数据的框的对角线长度除以3)。)。

经验变异函数高度依赖于距离的定义和分级的选择。 (参见精彩的model-based geostatistics by Diggle and Ribeiro,尤其是第5章,详细讨论了这个问题。