R ggplot2 wird mit Shapefile- und CSV-Daten zusammengeführt, um Polygone zu füllen

Wir erstellen täglich Karten, die ein berechnetes Temperaturniveau in 30 verschiedenen Gebieten unserer Region anzeigen. Jedes Gebiet wird je nach Niveau mit einer anderen Farbe gefüllt. Diese Karten sehen aus wie

Jetzt möchte ich die Kartengenerierung auf R umstellen. Ich habe die Provinz - und Gemeindegrenzen heruntergeladen (siehe unten)Grenzen für ganz Spanien oder hier dieTeilmenge für meine Region) und es gelang ihnen, mit ggplot2 nach Hadley's zu zeichnenBeispiel.

Ich kann auch eine ASCII-Datei erstellen, die zwei Spalten enthält: Bezeichner (CODINE) und Tageslevel. Sie können herunterladenHier.

Dies ist mein erstes Skript, das versucht, Shapefiles mit R und ggplot2 zu zeichnen. Es kann also zu Fehlern kommen und es kann auf jeden Fall verbessert werden. Vorschläge sind willkommen. Der folgende Code (basierend auf Hadleys zuvor genanntem) funktioniert für mich:

> require("rgdal")
> require("maptools")
> require("ggplot2")
> require("plyr")

# Reading municipal boundaries

esp = readOGR(dsn=".", layer="lineas_limite_municipales_etrs89")

muni=subset(esp, esp$PROV1 == "46" | esp$PROV1 == "12" | esp$PROV1 == "3")
muni@data$id = rownames(muni@data)
muni.points = fortify(muni, region="id")
muni.df = join(muni.points, muni@data, by="id")

# Reading province boundaries

prov = readOGR(dsn=".", layer="poligonos_provincia_etrs89")

pr=subset(prov, prov$CODINE == "46" | prov$CODINE == "12" | prov$CODINE == "03" )
pr@data$id = rownames(pr@data)
pr.points = fortify(pr, region="id")
pr.df = join(pr.points, pr@data, by="id")

ggplot(muni.df) + aes(long,lat,group=group) + geom_path(color="blue") +
+ coord_equal()+ geom_path(data=pr.df, + 
aes(x=long, y=lat, group=group),color="red", size=0.5) 

Dieser Code zeichnet eine schöne Karte mit allen Grenzen

Für die Polygonfüllung nach Ebene habe ich versucht, wie in empfohlen zu lesen und dann zusammenzuführenhttp://tormodboe.wordpress.com/2011/02/22/g%C3%B8y-med-kart-2/

level = read.csv ("levels.dat", header = T, sep = "")
munlevel = merge (muni.df, level, by = "CODINE")

aber es gibt einen Fehler

Fehler en fix.by (by.x, x): 'by' muss eine eindeutig gültige Spalte angeben

Ich bin nicht mit Shapefiles vertraut. Vielleicht muss ich mehr über shp-Datenattribute erfahren, um die richtige Wahl zum Zusammenführen beider Datensätze zu finden. Wie kann ich Daten zusammenführen, um die Linien (Gemeindegrenzen) zu zeichnen und sie dann mit Ebenen zu füllen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage