Elimine los espacios entre las astillas entre los polígonos con R


10

¿Hay alguna forma de eliminar las pequeñas "astillas" entre los polígonos usando R? La solución deseada crearía una nueva SpatialPolygonsDataFramedonde los límites compartidos entre los polígonos son coincidentes. Estoy específicamente interesado en una solución que utilice R, en lugar de ArcMap o QGIS.

También me interesaría escuchar una explicación de por qué existen estas brechas en primer lugar.

Aquí hay un ejemplo reproducible de los datos espaciales con los que estoy trabajando:

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)

Astillas molestas entre los polígonos

Como puede ver en la captura de pantalla anterior, hay brechas pequeñas entre los polígonos del grupo de bloques del censo. La ubicación de estos espacios se representa de manera diferente según el nivel de zoom, pero siempre hay algunos espacios visibles.

¿Alguien puede recomendar una Rfunción (o una combinación de funciones) para ajustar mediante programación los polígonos para eliminar estas brechas?

Respuestas:


5

Parece que las mentiras de soluciones en establecer el smoothFactorargumento de AddPolygonsque 0, como se sugiere en este post relacionados: GeoJSON Folleto labrar hojas huecos entre polígono

También encontré que era necesario agregar un pequeño trazo a los polígonos para eliminar por completo los espacios de la astilla del mapa de ejemplo.

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

ingrese la descripción de la imagen aquí

Curiosamente, cuando disminuí la opacidad del polígono descubrí que ya no necesitaba agregar el trazo.

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

50% de opacidad

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.