2012-08-29 32 views
0

我使用R功能autokrigeautomap包,但我得到一個錯誤,我不知道如何解決它。你有什麼提示嗎?autokrige和proj4string

謝謝!

sp.poidf <- SpatialPointsDataFrame(sp.poi,thresh.df) 
proj4string(sp.poidf) <- CRS("+proj=longlat +datum=WGS84") 
pro.df=spTransform(sp.poidf, CRS("+proj=merc +zone=32s +datum=WGS84")) 
sp.new <- SpatialPoints(new.poi) 
proj4string(sp.new) <- CRS("+proj=longlat +datum=WGS84") 
pro.new <- spTransform(sp.new, CRS("+proj=merc +zone=32s +datum=WGS84")) 
mykri <- autoKrige(mythresh~1,pro.df,newdata=pro.new) 

Error in function (classes, fdef, mtable) : 
unable to find an inherited method for function "proj4string", for signature "NULL" 

回答

5

下面的代碼重新您的問題:

require(automap) 
require(rgdal) 
loadMeuse() 

proj4string(meuse) = CRS("+init=epsg:28992") 
proj4string(meuse.grid) = CRS("+init=epsg:28992") 
meuse = spTransform(meuse, CRS("+proj=merc +zone=32s +datum=WGS84")) 
# Note that meuse.grid no longer is a grid due to the reprojection 
meuse.grid = spTransform(meuse.grid, CRS("+proj=merc +zone=32s +datum=WGS84")) 

kr = autoKrige(zinc~1, meuse, newdata = meuse.grid) 
Error in function (classes, fdef, mtable) : 
    unable to find an inherited method for function "proj4string", for signature "NULL" 

的問題是,你使用newdata =,而你應該使用new_data =(注意下劃線)。下面的代碼運行的罰款:

kr = autoKrige(zinc~1, meuse, new_data = meuse.grid) 

autoKrige文檔顯示這一點,但krige(從gstat)使用newdata,所以我理解的混亂。

出現問題的是newdata =未被autoKrige識別,並放入參數列表的...部分。當autoKrige調用krige時,由autoKrige提供的new_data和通過...提供的newdata之間存在衝突。爲了防止其他用戶結束相當模糊的錯誤信息,我添加了一個檢查到automap。錯誤代碼現在導致一個例外:

> kr = autoKrige(zinc~1, meuse, newdata = meuse.grid) 
Error in autoKrige(zinc ~ 1, meuse, newdata = meuse.grid) : 
    The argument name for the prediction object is not 'newdata', but 'new_data'. 
+1

新版本將很快在CRAN上。 –

+0

是否有理由不使用被廣泛接受的標準參數名稱'newdata'作爲這種事情?不一致不利於R的學習曲線。 –

+0

是的,但我有點害怕破壞舊版代碼。 –

相關問題