2016-04-29 149 views
0

我正在尝试使用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 

回答

1

你是关系到你使用未投影数据作为输入自动映射的事实错误。自动映射只能处理投影数据。谷歌搜索map projections应该给你一些背景信息。将你的数据投影到一个合适的投影,您可以使用sp包中的spTransform

事实上,它没有newdata工作是因为在该对象投影没有设置,所以automap不能警告你。但是,使用latlon输入数据的automap结果不可靠。

+0

谢谢你的回答。我试过用utm坐标。现在我没有得到这个错误,但是最终的图不是插值的,整个地图出现在一个单一的颜色中。这是我的新代码。同比是否有这个问题的原因?非常感谢 –

+0

我的第一个猜测是,观察结果在你想要预测的区域之外。如果观察结果很远,那么克里金预测收敛于平均值,这就是你观察到的结果。检查坐标,也许你在坐标变换上做了一些错误,例如在转换为utm之前设置错误的起始坐标系。另请注意,utm与区域一起工作,请为您的研究区域使用正确的区域。 –

+0

我再次添加了区域,我发誓我已经写过它们,可能是所有这些尝试和错误都会抹去它们,我的错误。顺便说一下,我使用这一行:result1 <-automapPlot(kriging_result $ krige_output,“var1.pred”,sp.layout = list(“sp.points”,data1.utm)); result1查看我的点位于何处以及它们都出现在地图内部。所以我不知道错误在哪里。并再次感谢你 –