将grid2poly与栅格一起使用

时间:2015-03-06 15:41:11

标签: r kml raster r-raster

我正在尝试从栅格中获取数据并将其推送到KML格式,以便获得一系列网格化多边形。

查看网络上的示例,似乎可以选择将grid2polyplotKML一起使用。不幸的是,我遇到了一个我似乎无法解锁的错误。

library(dismo)
require(plotKML)

library(rgdal)

tmin <- getData("worldclim", var = "tmin", res = 10)  # this will download 
# global data on minimum temperature at 10' resolution

tmin1 <- raster(paste(getwd(), "/wc10/tmin1.bil", sep = ""))  # Tmin for     January

newext <- c(-1, 1, 40, 43.5)
tmin1.c <- crop(tmin1, newext)
plot(tmin1.c)

tmin1.c  # look at the info
head(tmin1.c,5)

tminvals <- rasterToPoints(tmin1.c)

tminvals # look at the info
head(tminvals,5)
str(tminvals)

###########################
#Everything works down to here
###########################

library(sp)
coordinates(tminvals) <- ~x+y
gridded(tminvals) <- TRUE

proj4string(tminvals) <- CRS("+proj=longlat +datum=WGS84")
data(SAGA_pal)

dem_poly <- grid2poly(tminvals, "tmin1", method = "sp")

## visualize the data in Google Earth:
kml(dem_poly, colour_scale = SAGA_pal[[1]], colour = tmin1, kmz = TRUE)

我收到来自coordinates(tminvals) <- ~x+y的所有行的错误,如下所示:

  

来自错误(函数(classes,fdef,mtable):     无法为签名'“矩阵”'

找到函数'coordinates&lt; - '的继承方法

我不明白我做错了什么。当我查看数据集tminvals时,内容与原始示例数据eberg_grid看起来大致相同。

1 个答案:

答案 0 :(得分:1)

为什么是多边形而不是光栅KML?

library(raster)
tmin <- getData("worldclim", var = "tmin", res = 10) 
tmin1 <- tmin[[1]]
newext <- c(-1, 1, 40, 43.5)
tmin1.c <- crop(tmin1, newext)

KML(tmin.c, 'test.kml')

如果您需要多边形:

p <- rasterToPolygons(tmin.c)

现在你可以再次使用KML(或kml)

现在解释您收到的错误消息。坐标函数需要一个data.frame,你给它一个矩阵。如果你这样做,它可能会消失:

tminvals <- data.frame(tminvals)
coordinates(tminvals) <- ~x+y