我在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值的元素。我无法找出相同的原因。任何帮助将不胜感激。
如果有任何其他提取方法返回多边形的所有像素值,我甚至会很好。
此致
答案 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)