我正在尝试使用R来执行从伊比利亚半岛收集的插值数据频率的映射。 (像这样的https://gis.stackexchange.com/questions/147660/strange-spatial-interpolation-results-from-ordinary-kriging)无法从automap包中正确使用autokrige(R无法很好地读取预测位置)
我的问题是,由于autokrige函数的atributte new_data中的某种错误,绘图并未显示插值数据。
https://cran.r-project.org/web/packages/automap/automap.pdf new_data: 包含预测位置的sp对象。 new_data可以是一个点集,一个网格或一个多边形。不得包含NA。如果未提供此对象,则计算默认值。这通过获取input_data的凸包并在该凸包中放置约5000个网格单元来完成。
我认为问题在于R不能很好地读取转换为poligons的地图,因为如果我避免使用new_data属性,我会得到krigging值的propper图。但我没有获得伊比利亚半岛的良好形状。 有人可以帮我吗?我将非常感激
在这里你可以看到我的数据:http://pastebin.com/QHjn4qjP
实际的代码:因为我改变我的数据坐标UTM投影 现在我没有得到错误消息,但最后的情节不插时,整个地图出现一个单一的颜色:(的
setwd("C:/Users/Ruth/Dropbox/R/pruebas")
#Libraries
library(maps)
library(mapdata)
library(automap)
library(sp)
library(maptools)
library(raster)
library(rgdal)
####################MAPA#############
#obtain the grid of the desired country
map<-getData('GADM', country='ESP', level=0)
#convert the grid to projected data
mapa.utm<-spTransform(mapa3,CRSobj =CRS(" +proj=utm +zone=29 +zone=30 +zone=31 +ellps=WGS84"))
###############################Datos#######################
#submit the data
data1<-read.table("FRECUENCIASH.txt",header=T)
head(data1)
attach(data1)
#convert longlat coordinates to UTM
coordinates(data1)<-c("X","Y")
proj4string(data1) = CRS("+proj=longlat +datum=WGS84")
data1.utm=spTransform(data1, CRS("+proj=utm +zone=29 +zone=30 +zone=31 +ellps=WGS84 "))
######################Kriging interpolation #####################
#Performs an automatic interpolation
kriging_result<-autoKrige(Z~1,data1.utm,mapa.utm,data_variogram = data1.utm)
#Plot the kriging
result1<-automapPlot(kriging_result$krige_output,"var1.pred",sp.layout = list("sp.points", data1.utm));result1
result2<-plot(kriging_result);result2
谢谢你的回答。我试过用utm坐标。现在我没有得到这个错误,但是最终的图不是插值的,整个地图出现在一个单一的颜色中。这是我的新代码。同比是否有这个问题的原因?非常感谢 –
我的第一个猜测是,观察结果在你想要预测的区域之外。如果观察结果很远,那么克里金预测收敛于平均值,这就是你观察到的结果。检查坐标,也许你在坐标变换上做了一些错误,例如在转换为utm之前设置错误的起始坐标系。另请注意,utm与区域一起工作,请为您的研究区域使用正确的区域。 –
我再次添加了区域,我发誓我已经写过它们,可能是所有这些尝试和错误都会抹去它们,我的错误。顺便说一下,我使用这一行:result1 <-automapPlot(kriging_result $ krige_output,“var1.pred”,sp.layout = list(“sp.points”,data1.utm)); result1查看我的点位于何处以及它们都出现在地图内部。所以我不知道错误在哪里。并再次感谢你 –