Je me demande comment joindre des polygones spatiaux en utilisant le code R?
Je travaille avec des données de recensement où certaines zones changent au fil du temps et je souhaite joindre les polygones et les données correspondantes et simplement signaler les zones jointes. Je tiens à jour une liste de polygones qui ont changé de recensement en recensement et que je prévois de fusionner. J'aimerais utiliser cette liste de noms de régions comme liste de recherche à appliquer aux données du recensement de différentes années.
Je me demande quelle fonction R utiliser pour fusionner les polygones sélectionnés et les données respectives. Je l'ai googlé, mais je suis tout simplement confus par les résultats.
polygon
r
spatial-statistics
attribute-joins
census
Geoconfused
la source
la source
R
lamerge
fonction de.Réponses:
La solution suivante est basée sur un article de Roger Bivand sur R-sig-Geo . J'ai pris son exemple en remplaçant le fichier de formes allemand par des données de recensement de l'Oregon que vous pouvez télécharger à partir d' ici (prenez toutes les composantes du fichier de formes des «comtés de l'Oregon et données de recensement»).
Commençons par charger les packages requis et importer le fichier de formes dans R.
Ensuite, vous avez besoin d'une variable de regroupement afin d'agréger les données. Dans notre exemple, le regroupement est simplement basé sur les coordonnées d'un seul comté. Voir l'image ci-dessous, les bordures noires indiquent les polygones d'origine, tandis que les bordures rouges représentent les polygones agrégés par
oregon.id
.Jusqu'ici tout va bien. Cependant, les attributs de données liés aux sous-régions du fichier de formes d'origine (par exemple la densité de population, la superficie, etc.) sont perdus lors de l'exécution
unionSpatialPolygons
. Je suppose que vous souhaitez également agréger vos données de recensement associées au fichier de formes, vous aurez donc besoin d'une étape intermédiaire.Vous devez d'abord convertir vos polygones en une trame de données afin d'effectuer l'agrégation. Prenons maintenant les colonnes d'attributs de données six à huit ("AREA", "POP1990", "POP1997") et agrégons-les en fonction de la fonction d'application des ID ci-dessus
sum
.Enfin, reconvertissez votre trame de données en
SpatialPolygonsDataFrame
fournissant le fichier de formes précédemment unifiéoregon.union
et vous obtenez à la fois des polygones généralisés et vos données de recensement dérivées de l'étape d'agrégation de résumé ci-dessus.la source
Voici une solution utilisant le package sf:
la source
summarise()
dérivés avec l'do_union
argument, car je viens de faire quelque chose commesummarise_if(shapefile, predic.function, sum, na.rm = TRUE, do_union = TRUE)
, qui finit également par additionner un VRAI dans chaque cellule (c'est-à-dire +1 pour toutes les opérations). Besoin d'enquêter davantage pour savoir si c'est quelque chose qui doit être signalé (au moins pour un avertissement supplémentaire) ...?