将地图包中的(两个半)国家/地区合并到R

时间:2016-06-20 14:17:12

标签: r maps spatial

我正在寻找将德国,奥地利和瑞士部分地区合并为一个空间物体的地图。该区域应代表这三个国家的德语区。我有一些部分,但找不到合并它们的方法。如果有一个完全不同的解决方案来解决这个问题,我仍然感兴趣。

我通过以下方式获得德国和奥地利地图:

require(maps)
germany <- map("world",regions="Germany",fill=TRUE,col="white") #get the map
austria <- map("world",regions="Austria",fill=TRUE,col="white") #get the map

瑞士更复杂,因为我只需要60-70%的比例,主要是德语。这样做的人(取自census report)是

cantonesGerman = c("Uri", "Appenzell Innerrhoden", "Nidwalden", "Obwalden", "Appenzell Ausserrhoden", "Schwyz", "Lucerne", "Thurgau", "Solothurn", "Sankt Gallen", "Schaffhausen", "Basel-Landschaft", "Aargau", "Glarus", "Zug", "Zürich", "Basel-Stadt")

cantone名称可以与来自gadm.org/country的数据一起使用(选择Switzerland&amp; SpatialPolygonsDataFrame - &gt; Level 1或通过direct link)来从gadm对象获取德语区域:

gadmCH = readRDS("~/tmp/CHE_adm1.rds")

dataGermanSwiss <- gadmCH[gadmCH$NAME_1 %in% cantonesGerman,]

我现在错过了将这些信息整合在一起的合并步骤。结果应如下所示:

Result它代表了一个由合并区域(德国+奥地利+瑞士约70%)的轮廓组成的组合地图,两国之间没有边界。如果增加和省略国家间边界是可参数化的,那将是伟大的,但不是必须的。

1 个答案:

答案 0 :(得分:1)

你可以这样:

获取所需的多边形

library(raster)
deu <- getData('GADM', country='DEU', level=0)
aut <- getData('GADM', country='AUT', level=0)
swi <- getData('GADM', country='CHE', level=1)

对瑞士各州进行子集(这里是一个示例列表,而不是正确的列表);在R中不需要循环这样的事情。

cantone <- c('Aargau', 'Appenzell Ausserrhoden', 'Appenzell Innerrhoden', 'Basel-Landschaft', 'Basel-Stadt', 'Sankt Gallen', 'Schaffhausen', 'Solothurn', 'Thurgau', 'Zürich')
GermanSwiss <- swi[swi$NAME_1 %in% cantone,]

汇总(解散)瑞士内部边界

GermanSwiss <- aggregate(GermanSwiss)

合并这三个国家并汇总

german <- bind(deu, aut, GermanSwiss)
german <- aggregate(german)