Объединение набора пространственных точечных данных с набором пространственных данных сетки с использованием R. (Основной набор данных в формате точек SP)

Я работаю над пространственными наборами данных, используя R.

Описание данных

Мой основной набор данных находится в SpatialPointsDataFrame формат и содержит данные о температуре поверхности (названия столбцов - "uralLSTday", "uralLSTnight") за каждый месяц. Фрагмент данных показан ниже:

Основные данные - (в формате 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 в таблице "second_data" за каждый месяц. Фрагмент "second_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 ответ

Если твой 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 будет предлагать аналогичную функциональность, но использовать разные имена.

Другие вопросы по тегам