【发布时间】:2018-09-17 16:59:19
【问题描述】:
我正在尝试从 USGS 创建的历史土地利用和土地覆盖数据库中提取草原值。我对Raster 包和getValues 选项有一些问题。 tiff 文件太大,无法在此帖子中添加,但可在线获取。
数据在Land-use and Land-cover Backcasting 下可用。
这是我的代码:
install.packages("raster")
install.packages("rastervis")
install.packages("RCurl")
install.packages("R.utils")
install.packages("rgdal")
install.packages("sp")
install.packages("maptools")
install.packages("tibble")
install.packages("ggplot2")
install.packages("gridExtra")
library(R.utils)
library(rgdal)
library(sp)
library(maptools)
library(raster)
library(rasterVis)
library(RCurl)
library(R.utils)
library(rgdal)
library('rgdal')
library('raster')
library("tibble")
library('ggplot2')
tiff 格式的土地覆盖文件:
Landcover1 <- raster ("CONUS_Backcasting_y1938.tif")
美国县档案:
USA_county <- readOGR("UScounties",layer="UScounties")
这两个文件不在同一个投影中,所以投影:
newprojection <- "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84
+towgs84=0,0,0"
projected_raster_landcover1 <- projectRaster(Landcover1, crs =
newprojection)
现在,我想只提取草地的土地覆盖数据(总共有 17 个土地类别,草地编码为 '11')
Landcover1_values <- extract(x = projected_raster_landcover1,
y = USA_county)
但是当我使用getValues提取草原时,
Landcover1_values_count<- lapply(Landcover1_values, FUN = function(x) {
length(which(getValues(x) == 11)) })
显示错误:
**Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘getValues’ for signature ‘"numeric", "missing", "missing"’**
我以为是NA,但我不知道如何解决这个问题。
【问题讨论】: