首页 文章

使用R将空间点数据集与空间栅格数据集合并(主数据集采用SP点格式)

提问于
浏览
0

我正在研究使用R的空间数据集 .

数据描述

我的主数据集采用 SpatialPointsDataFrame 格式,并且每个月都有表面温度数据(列名称 - "ruralLSTday",01231898) . 数据摘要如下所示:

主数据 - (以SpatialPointsDataFrame格式)

TOWN_ID ruralLSTday ruralLSTnight year month
2920006.11 2920006    303.6800      289.6400 2001     0
2920019.11 2920019    302.6071      289.0357 2001     0
2920015.11 2920015    303.4167      290.2083 2001     0
3214002.11 3214002    274.9762      293.5325 2001     0
3214003.11 3214003    216.0267      293.8704 2001     0
3207010.11 3207010    232.6923      295.5429 2001     0

坐标:

longitude latitude
2802003.11  78.10401 18.66295
2802001.11  77.89019 18.66485
2803003.11  79.14883 18.42483
2809002.11  79.55173 18.00016
2820004.11  78.86179 14.47118

我想在上面有关降雨和气温的数据中添加列 - 这个数据每月在表"secondary_data"的 SpatialGridDataFrame 中显示 . "secondary_data"的片段如下所示:

辅助数据 - (以SpatialGridDataFrame格式)

month meant.69_73 rainfall.69_73
1     1    25.40968      0.6283871
2     2    26.19570      0.4580542
3     3    27.48942      1.0800000
4     4    28.21407      4.9440000
5     5    27.98987      9.3780645

坐标:

longitude latitude
[1,]      76.5      8.5
[2,]      76.5      8.5
[3,]      76.5      8.5
[4,]      76.5      8.5
[5,]      76.5      8.5

如何通过匹配纬度经度和月份,将辅助数据中的列添加到主数据中?目前,上面两个表中的纬度/经度信息不完全匹配,因为主数据是一组点,而辅助数据是网格 .

有没有办法在“辅助数据”中找到我的主数据的纬度/经度落入的网格的平方,并进行插值?

1 回答

  • 2

    如果你的 SpatialPointsDataFrame 对象被称为 x ,你的 SpatialGridDataFrame 被称为 y ,那么

    x <- cbind(x, over(x, y))
    

    y 匹配的属性(网格单元格值)添加到 x 的位置,添加到 x 的属性 . 匹配由网格点单元格完成 .

    插值是一个不同的问题;一种简单的方法是与四个最近邻居的反距离,例如通过

    library(gstat)
    x = idw(meant.69_73~1, y, x, nmax = 4)
    

    你是否想要一个,或者另一个真正取决于你的网格单元意味着什么:它们是指(i)网格单元中心的点值,(ii)整个网格单元中恒定的值,或者(iii)整个网格单元的平均值 . 第一种情况:插值,第二种情况:使用 over ,第三种情况:使用区域到点插值(此处未说明) .

    R包 raster 将提供类似的功能,但使用不同的名称 .

相关问题