Объединение многоугольников в виде файлов с идентификаторами общих тегов: unionSpatialPolygons

:hi NonText guifg=bg

Эта команда должна установить цвет нетекстовых символов таким же, как цвет фона.

9
задан Rotail 13 July 2018 в 21:38
поделиться

2 ответа

Я думаю, что проблема не в unionSpatialPolygons, а в вашем сюжете. В частности, для каждого идентификатора вы создаете только первый «подполигон» . Выполните следующее, чтобы проверить, что пошло не так:

for(i in 1:length(names(usaUnion))){
  print(length(usaUnion@polygons[[i]]@Polygons))
}

Для каждого из них вы взяли только первый.

Я получил правильное объединение / участок многоугольника со следующим кодом :

library(rgdal)
library(maptools)
library(plyr)

usa <- readOGR(dsn = "INSERT_YOUR_PATH", layer="light_shape")
# remove NAs
usa <- usa[!is.na(usa$segment_ID), ]
usaIDs <- usa$segment_ID

#get unique colors
set.seed(666)
unique_colors <- sample(grDevices::colors()[grep('gr(a|e)y|white', grDevices::colors(), invert = T)], 15)

colors <- plyr::mapvalues(
  usaIDs, 
  from = as.numeric(sort(as.character(unique(usaIDs)))), #workaround to get correct color order
  to = unique_colors
)
plot(usa, col = colors, main = "Original Map")


usaUnion <- unionSpatialPolygons(usa, usaIDs)
plot(usaUnion, col = unique_colors, main = "Joined Polygons")

5
ответ дан pieca 17 August 2018 в 12:11
поделиться

Вот пример, использующий sf, чтобы сделать этот график, в котором подчеркивается, как способность пакета работать с dplyr и summarise в частности может сделать эту операцию чрезвычайно выразительной и кратким. I filter вывести отсутствующие идентификаторы, group_by идентификатор, summarise (который делает объединение по умолчанию) и легко построить график с помощью geom_sf.

library(tidyverse)
library(sf)
# Substitute wherever you are reading the file from
light_shape <- read_sf(here::here("data", "light_shape.shp"))
light_shape %>%
  filter(!is.na(segment_ID)) %>% 
  group_by(segment_ID) %>%
  summarise() %>%
  ggplot() +
  geom_sf(aes(fill = factor(segment_ID)))

3
ответ дан Calum You 17 August 2018 в 12:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: