我希望按地区创建shapefile分组国家/地区。国家多边形来自getData函数。我创建了一个数据框,将每个国家/地区与一个地区相关联以下是西班牙(欧洲EUR),法国(欧洲EUR)和巴西(拉丁美洲LAM)的简单示例。
我希望的最后两个空间多边形是:
我编写了以下循环,但不知道如何为每个区域创建不同的多边形。
library(raster)
regions <- data.frame(REGION= c('EUR', 'EUR', 'LAM'), ISO= c('ESP', 'FRA', 'BRA'))
for (i in c('EUR', 'LAM')){
for (j in c('ESP', 'FRA', 'BRA')) {
ISO_code <- regions[regions$REGION==i & regions$ISO==j,]$ISO
if (length(ISO_code)==0) next #as FRA will never be in LAM for example
else {
temp <- getData('GADM', country=as.character(ISO_code), level=0)
if(j==1) regionpoly <- temp
else regionpoly <- gUnion(regionpoly, temp)
}
}
}
非常感谢你的帮助
答案 0 :(得分:1)
我会将您的regions
数据框与国家/地区级别SpatialPolygonsDataFrame的数据广告位合并。然后,您可以根据您定义的区域将空间对象拆分为列表。
library(raster)
library(rgeos)
regions <- data.frame(REGION = c("EUR", "EUR", "LAM"),
ISO = c("ESP", "FRA", "BRA"),
stringsAsFactors = FALSE)
# Load data into a list
states <- lapply(regions$ISO, function(x) getData("GADM", country = x, level = 0))
# Combine into a single SpatialPolygonsDataFrame object
states2 <- do.call(bind, states)
# Merge with regions data frame
states2@data <- merge(states2@data, regions, by = "ISO", sort = FALSE)
# Split into list by region
states_split <- split(states2, states2$REGION)