无法从栅格中提取值 - 获取 NULL 结果
Unable to extract values from a raster - getting NULL results
我在 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 栅格。代码 return 是一个包含 884 个元素的列表,每个元素都具有栅格中位于相应多边形内的所有像素的值。
但是,landuse_raster 的代码只是 return 一个包含 884 个元素的列表,其中填充了 NULL 值。我无法找出相同的原因。任何帮助将不胜感激。
如果有任何其他提取方法 return 多边形的所有像素值,我什至会很好。
此致,
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)
我在 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 栅格。代码 return 是一个包含 884 个元素的列表,每个元素都具有栅格中位于相应多边形内的所有像素的值。
但是,landuse_raster 的代码只是 return 一个包含 884 个元素的列表,其中填充了 NULL 值。我无法找出相同的原因。任何帮助将不胜感激。
如果有任何其他提取方法 return 多边形的所有像素值,我什至会很好。
此致,
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)