Más

Agregar atributos de puntos shp a Polygon shp por ubicación de punto (como unión espacial en ArcGIS)

Agregar atributos de puntos shp a Polygon shp por ubicación de punto (como unión espacial en ArcGIS)


Tengo un conjunto de puntos en .shp (ESRI, disponible aquí: http://ulozto.cz/xGqRVFrR/voronoi-zip). Me gustaría calcular la teselación de Voronoi a partir de los puntos, así crear polígonos. Hasta ahora tan bueno. Sin embargo, La tabla de atributos de puntos no se transfiere automáticamente en R a los polígonos de teselación de Voronoi durante el cálculo (como es el caso de ArcGIS).

Por lo tanto, dependiendo de la ubicación espacial de los puntos, quiero agregar atributos de puntos a los polígonos de mi nuevo Voronoi. Traté de usar la función

sobre (diagram.poly, bod.sp)

pero crea data.frame, no polígono.

Por favor,

  1. cómo agregar automáticamente atributos de puntos al polígono de Voronoi O
  2. ¿Cómo usar data.frame resultante como tabla de atributos de mi polígono?

Estoy seguro de que es una tarea bastante trivial, ¡pero todavía no puedo encontrar la respuesta!

mi código:

# ejemplo con mi biblioteca de datos (Spatstat) biblioteca (sp) biblioteca (deldir) biblioteca (rgdal) biblioteca (maptools) # establecer directorio wd <- setwd ("C: / Users / *** / voronoi") # leer punto shp , considerado como SpatialPointsDataFrame bod <-readOGR (dsn = setwd ("C: / Users / *** / voronoi"), layer = "voronoi_tess") # convertir primero a ppp (patrón de puntos espaciales (objeto de clase "ppp") bod.ppp <-as.ppp (bod) # calcular el diagrama de teselación de Voronoi <-dirichlet (bod.ppp) # convertir el diagrama a SpatialPolygon diagram.poly = as (diagrama, "SpatialPolygons") # usar CRS de "bod" proj = CRS (proj4string (bod)) # definir diagrama CRS proj4string (diagram.poly) = proj # comprobar si las proyecciones son idénticas idénticas (proj4string (bod), proj4string (diagram.poly)) # trazar la gráfica de resultado (diagram.poly, border = "darkgrey") puntos (bod, col = "red", pch = 16) # intenta aplicar la función over {sp}, produciendo data.frame over (diagram.poly, bod)


Aquí publico mi respuesta:

Me perdí cómo convertir SpatialPolygon para SpatialPolygonDataFrame y diferencia entre ellos. SpatialPolygon no contiene una tabla de atributos, SpatialPolygonDataFrame sí. Por lo tanto, la tabla de atributos se puede agregar fácilmente desde mi tabla de atributos de puntos. No es necesario usar sobre función :-D

# biblioteca de código reescrito (sp) biblioteca (deldir) biblioteca (rgdal) biblioteca (maptools) biblioteca (spatstat) # establecer directorio wd <- setwd ("C: / Users / *** / voronoi") # leer punto shp , considerado como SpatialPointsDataFrame bod <-readOGR (dsn = setwd ("C: / Users / *** / voronoi"), layer = "voronoi_tess") # convertir primero a ppp (patrón de punto espacial (objeto de clase "ppp") bod.ppp <-as.ppp (bod) # calcular el diagrama de teselación de voronoi <-dirichlet (bod.ppp) # convertir el diagrama a SpatialPolygon - sin tabla de atributos diagram.poly = as (diagrama, "SpatialPolygons") # crear tabla de atributos a partir de puntos shp (bod), como marco de datos att.bod <-as.data.frame (bod) # convertirlo a SpatialPolygonDataFrame - incluir SpatialPolygon + tabla de atributos (att.bod) s_poly <- SpatialPolygonsDataFrame (diagram.poly, att.bod ) # exportar a ArcGIS para verificar los atributos writeOGR (s_poly, wd, "s_poly", driver = "ESRI Shapefile")

Ver el vídeo: Economic Geography: Joining Points to Polygons - The Spatial Join