2016-06-20 12 views
0

Ich suche eine Karte, die Deutschland, Österreich und Teile der Schweiz zu einem Geoobjekt zusammenfasst. Dieser Bereich sollte die deutschsprachigen Gebiete in diesen drei Ländern repräsentieren. Ich habe einige Teile an Ort und Stelle, aber ich finde keine Möglichkeit, sie zu kombinieren. Wenn es eine ganz andere Lösung gibt, um dieses Problem zu lösen, bin ich immer noch interessiert.Verschmelzung (zweieinhalb) Länder von Karten-Paket zu einem Kartenobjekt in R

erhalte ich die deutsche und die österreichische Karte von:

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 

Schweiz ist komplizierter, als ich die 60-70% Prozent nur müssen die vor allem Deutsch sprechen. Die cantones, die so tun (vom census report genommen) sind

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") 

Die cantone Namen zusammen mit Daten aus gadm.org/country verwendet werden, können (Auswahl Schweiz & SpatialPolygonsDataFrame -> Stufe 1 oder über die direct link) die deutschsprachigen Gebiete zu bringen vom GADM-Objekt:

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

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

ich jetzt fehlt der Vereinigungsschritt diese Informationen zusammen zu bekommen. Das Ergebnis sollte wie folgt aussehen:

Result Es handelt sich um eine kombinierte Karte, bestehend aus den Konturen des zusammengeführten Gebiets (Deutschland + Österreich + ~ 70% der Schweiz), ohne Grenzen zwischen den Ländern. Wenn das Hinzufügen und Verlassen der Ländergrenzen parametrisierbar wäre, wäre das großartig, aber kein Muss.

Antwort

1

können Sie das wie folgt aus:

Holen Sie sich die Polygone Sie

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

Subset die Schweizer Kantone (hier ein Beispiel Liste, nicht die richtige) benötigen; gibt es für eine Schleife keine Notwendigkeit für solche Dinge in 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,] 

Aggregate (auflösen) Schweizer inneren Grenzen

GermanSwiss <- aggregate(GermanSwiss) 

Kombinieren Sie die drei Länder und Aggregat

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

Sie sind natürlich Richtig, ich habe die Schleife in meinem Beispiel durch deinen Code ersetzt, der das Subsetting verwendet. – Exocom