Более

Добавить атрибуты точек shp в Polygon shp по местоположению точки (как пространственное соединение в ArcGIS)


У меня есть набор точек в .shp (ESRI, доступен здесь: http://ulozto.cz/xGqRVFrR/voronoi-zip). Я хотел бы рассчитать тесселяцию Вороного по точкам, создав таким образом полигоны. Все идет нормально. Однако, таблица атрибутов точек не переносится автоматически в R в тесселяционные полигоны Вороного во время расчета (как в ArcGIS).

Таким образом, в зависимости от пространственного положения точек я хочу добавить атрибуты точек к моим новым многоугольникам Вороного. Я пытался использовать функцию

над (diagram.poly, bod.sp)

но он создает data.frame, а не многоугольник.

Пожалуйста,

  1. как автоматически добавлять атрибуты точек в многоугольник Вороного ИЛИ
  2. как использовать полученный data.frame в качестве таблицы атрибутов многоугольника?

Я уверен, что это довольно тривиальная задача, но до сих пор не могу найти ответ!

мой код:

# пример с моей библиотекой данных (spatstat) library (sp) library (deldir) library (rgdal) library (maptools) # set directory wd <- setwd ("C: / Users / *** / voronoi") # read point shp , рассматривается как SpatialPointsDataFrame bod <-readOGR (dsn = setwd ("C: / Users / *** / voronoi"), layer = "voronoi_tess") # сначала преобразовать в ppp (шаблон пространственной точки (объект класса "ppp") bod.ppp <-as.ppp (bod) # вычислить тесселяционную диаграмму Вороного <-dirichlet (bod.ppp) # преобразовать диаграмму в SpatialPolygon diagram.poly = as (diagram, "SpatialPolygons") # использовать CRS из "bod" proj = CRS (proj4string (bod)) # определить диаграмму CRS proj4string (diagram.poly) = proj # проверить идентичность проекций (proj4string (bod), proj4string (diagram.poly)) # построить график результатов (diagram.poly, border = "darkgrey") points (bod, col = "red", pch = 16) # пытаемся применить функцию over {sp}, создавая data.frame over (diagram.poly, bod)


Здесь я размещаю свой ответ:

Я пропустил, как конвертировать ПространственныйПолигон к SpatialPolygonDataFrame и разница между ними. SpatialPolygon не содержит таблицы атрибутов, в отличие от SpatialPolygonDataFrame. Таким образом, таблицу атрибутов можно легко добавить из моей таблицы атрибутов точек. Не нужно использовать над функция :-D

# переписанный код библиотека (sp) библиотека (deldir) библиотека (rgdal) библиотека (maptools) библиотека (spatstat) # установка каталога wd <- setwd ("C: / Users / *** / voronoi") # точка чтения shp , рассматривается как SpatialPointsDataFrame bod <-readOGR (dsn = setwd ("C: / Users / *** / voronoi"), layer = "voronoi_tess") # сначала преобразовать в ppp (шаблон пространственной точки (объект класса "ppp") bod.ppp <-as.ppp (bod) # вычислить диаграмму тесселяции voronoi <-dirichlet (bod.ppp) # преобразовать диаграмму в SpatialPolygon - без таблицы атрибутов diagram.poly = as (diagram, "SpatialPolygons") # создать таблицу атрибутов из указывает shp (bod), as data frame att.bod <-as.data.frame (bod) # преобразовать его в SpatialPolygonDataFrame - включить SpatialPolygon + таблицу атрибутов (att.bod) s_poly <- SpatialPolygonsDataFrame (diagram.poly, att.bod ) # экспорт в ArcGIS для проверки атрибутов writeOGR (s_poly, wd, "s_poly", driver = "ESRI Shapefile")


Смотреть видео: Reclassify u0026 Convert Raster to Shapefile Polygon u0026 Calculate Area Using ArcGIS (October 2021).