【问题标题】:Unable to extract values from a raster - getting NULL results无法从栅格中提取值 - 得到 NULL 结果
【发布时间】:2018-01-16 05:32:06
【问题描述】:

我在 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 值。我无法找出同样的原因。任何帮助将不胜感激。

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

问候,

【问题讨论】:

  • 你能提供光栅文件和shapefile吗?您的 landuse_raster 文件的投影 (longlat) 与 urbangreen_buffer (utm) 不同。
  • 是的,crs 是问题所在。罗伯特的解决方案解决了问题!
  • 你可以考虑accept他的回答。
  • 谢谢!我之前不知道接受答案...对网站来说还是新手。

标签: r gis extract r-raster


【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 2019-09-01
    相关资源
    最近更新 更多