0

我正在使用 R 处理空间数据集。

资料说明

我的主数据集是SpatialPointsDataFrame格式的,并且每个月都有地表温度数据(列名 - “ruralLSTday”、“ruralLSTnight”)。数据片段如下所示:

主数据 - (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

我想在上述数据中添加有关降雨量和气温的列 - 该数据存在于SpatialGridDataFrame每个月的“secondary_data”表中。“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

问题

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

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

4

1 回答 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将提供类似的功能,但使用不同的名称。

于 2015-07-16T06:55:03.200 回答