Suite

Ajouter des attributs shp de points à un polygone shp par emplacement de point (en tant que jointure spatiale dans ArcGIS)


J'ai un ensemble de points en .shp (ESRI, disponible ici : http://ulozto.cz/xGqRVFrR/voronoi-zip). Je voudrais calculer le pavage de Voronoi à partir des points, ainsi créer des polygones. Jusqu'ici tout va bien. Pourtant, la table attributaire des points n'est pas transférée automatiquement dans R aux polygones de tesselation de Voronoi pendant le calcul (comme c'est le cas dans ArcGIS).

Ainsi, en fonction de l'emplacement spatial des points, je souhaite ajouter des attributs de points aux nouveaux polygones de Voronoi. J'ai essayé d'utiliser la fonction

over(diagram.poly, bod.sp)

mais il crée data.frame, pas un polygone.

S'il te plaît,

  1. comment ajouter automatiquement les attributs des points au polygone de Voronoi OU ALORS
  2. comment utiliser le data.frame résultant comme table attributaire de mon polygone ?

Je suis sûr que c'est une tâche assez triviale mais je ne trouve toujours pas ma réponse !

mon code :

# exemple avec ma bibliothèque de données(spatstat) library(sp) library(deldir) library(rgdal) library(maptools) # set directory wd<- setwd("C:/Users/***/voronoi") # read point shp , considéré comme SpatialPointsDataFrame bod<-readOGR(dsn=setwd("C:/Users/***/voronoi"), layer="voronoi_tess") # convertit d'abord en ppp (Spatial point pattern (objet de la classe "ppp") bod.ppp<-as.ppp(bod) # calculer le diagramme de pavage de Voronoi<-dirichlet(bod.ppp) # convertir le diagramme en SpatialPolygon diagram.poly=as(diagram, "SpatialPolygons") # utiliser CRS de "bod" proj= CRS(proj4string(bod)) # définir le diagramme CRS proj4string(diagram.poly)=proj # vérifier si les projections sont identiques (proj4string(bod), proj4string(diagram.poly)) # tracer le résultat plot(diagram.poly, border = "darkgrey") points(bod, col = "red", pch = 16) # essayez d'appliquer la fonction over{sp}, produisant data.frame over(diagram.poly, bod)


Ici je poste ma réponse :

J'ai raté comment convertir SpatialPolygone à SpatialPolygonDataFrame et la différence entre eux. SpatialPolygon ne contient pas de table attributaire, contrairement à SpatialPolygonDataFrame. Ainsi, la table attributaire peut être facilement ajoutée à partir de ma table attributaire de points. Pas besoin d'utiliser plus de fonction :-D

# bibliothèque de code réécrit (sp) bibliothèque (deldir) bibliothèque (rgdal) bibliothèque (maptools) bibliothèque (spatstat) # définir le répertoire wd<- setwd("C:/Users/***/voronoi") # point de lecture shp , considéré comme SpatialPointsDataFrame bod<-readOGR(dsn=setwd("C:/Users/***/voronoi"), layer="voronoi_tess") # convertit d'abord en ppp (Spatial point pattern (objet de la classe "ppp") bod.ppp<-as.ppp(bod) # calculer le diagramme de tesselation de voronoi<-dirichlet(bod.ppp) # convertir le diagramme en SpatialPolygon - sans table d'attributs diagram.poly=as(diagram, "SpatialPolygons") # créer une table d'attributs à partir de points shp (bod), as data frame att.bod<-as.data.frame(bod) # le convertir en SpatialPolygonDataFrame - inclure SpatialPolygon + table attributaire (att.bod) s_poly <- SpatialPolygonsDataFrame(diagram.poly, att.bod) ) # export vers ArcGIS pour vérifier les attributs writeOGR(s_poly, wd, "s_poly", driver = "ESRI Shapefile")


Voir la vidéo: EXCEL Vers Shapefile CSV to SHP QGis (Octobre 2021).