Hapus celah sliver antara poligon dengan R


10

Apakah ada cara untuk menghilangkan "sliver" kecil di antara poligon R? Solusi yang diinginkan akan menciptakan yang baru di SpatialPolygonsDataFramemana batas-batas bersama antara poligon bertepatan. Saya secara khusus tertarik pada solusi yang menggunakan R, daripada ArcMap atau QGIS.

Saya juga tertarik untuk mendengar penjelasan mengapa celah ini ada pada awalnya.

Berikut adalah contoh data spasial yang dapat saya ulang:

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)

Irisan yang mengganggu di antara poligon

Seperti yang Anda lihat pada tangkapan layar di atas, ada celah kecil antara poligon kelompok blok sensus. Lokasi celah ini disajikan berbeda tergantung pada tingkat zoom, tetapi selalu ada beberapa celah yang terlihat.

Adakah yang bisa merekomendasikan Rfungsi (atau kombinasi fungsi) untuk secara terprogram menyesuaikan poligon untuk menghilangkan kesenjangan ini?

Jawaban:


5

Tampaknya solusinya terletak pada pengaturan smoothFactorargumen AddPolygonske 0, seperti yang disarankan dalam posting terkait ini: Gaya daun geojson membuat celah di antara poligon

Saya juga merasa perlu untuk menambahkan goresan kecil ke poligon agar benar-benar menghapus celah sliver dari peta contoh.

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

masukkan deskripsi gambar di sini

Menariknya, ketika saya mengurangi opacity dari poligon saya menemukan saya tidak perlu lagi menambahkan stroke.

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

50% Opacity

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.