Использование шейп доступной here я пытаюсь объединить два многоугольники Судана и Южного Судана, так что я получаю границы Судана в 2010 году мой код, чтобы сделать шейп доступный в R являетсяОбъединение двух SpatialPolygonsDataFrame объектов
library(rgdal)
africa <- readOGR(dsn = "Data/Shapes", layer = "AfricanCountries")
class(africa)
[1] "SpatialPolygonsDataFrame" attr(,"package") [1] "sp"
Я пробовал различные пакеты и решения, как raster::intersect
, rgeos::gIntersect
или maptools::unionSpatialPolygons
. Я всегда получаю пространственный объект, который потерял данные, принадлежащие двум полигонам, или вообще не объединялся.
До сих пор у меня есть следующее решение, которое, кажется, не очень удобно:
# Seperate Polygons and Data
sp_africa <- SpatialPolygons([email protected], proj4string = CRS(proj4string(africa)))
dat_africa <- [email protected]
# Delete South Sudan from dataframe
dat_africa <- dat_africa[-which(dat_africa$COUNTRY == "South Sudan"),]
# Add row.names to data according to polygon ID'S
rownames(dat_africa) <- dat_africa$OBJECTID
# Get all ID's
allIDs <- africa$OBJECTID
# Get the ID for Sudan, Primary Land (so we only merge the
# Sudan main land (no islands) with the South Sudan main land
sudanID <- africa[which(africa$COUNTRY == "Sudan" & africa$Land_Type == "Primary land"),]$OBJECTID
# Change ID of South Sudan to that of Sudan
allIDs[which(africa$COUNTRY == "South Sudan")] <- sudanID
# Now unite polygons and afterwards merge polygons with data
tmp <- unionSpatialPolygons(sp_africa, IDs = allIDs)
africa2 <- SpatialPolygonsDataFrame(tmp, data = dat_africa)
Если проще, более удобный способ, которым я был бы рад узнать об этом.
В конце концов, я хочу иметь такую же SpatialPolygonsDataFrame только без границы между Суданом и Южным Суданом. Будет ли это работать вместе с агрегатом? –
Я также получаю ошибку 'Ошибка в match.fun (FUN): аргумент« FUN »отсутствует при попытке агрегировать обе страны. –
Не уверен, почему, но 'aggregate' недоступен в пакете' sp', хотя он находится внутри документации: 'Error: object 'aggregate' не экспортируется 'namespace: sp''. Я использую версию 1.2-3. –