将(两个半)国家从地图包合并到 R 中的一个地图对象
Merging (two and a half) countries from maps-package to one map object in R
我正在寻找一张将德国、奥地利和瑞士部分地区组合成一个空间对象的地图。这个区域应该代表这三个国家的德语区。我有一些零件,但找不到组合它们的方法。如果有完全不同的方案来解决这个问题,我还是很感兴趣的。
我通过以下方式获取德国和奥地利地图:
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")
粤语名称可以与来自 gadm.org/country (selecting Switzerland & SpatialPolygonsDataFrame -> Level 1 or via the direct link) 的数据一起使用,从 gadm-object 中获取德语区:
gadmCH = readRDS("~/tmp/CHE_adm1.rds")
dataGermanSwiss <- gadmCH[gadmCH$NAME_1 %in% cantonesGerman,]
我现在错过了将这些信息整合在一起的合并步骤。结果应如下所示:
它表示由合并区域(德国 + 奥地利 + ~70% 的瑞士)的等高线组成的组合地图,国家之间没有边界。如果添加和删除国家间边界是可参数化的,那就太好了,但不是必须的。
你可以这样:
获取您需要的多边形
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)
我正在寻找一张将德国、奥地利和瑞士部分地区组合成一个空间对象的地图。这个区域应该代表这三个国家的德语区。我有一些零件,但找不到组合它们的方法。如果有完全不同的方案来解决这个问题,我还是很感兴趣的。
我通过以下方式获取德国和奥地利地图:
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")
粤语名称可以与来自 gadm.org/country (selecting Switzerland & SpatialPolygonsDataFrame -> Level 1 or via the direct link) 的数据一起使用,从 gadm-object 中获取德语区:
gadmCH = readRDS("~/tmp/CHE_adm1.rds")
dataGermanSwiss <- gadmCH[gadmCH$NAME_1 %in% cantonesGerman,]
我现在错过了将这些信息整合在一起的合并步骤。结果应如下所示:
你可以这样:
获取您需要的多边形
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)