Использование R для пространственного соединения фрейма данных с точками широты и долготы с шейп-файлом многоугольника

Я надеюсь написать программу R, которая считывает фрейм данных с точками широты и долготы и шейп-файл из 13 многоугольников, а затем определяет, в каком многоугольнике расположена каждая точка широты и долготы. Есть ли пакет R, который позволяет мне выполнять этот тип пространственного соединения? Я использую rgdal для чтения шейп-файла многоугольника, но я не вижу возможности выполнить пространственное соединение со столбцами lat / long в моем фрейме данных. Спасибо!


person user3786999    schedule 25.04.2016    source источник
comment
так же просто, как преобразовать ваш фрейм данных широты / долготы в SpatialPointsDataFrame, а затем использовать функцию over из library(sp)   -  person G. Cocca    schedule 26.04.2016
comment
Это может быть полезно: stackoverflow.com/questions/13316185/   -  person ano    schedule 26.04.2016
comment
Сработало отлично. Спасибо.   -  person user3786999    schedule 28.04.2016


Ответы (1)


Решение G. Cocca отлично работало после некоторых незначительных модификаций.

В конечном итоге решение потребовало четырех шагов с использованием R library(sp) и library(EcoSpatial):

  1. Преобразуйте фрейм данных точки широты / долготы в SpatialPointsDataFrame с помощью sp.
  2. Используйте функцию proj4string sp, чтобы перепроецировать SpatialPointsDataFrame, чтобы он использовал ту же проекцию, что и мой шейп-файл многоугольника.
  3. Используйте функцию EcoSpatial points.in.poly, чтобы пространственно объединить два набора данных. Это ключевой шаг, поскольку он создает новый SpatialPointsDataframe, который прикрепляет соответствующие данные полигона к каждой точке xy.
  4. Используйте as.data.frame, чтобы вернуть SpatialPointsDataframe в обычный R data.frame.

Спасибо еще раз за помощь!

person user3786999    schedule 28.04.2016