Rimuovi gli spazi vuoti tra i poligoni con R


10

Esiste un modo per eliminare i piccoli "frammenti" tra i poligoni R? La soluzione desiderata creerebbe una nuova in SpatialPolygonsDataFramecui i confini condivisi tra poligoni sono coincidenti. Sono particolarmente interessato a una soluzione che utilizza R, piuttosto che ArcMap o QGIS.

Sarei anche interessato a sentire una spiegazione sul perché queste lacune esistano in primo luogo.

Ecco un esempio riproducibile dei dati spaziali con cui sto lavorando:

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)

Scaglie fastidiose tra i poligoni

Come puoi vedere nello screenshot sopra, ci sono piccoli spazi tra i poligoni del gruppo di blocchi di censimento. La posizione di questi spazi vuoti viene visualizzata in modo diverso a seconda del livello di zoom, ma sono sempre visibili alcuni spazi vuoti.

Qualcuno può raccomandare una Rfunzione (o una combinazione di funzioni) per regolare programmaticamente i poligoni per eliminare questi vuoti?

Risposte:


5

Sembra che le bugie di soluzioni in impostando l' smoothFactorargomento AddPolygonsper 0, come suggerito in questo post correlato: GeoJSON Opuscolo styling foglie spazi tra poligono

Ho anche trovato necessario aggiungere un piccolo tratto ai poligoni per rimuovere completamente le lacune del nastro dalla mappa di esempio.

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

inserisci qui la descrizione dell'immagine

È interessante notare che quando ho ridotto l'opacità del poligono ho scoperto che non avevo più bisogno di aggiungere il tratto.

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

50% di opacità

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.