簡體   English   中英

您可以通過 dataframe 中的值組合 SpatialPolygonsDataFrame 中的多邊形嗎?

[英]Can you combine polygons within a SpatialPolygonsDataFrame by values in the dataframe?

我正在嘗試將澳大利亞統計局 shapefile 用於 Remoteness 2016 - 下載 ESRI shapefile。

我想組合所有不是澳大利亞主要城市的多邊形。

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 == "Regional" 的多邊形。 我不需要來自 RA_2016 的任何原始數據。 但我希望它保持為帶有“Bigsmoke”列的 SpatialPolygonsDataFrame。

在代碼的下一部分中,我將把它與澳大利亞統計局的 LGA 數據結合起來(基本上這樣我就可以將 LGA 拆分為區域部分和主要城市部分——它們被拆分的地方)。 所以我認為我需要保留最少量的數據。

有沒有好的方法來做到這一點? 是否有另一個我找不到的帖子可以告訴我方法?

這是我將如何做到的:

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)這可能會改變記錄的順序和數量,使得屬性不再與幾何匹配

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM