R ile çokgenler arasındaki şerit boşluklarını kaldırın


10

Kullanarak çokgenler arasındaki küçük "şerit" ortadan kaldırmak için bir yolu var mı R? İstenen çözüm, SpatialPolygonsDataFrameçokgenler arasındaki paylaşılan sınırların çakıştığı yeni bir ortam oluşturacaktır. Özellikle RArcMap veya QGIS yerine kullanılan bir çözümle ilgileniyorum .

Ayrıca, bu boşlukların neden ilk başta bulunduğuna dair bir açıklama duymak isterim.

İşte birlikte çalıştığım uzamsal verilerin tekrarlanabilir bir örneği:

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)

Çokgenler arasında sinir bozucu şeritler

Yukarıdaki ekran görüntüsünde görebileceğiniz gibi, sayım blok grubu çokgenleri arasında küçük boşluklar vardır. Bu boşlukların bu konumu, yakınlaştırma düzeyine bağlı olarak farklı şekilde oluşturulur, ancak her zaman görünür bazı boşluklar vardır.

Herkes Rbu boşlukları ortadan kaldırmak için çokgenleri programlı olarak ayarlamak için bir işlev (veya işlevlerin bir kombinasyonu) önerebilir mi?

Yanıtlar:


5

Ayarlama çözüm yatıyor gibi görünüyor smoothFactorbüyük tartışmanın AddPolygonsiçin 0: Bu ilgili yazı önerildiği üzere, Broşür GeoJSON poligon arasındaki yaprakları boşlukları stil

Ayrıca, şerit boşluklarını örnek haritadan tamamen kaldırmak için çokgenlere küçük bir vuruş eklemenin gerekli olduğunu gördüm.

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

resim açıklamasını buraya girin

İlginç bir şekilde, çokgenin opaklığını azalttığımda artık kontur eklemeye gerek duymadım.

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

% 50 Opaklık

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.