首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从R中的Kriging插值中提取点坐标的具体值?

如何从R中的Kriging插值中提取点坐标的具体值?
EN

Stack Overflow用户
提问于 2018-05-29 23:53:49
回答 1查看 521关注 0票数 0

通过使用RVersion3.4.2和库"geoR",我对不同的变量进行了kriging插值(下面我给出了我的过程的一个例子)。我还为305棵具有不同标记(物种、胸径、高度)的树绘制了一个坐标矩阵,这些标记位于相同的插值空间内,如所附图像(https://imgur.com/SLQBnZH)所示。我一直在寻找从每个树的每个变量中提取最近值的方法,并将相应的值保存在一个data.frame或矩阵中,但是没有成功,而且我找不到具体的答案。

我一直在看的一件事是尝试将克里格结果转换成一个栅格(.tif),然后从那里开始。但是Kriging插值是由向量数据构成的,那么它甚至是可定位的吗?

我很高兴能得到任何帮助,谢谢!

我这样做是为了让后面的数据用于空间点模式分析。

代码语言:javascript
复制
#Kriging####:
PG<-read.csv("PGF.csv", header=T, stringsAsFactors=FALSE)
library("geoR")
x<-(PG$x)
y<-(PG$y)

#Grid
loci<-expand.grid(x=seq(-5, 65, length=100), y=seq(-5, 85, length=100))
names(loci)<-c("x", "y")

mix<-cbind(rep(1,10000), loci$x, loci$y, loci$x*loci$y)

#Model
pH1.mod<-lm(pH1~y*x, data=PG, x=T)
pH1.kg<-cbind(pH1.mod$x[,3], pH1.mod$x[,2], pH1.mod$residuals)
#Transform to geographic data
pH1.geo<-as.geodata(pH1.kg)
#Variogram
pH1.vario<-variog(pH1.geo, max.dist=35)
pH1.vario.mod<-eyefit(pH1.vario)
#Cross validation
pH1.valcruz<-xvalid(pH1.geo, model=pH1.vario.mod)
#Kriging
pH1.krig<-krige.conv(pH1.geo, loc=loci, krige=krige.control(obj.model=pH1.vario.mod[[1]]))
#Predictive model
pH1a.yhat<-mix %*% pH1.mod$coefficients + pH1.krig$predict
#Exchange Kriging prediction values
pH1.krig$predict<-pH1.yhat
#Image
image(pH1.krig2)
contour(pH1.krig2, add=TRUE)

#Tree matrix####:

CoA<-read.csv("CoAr.csv", header=T)
#Data
xa<-(CoA$X)
ya<-(CoA$Y)
points(xa,ya, col=4)

TreeDF<-(cbind.data.frame(xa, ya, CoA$Species, CoA$DBH, CoA$Height, stringsAsFactors = TRUE))
m<-(cbind(xa, ya, 1:305)) 
as.matrix(m)

我尝试使用以下代码通过与预测值的最小距离找到空间中的一个点的值(树1:305) (我建议不要运行这个值,因为这需要太长时间):

代码语言:javascript
复制
for(i in 1:2){print(c(2:10000)[as.matrix(dist(rbind(m[i,], as.matrix(pH1.krig2$predict))))[i,2:10000]==min(as.matrix(dist(rbind(m[i,],as.matrix(pH1.krig2$predict))))[i,2:10000])])}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-31 16:37:02

在下面的链接中,aldo_tapia的回答是解决这个问题所需的方法。谢谢大家!https://gis.stackexchange.com/questions/284698/how-to-extract-specific-values-with-point-coordinates-from-kriging-interpolation

这一过程如下:

使用光栅包中的提取()函数:

代码语言:javascript
复制
library(raster)

r <- SpatialPointsDataFrame(loci, data.frame(predict = pH1.krig$predict))
gridded(r) <- T
r <- as(r,'RasterLayer')

pts <- SpatialPointsDataFrame(CoA[,c('X','Y')],CoA)

pH1.arb <-extract(r, pts)

对此,我只是通过cbind将值添加到树数据框架中,因为它们是有序的。

代码语言:javascript
复制
COA2<-cbind(CoA, pH1val=pH1.arb)

我将对每个变量重复这个过程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50594542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档