【问题标题】:How can I extract spatial df altitude values from a raster file?如何从栅格文件中提取空间 df 高度值?
【发布时间】:2019-11-02 06:53:59
【问题描述】:

我需要使用空间数据框点从栅格中提取高度值。

跨越两个对象(光栅和矢量)我刚刚获得了 NA。

> lat41_42_sp
class      : RasterLayer
dimensions : 1201, 10801, 12972001  (nrow, ncol, ncell)
resolution : 0.0008333333, 0.0008333333  (x, y)
extent     : -9.000417, 0.0004166633, 40.99958, 42.00042  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
source     : memory
names      : layer
values     : -12, 2307  (min, max)

> spdf
class       : SpatialPointsDataFrame
features    : 1757
extent      : -46.58056, 71.00404, -158.0419, 174.9681  (xmin, xmax, ymin, ymax)
crs         : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
variables   : 3
names       : WINDFARM_NAME,  LATITUDE,  LONGITUDE
min values  :   'A_Farrapa', -46.58056, -158.04192
max values  :     'Zuromin',  71.00404,   174.9681

空间数据框的范围较长,但有点进入 RasterLayer。

但它不起作用:(。

> my<-extract(lat41_42_sp,spdf)
> my[1:10]
 [1] NA NA NA NA NA NA NA NA NA NA
> head(my)
[1] NA NA NA NA NA NA
> tail(my)
[1] NA NA NA NA NA NA

【问题讨论】:

  • 您能否提供一个可以复制和粘贴的数据样本?

标签: r dataframe spatial r-raster


【解决方案1】:

这可能是因为所有点都在栅格之外。我不能确定,但​​提供的信息表明,点的空间范围远大于栅格的空间范围。

您可以通过以下方式检查栅格上是否有任何点

plot(lat41_42_sp)
points(spdf)

但显然您的 spdf 不正确:您的纬度 (y) 在 -158.0419 和 174.9681 之间;这些肯定是纬度。这表明您在创建spdf 时犯了一个错误,也就是说,您使用了 ("latitude", "longitude") 而不是 ("longitude", "latitude")。您还可以从您显示的 LONGITUDE 和 LATITUDE 的范围中看到。

【讨论】:

  • 我必须以这种方式执行才能看到情节上的点。绘图(lat41_42_sp)点(spdf$LONGITUDE,spdf$LATITUDE)
  • 这表明你在创建spdf时犯了一个错误
【解决方案2】:

尝试只选择栅格中的点:

library(raster)
spdf_in_lat41_42_sp = crop(spdf ,lat41_42_sp)
my<-extract(lat41_42_sp, spdf_in_lat41_42_sp)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    • 2014-04-15
    • 2012-12-15
    • 1970-01-01
    • 2022-11-15
    相关资源
    最近更新 更多