无法从栅格中提取值 - 获得NULL结果

时间:2018-01-16 05:32:06

标签: r gis extract r-raster

我在R中加载了相同地理位置的三个栅格。

> ndvi
class       : RasterLayer 
dimensions  : 1138, 1171, 1332598  (nrow, ncol, ncell)
resolution  : 30, 30  (x, y)
extent      : 766867.4, 801997.4, 1420228, 1454368  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=43 +datum=WGS84 +units=m +no_defs +ellps=WGS84 
+towgs84=0,0,0 
data source : in memory
names       : layer 
values      : -0.4103095, 0.7972555  (min, max)


> temp_celsius_lst
class       : RasterLayer 
dimensions  : 1138, 1171, 1332598  (nrow, ncol, ncell)
resolution  : 30, 30  (x, y)
extent      : 766867.4, 801997.4, 1420228, 1454368  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=43 +datum=WGS84 +units=m +no_defs +ellps=WGS84 
+towgs84=0,0,0 
data source : in memory
names       : layer 
values      : 21.56528, 40.01204  (min, max)


> landuse_raster
class       : RasterLayer 
dimensions  : 1138, 1171, 1332598  (nrow, ncol, ncell)
resolution  : 30, 30  (x, y)
extent      : 766867.4, 801997.4, 1420228, 1454368  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
data source : in memory
names       : layer 
values      : 0.93, 0.98  (min, max)

我还有一个多边形层,如下所示。

> urbangreen_buffer
class       : SpatialPolygonsDataFrame 
features    : 884 
extent      : 774055.5, 791282.7, 1421905, 1446710  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=43 +datum=WGS84 +units=m +no_defs +ellps=WGS84 
+towgs84=0,0,0 
variables   : 6
names       : Id     
min values  :  1 
max values  :  9

我要做的是从与多边形区域相交的栅格中提取数据。我使用以下代码:

extract(ndvi, urbangreen_buffer)
extract(temp_celsius_lst, urbangreen_buffer)
extract(landuse_raster, urbangreen_buffer)

适用于ndvi和temp_celsius_lst栅格。该代码返回一个包含884个元素的列表,每个元素的栅格中所有像素的值都位于相应的多边形内。

但是,landuse_raster的代码只返回一个列表,其中包含884个填充NULL值的元素。我无法找出相同的原因。任何帮助将不胜感激。

如果有任何其他提取方法返回多边形的所有像素值,我甚至会很好。

此致

1 个答案:

答案 0 :(得分:1)

landuse_raster有这个crs:+proj=longlat +datum=WGS84 +ellps=WGS84,根据范围显然是错误的。据说它确实与其他数据具有相同的crs。所以我会尝试:

crs(landuse_raster) <- "+proj=utm +zone=43 +datum=WGS84 +units=m +no_defs +ellps=WGS84"
e <- extract(landuse_raster, urbangreen_buffer)

或者他们所有人在一起:

s <- stack(ndvi, temp_celsius_lst, landuse_raster)
ee <- extract(s, urbangreen_buffer)