2016-06-20 32 views
0

我正在尋找將德國,奧地利和瑞士部分地區合併爲一個空間對象的地圖。這個地區應該代表這三個國家的德語地區。我有一些部分,但無法找到合併它們的方法。如果有完全不同的解決方案來解決這個問題,我仍然感興趣。將地圖包中的(兩個半)國家合併爲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採取)的cantones是

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使用(選擇瑞士& SpatialPolygonsDataFrame - > 1級或通過direct link)來獲取講德語的地區從小工具對象:

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

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

我現在缺少合併步驟以獲取此信息在一起。結果應該如下所示:

Result它代表一個由合併區域(德國+奧地利+〜瑞士的70%)輪廓組成的組合圖,這些國家之間沒有邊界。如果增加和刪除國家間邊界將是可參數化的,那將是很好但不是必須的。

回答

1

你可以像這樣:

獲取您需要的多邊形

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

子集瑞士各州(這裏的例子列表,而不是正確的);沒有必要在河這樣的事情循環

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) 
+0

您是當然的對,我用你的使用子集的代碼替換了我的例子中的循環。 – Exocom

相關問題