Xóa khoảng cách giữa các đa giác với R


10

Có cách nào để loại bỏ các "mảnh" nhỏ giữa các đa giác bằng cách sử dụng Rkhông? Giải pháp mong muốn sẽ tạo ra một điểm mới SpatialPolygonsDataFrametrong đó ranh giới chung giữa các đa giác là trùng khớp. Tôi đặc biệt quan tâm đến một giải pháp sử dụng R, thay vì ArcMap hoặc QGIS.

Tôi cũng sẽ thích thú khi nghe một lời giải thích về lý do tại sao những khoảng trống này tồn tại ở nơi đầu tiên.

Đây là một ví dụ có thể lặp lại của dữ liệu không gian tôi đang làm việc vớ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)

Khó chịu giữa các đa giác

Như bạn có thể thấy trong ảnh chụp màn hình ở trên, có những khoảng trống nhỏ giữa các đa giác nhóm khối điều tra dân số. Các vị trí của các khoảng trống này được hiển thị khác nhau tùy thuộc vào mức thu phóng, nhưng luôn có một số khoảng trống có thể nhìn thấy.

Bất cứ ai cũng có thể đề nghị một Rchức năng (hoặc kết hợp các chức năng) để lập trình điều chỉnh các đa giác để loại bỏ các khoảng trống này?

Câu trả lời:


5

Có vẻ như rằng giải pháp nằm trong thiết lập các smoothFactortham số trong AddPolygonsđể 0, như đề xuất trong bài viết có liên quan này: GeoJSON Tờ rơi phong lá khoảng trống giữa đa giác

Tôi cũng thấy cần phải thêm một nét nhỏ vào các đa giác để loại bỏ hoàn toàn các khoảng trống cúi từ bản đồ ví dụ.

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

nhập mô tả hình ảnh ở đây

Thật thú vị, khi tôi giảm độ mờ của đa giác, tôi thấy tôi không còn cần phải thêm nét.

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

Độ mờ 50%

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.