R ggplot2 fusionner avec shapefile et csv des données pour remplir les polygones

Tous les jours, nous produisons des cartes qui montrent un niveau calculé pour une température de 30 domaines distincts de notre région, chaque zone est remplie avec une couleur différente selon le niveau. Cette cartes ressembler

R ggplot2 fusionner avec shapefile et csv des données pour remplir les polygones

Maintenant, je veux passer à la génération de la carte à R. j'ai téléchargé provinciaux et municipaux limites (vous pouvez trouver les limites de l'ensemble de l'Espagne ou ici le un sous-ensemble de ma région) et la gestion à la parcelle avec ggplot2 suivantes Hadley du exemple.

Je peux aussi produire un fichier ascii qui contient deux colonnes: l'identificateur (CODINE) et tous les jours. Vous pouvez télécharger ici.

C'est mon premier script de la tentative de complot avec les fichiers de formes R et ggplot2 il peut donc y avoir des erreurs et pour s'assurer qu'il peut être amélioré, suggestions bienvenues. Le code suivant (basé sur Hadley déjà cité) fonctionne pour moi:

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

Ce code parcelles d'une belle carte avec toutes les limites R ggplot2 fusionner avec shapefile et csv des données pour remplir les polygones

Pour les polygones de remplissage par niveau, j'ai essayé de lire, puis de fusionner comme suggéré dans http://tormodboe.wordpress.com/2011/02/22/g%C3%B8y-med-kart-2/

niveau=lire.csv("niveaux.dat",header=T,sep=" ")

munlevel=merge(muni.df,niveau,by="CODINE")

mais il donne une erreur

Erreur fr fix.by(par.x, x) : "par" doit spécifier une unique colonne valide

Je ne suis pas familier avec les fichiers de formes, peut-être que j'ai besoin d'en savoir plus sur shp attributs de données pour trouver le bon choix de fusionner les deux ensembles de données. Comment puis-je fusionner les données afin que je puisse tracer les lignes (les limites municipales) et le remplir avec des niveaux?

Une mise à jour de cette question avec quelques fonctionnalités supplémentaires sur la carte peut être trouvé à [gis.stackexchange.com/q/131741/9227]

OriginalL'auteur pacomet | 2013-11-05