Можете ли вы объединить многоугольники в SpatialPolygonsDataFrame по значениям в кадре данных? - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь использовать шейп-файл Австралийского статистического бюро для удаленности 2016 - загружаю шейп-файл ESRI.

Я хочу объединить все полигоны, не относящиеся к крупным городам Австралии .

library(rgdal)
library(dplyr)
RA_2016 <- readOGR(".", layer = "RA_2016_AUST")
###to simplify only using NSW
RA_2016 <- RA_2016[RA_2016$STE_CODE16 == 1, ]

Фрейм данных состоит из 5 столбцов. Мне не нужны эти данные после того, как я создал переменную для определения того, является ли это крупный город или нет.

MajorCity <- data.frame(10:14, c("Major City", "Regional", "Regional", "Regional", "Regional"))
names(MajorCity) <- c("RA_CODE16", "Bigsmoke")

RA_2016@data <- left_join(RA_2016@data, MajorCity)

Теперь я хочу объединить полигоны с MajorCity == «Региональный». Мне не нужны исходные данные из RA_2016. Но я хочу, чтобы он оставался SpatialPolygonsDataFrame со столбцом Bigsmoke.

В следующей части кода я собираюсь объединить его с данными LGA Австралийского бюро статистики (в основном, чтобы я мог разделить LGA на региональные части и основные части города - где они разделены). Я думаю, мне нужно сохранить этот минимальный объем данных.

Есть хороший способ сделать это? Есть ли другой пост, который мне не удалось найти, который укажет мне путь?

1 Ответ

1 голос
/ 06 мая 2020

Вот как я бы это сделал:

library(raster)

RA_2016 <- shapefile("RA_2016_AUST.shp")
RA_2016 <- RA_2016[RA_2016$STE_CODE16 == 1, ]

MajorCity <- data.frame(RA_CODE16=10:14, Bigsmoke=c("Major City", "Regional", "Regional", "Regional", "Regional"))

m <- merge(RA_2016, MajorCity)
x <- aggregate(m, "Bigsmoke")
x
#class       : SpatialPolygonsDataFrame 
#features    : 2 
#extent      : 140.9993, 159.1092, -37.50508, -28.15702  (xmin, xmax, ymin, ymax)
#crs         : +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs 
#variables   : 1
#names       :   Bigsmoke 
#min values  : Major City 
#max values  :   Regional 

Избегайте записи в слоты «@», как здесь: left_join(RA_2016@data, MajorCity) Это может изменить порядок и количество записей, так что атрибуты больше не соответствует геометрии

...