Видаліть зазори між шматками за допомогою R


10

Чи є спосіб усунути невеликі «перемички» між багатокутниками за допомогою R? Бажане рішення створило б нове, SpatialPolygonsDataFrameколи спільні межі між багатокутниками збігаються. Мене конкретно цікавить рішення, яке використовує R, а не ArcMap або QGIS.

Мені також було б цікаво почути пояснення, чому ці прогалини існують в першу чергу.

Ось відтворюваний приклад просторових даних, з якими я працюю:

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)

Дратівливі тріски між полігонами

Як ви бачите на наведеному вище скріншоті, між полігонами групи перепису є невеликі прогалини. Ці розташування цих прогалин відображаються по-різному залежно від рівня масштабування, але завжди є видимі прогалини.

Чи може хтось порекомендувати Rфункцію (або комбінацію функцій) для програмного налаштування полігонів для усунення цих прогалин?

Відповіді:


5

Здається, що рішення полягає у встановленні smoothFactorаргументу AddPolygonsдо 0, як пропонується у цьому відповідному дописі: Стиль геолізонів Lealetlet залишає прогалини між полігоном

Я також вважав за необхідне додати невеликий штрих до полігонів, щоб повністю усунути проміжки заслінки з прикладної карти.

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

введіть тут опис зображення

Цікаво, що коли я зменшив непрозорість багатокутника, я виявив, що більше не потрібно додавати обведення.

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

50% непрозорість

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.