1

我用一些数据在 R 中执行了空间插值,并在创建地图时遇到了困难。我必须使用spplot这样做。当我从那里测试代码示例时:

 data(meuse)
 coordinates(meuse) <- ~x+y
 l2 = list("SpatialPolygonsRescale", layout.north.arrow(), offset =
 c(181300,329800), scale = 400)
 l3 = list("SpatialPolygonsRescale", layout.scale.bar(), offset =
 c(180500,329800), scale = 500, fill=c("transparent","black"))
 l4 = list("sp.text", c(180500,329900), "0")
 l5 = list("sp.text", c(181000,329900), "500 m")

 spplot(meuse, c("ffreq"), sp.layout=list(l2,l3,l4,l5),
 col.regions= "black", pch=c(1,2,3),
 key.space=list(x=0.1,y=.95,corner=c(0,1)))

一切都按预期工作。当我将它应用到我的数据集时,我得到一个错误

Error in printFunction(x, ...) : 
  (list) object cannot be coerced to type 'double'

这就是我的代码的样子:

l2 = list("SpatialPolygonsRescale", layout.north.arrow(), offset =
            c(5400000,500000), scale = 400)
l3 = list("SpatialPolygonsRescale", layout.scale.bar(), offset =
            c(5400000,500000), scale = 25000, fill=c("transparent","black"))
l4 = list("sp.text", c(5400000,500000), "0")
l5 = list("sp.text", c(5400000,500000), "25 km")

# Use the ColorBrewer library for color ramps
library(RColorBrewer)
precip.pal <- colorRampPalette(brewer.pal(7, name="Blues"))

# plot the interpolation
spplot(bla.krige, zcol='bla.pred', col.regions=precip.pal,contour=TRUE, 
       col='black',
       pretty=TRUE,
       scales=list(draw = TRUE),
       labels=TRUE,
       layout=list(l2,l3,l4,l5))

知道如何解决这个问题吗?我的数据看起来与 spplot 文档中给出的示例几乎相同。感谢您的任何提示!

4

1 回答 1

1

我自己找到了解决方案……我有点草率。

  1. 尽管调用了 package sp,但参数仍然是sp.layout,而不仅仅是layout(rtfm 问题)。
  2. 我混合了我的空​​间范围的纬度和经度。所以应该是c(500000,5400000)而不是c(5400000,500000)
于 2015-09-15T09:45:45.950 回答