2016-05-29 16 views
-1

Ich versuche zu lesen und zeichnen Sie eine SHP-Datei aus Argentinien, um eine benutzerdefinierte Choropleth zu erstellen. Ich folge genau allen Codebeispielen, um diese Karte zu laden und zu plotten, aber nichts funktioniert.Plotten SHP-Datei R

Das rote Zeichen bleibt eingeschaltet, da R Informationen verarbeitet, aber nie etwas anzeigt oder nicht mehr funktioniert.

Dies ist mein Bildschirm, wenn ich auf "Plot" laufen und dann sagt Rstudio funktioniert nicht mehr. Irgendeine Idee, warum es nicht funktionieren könnte?

enter image description here

+0

Screenshots! = Code-Schnipsel. Bitte entfernen Sie das Bild und versuchen Sie stattdessen, den Code zu posten. – hrbrmstr

Antwort

1

Zuerst ggplot2 scheint in der Lage zu sein, dies zu handhaben ziemlich gut:

library(rgdal) 
library(ggplot2) 

arg_shp <- readOGR("../data/arg_adm/ARG_adm1.shp", "ARG_adm1") 

arg_shp_map <- fortify(arg_shp) 

gg <- ggplot() 
gg <- gg + geom_map(data=arg_shp_map, map=arg_shp_map, 
        aes(long, lat, map_id=id), 
        color="#2b2b2b", size=0.15, fill=NA) 
gg <- gg + coord_map() 
gg <- gg + ggthemes::theme_map() 
gg 

enter image description here

Da Sie eine GADM Datei verwenden, brauchen Sie nicht wirklich eine externe Shape-Datei tho verwenden verwenden, nur getData():

library(maptools) 
library(raster) 

arg_adm <- getData('GADM', country='ARG', level=1) 
arg_adm_map <- fortify(arg_adm) 

(gleichen ggplot2 Code von oben funktioniert, nur aus dem Variablennamen sub).

Ich kann nicht das Basis-Plotting-System, um dies (entweder auf einem Grafikgerät) zu plotten. Ich denke, es gibt einige komplexe Polygone in einem Teil der Küste. Wir können damit umgehen ziemlich leicht tho:

library(maptools) 
library(raster) 
library(rgeos) 
library(magrittr) 
library(sp) 

arg_adm <- getData('GADM', country='ARG', level=1) 

gSimplify(arg_adm, 0.01, topologyPreserve=TRUE) %>% 
    SpatialPolygonsDataFrame([email protected]) -> new_arg 

plot(new_arg, lwd=0.25) 

enter image description here

(Grundstück Standardränder und die Art und Weise es mit Projektionen in dieser unterschiedlich großen Karte zur Folge hat)

Sofern Sie die Grenze brauchen Präzise, ​​vereinfachte Shapefiles können viel Zeit beim Plotten sparen. Sie können die optimierte Form in ggplot2 als auch verwenden, zusammen mit einem Argentinien zugeschnittene Kartenprojektion:

new_arg_map <- fortify(new_arg) 

gg <- ggplot() 
gg <- gg + geom_map(data=new_arg_map, map=new_arg_map, 
        aes(long, lat, map_id=id), 
        color="#2b2b2b", size=0.15, fill=NA) 
gg <- gg + ggalt::coord_proj("+proj=aeqd +lat_0=-37.869859624840764 +lon_0=-66.533203125") 
gg <- gg + ggthemes::theme_map() 
gg 

enter image description here

(Obwohl, coord_map() ‚s Standard-Mercator-Projektion pbly gd genug für die meisten Anwendungen ist)

+0

Vielen Dank für Ihre Zeit und Mühe, Sie haben wirklich mir sehr geholfen.Ich habe allerdings eine Frage, wie ich mit dieser Karte eine Chorople- thie machen kann, und wenn ich nur Grenzen wie deine Plots lade, funktioniert das gut. Wenn ich jedoch versuche, einige Daten hinzuzufügen, dauert es einige Zeit, bis die Grafik geladen ist (5 Minuten). Ich benutze diesen Code puntos <- read.csv ("puntos.csv", sep = ",", header = T) puntos $ Provincia <- as.factor (puntos $ Provincia) arg_pv <- verstärken (arg_shp, region = "NAME_1") ggplot() + geom_map (Daten = puntos, aes (map_id = Provinz, fill = Puntos), map = arg_pv) + expand_limits (x = arg_pv $ lang, y = arg_pv $ lat) –

0

Soweit ich weiß, es ist posible ein shp mit MapTools zu lesen, aber ihre Unterstützung ist begrenzt. Haben Sie versucht, es mit rgdal::readOGR(dir, layer) zu lesen?

Das Environment-Fenster zeigt, dass Sie ein "Large" -Objekt haben, aber wie groß ist es? wenn die Formen die nationalen oder staatlichen Grenzen sind, sollte es kein Problem geben, aber wenn Sie alle Straßen oder alle Blöcke des Landes in der Form haben, ändern sich die Dinge.

Versuchen Sie es mit einem Komponententest: Versuchen Sie, die internationale Grenze oder die Staatsgrenzen zu plotten. Wenn Sie das tun können, wäre das Problem die Größe der Formen.

PD: reebot Ihren Computer und versuchen Sie es erneut, es könnte helfen, wenn Rstudio es das einzige laufende Programm ist.