Supprimez les écarts entre les polygones avec R

10

Existe-t-il un moyen d'éliminer les petits "éclats" entre les polygones en utilisant R? La solution souhaitée créerait une nouvelle SpatialPolygonsDataFrameoù les frontières partagées entre les polygones coïncident. Je suis particulièrement intéressé par une solution qui utilise R, plutôt qu'ArcMap ou QGIS.

Je serais également intéressé d'entendre une explication des raisons pour lesquelles ces lacunes existent en premier lieu.

Voici un exemple reproductible des données spatiales avec lesquelles je travaille:

library(rgdal)      
library(sp)
library(tigris)
library(magrittr)
library(leaflet)
library(gplots)

# This project will use WGS 84 projected coordinate system
crs_proj <- CRS("+init=epsg:4326") 

# These are the FIPS codes of the specific block groups in my study area
sel <- c("530330079005", "530330079001", "530330079004", 
         "530330085002", "530330085003", "530330086003", 
         "530330087003", "530330085001", "530330090001", 
         "530330091001", "530330091002", "530330092001", 
         "530330092002", "530330086001", "530330090002", 
         "530330086002", "530330079003", "530330079002", 
         "530330087002", "530330087001")

# Create polygons
polygons <- tigris::block_groups(state = "WA",county = "King") %>% 
        .[.@data$GEOID %in% sel,] %>% 
        spTransform(CRSobj = crs_proj)

# Map the result
leaflet() %>% 
        addProviderTiles("CartoDB.Positron") %>% 
        addPolygons(data = polygons,
                    stroke = F,
                    fillColor = col2hex("red"), fillOpacity = 1)

Des éclats ennuyeux entre les polygones

Comme vous pouvez le voir dans la capture d'écran ci-dessus, il existe de petits écarts entre les polygones des groupes de blocs de recensement. L'emplacement de ces espaces est rendu différemment selon le niveau de zoom, mais il y a toujours des espaces visibles.

Quelqu'un peut-il recommander une Rfonction (ou une combinaison de fonctions) pour ajuster par programme les polygones pour éliminer ces lacunes?

Tiernan
la source

Réponses:

5

Il semble que les mensonges de solution dans la mise en l' smoothFactorargument AddPolygonspour 0, comme l'a suggéré dans ce poste connexe: feuilles styling Dépliant GeoJSON écarts entre les polygones

J'ai également jugé nécessaire d'ajouter un petit trait aux polygones afin de supprimer complètement les lacunes du ruban de l'exemple de carte.

leaflet() %>% 
    addProviderTiles("CartoDB.Positron") %>% 
    addPolygons(data = polygons, smoothFactor = 0,
                weight = .75, color = col2hex("red"), opacity = 1,
                fillColor = col2hex("red"), fillOpacity = 1)

entrez la description de l'image ici

Fait intéressant, lorsque j'ai diminué l'opacité du polygone, j'ai constaté que je n'avais plus besoin d'ajouter le trait.

leaflet() %>% 
        addProviderTiles("CartoDB.Positron") %>% 
        addPolygons(data = polygons, smoothFactor = 0,
                    stroke = FALSE,
                    fillColor = col2hex("red"), fillOpacity = .5)

50% d'opacité

Tiernan
la source