Wie überlagere ich Kartenebenen (shp und csv) in R?

9

Dies ist ein Crosspost von Stackoverflow . Ich weiß sehr wenig über GIS-Software und mache alle meine Mappings in R. Entschuldigung im Voraus, wenn dies eine zu grundlegende Frage ist. Angenommen, ich habe zwei Shapefiles aus verschiedenen Quellen, aber mit unterschiedlichen Attributen. Angenommen, einer ist für Verwaltungsgrenzen von Texas ( boundaries.shp) und der andere für Flüsse in Texas ( rivers.shp). Ich habe auch eine dritte Datei, towns.csvdie die Standorte der Städte innerhalb des Staates zeigt. Nachdem ich die Dateien gelesen habe, kann ich die Standorte der Städte an den Verwaltungsgrenzen im maptoolsPaket überzeichnen :

plot(boundaries); points(towns$lon, towns$lat)

Aber wie kann ich alle drei überlagern? Sicher gibt es einen einfachen Weg, dies zu tun?

user3671
quelle

Antworten:

8

PBSMapping sollte Ihren Anforderungen entsprechen. Es gibt ein Tutorial bei NCEAS . Der folgende Code wurde aus diesem Tutorial übernommen. Ich mache übrigens Annahmen über Ihre Daten. Bitte bearbeiten Sie entsprechend Ihrer Situation.

library(PBSmapping)

#prepare towns
pts <- read.csv("towns.csv")
towns <- points(towns$lon, towns$lat)
# read in shapefiles 
rivers <- importShapefile("rivers.shp")
boundaries <- importShapefile("boundaries.shp")


# note that importShapefile reads the .prj file if it exists, but it
# does not adopt the proj4 format used by the above approaches
proj.abbr <- attr(boundaries, "projection") # abbreviated projection info
proj.full <- attr(boundaries, "prj") # full projection info
print(proj.abbr)
# [1] "LL"

# generate map using PBSmapping plotting functions
plotPolys(boundaries, projection=proj.abbr, border="gray",
    xlab="Longitude", ylab="Latitude")
addPoints(towns, pch=20, cex=0.8)
addLines(rivers, col="blue", lwd=2.0)
RK
quelle
Danke, RK, ich versuche immer noch, den Dreh raus zu bekommen, aber das war ein ausgezeichneter Hinweis.
user3671
Bitte. Viel Spaß beim Mappen :)
RK
11

Der einfachste Weg, zwei Diagramme zu überlagern, ist möglicherweise die add = TRUEOption in plot. Hier ist ein Beispiel mit künstlichen Daten

# Load sp package for creating artificial data
library(sp)

# Create sample town points
towns <- data.frame(lon = sample(100), lat = sample(100))
towns <- SpatialPoints(towns)

# Create sample polygon grid
grd <- GridTopology(c(1,1), c(10,10), c(10,10))
polys <- as.SpatialPolygons.GridTopology(grd)

# Plot polygons
plot(polys)

# Add towns (in red colour)
plot(towns, add = TRUE, col = 'red')
gelbe Kappe
quelle
Danke fürs Einchecken, Yellowcap. Aber es heißt "hinzufügen ist kein grafischer Parameter."
user3671
Das Beispiel funktioniert gut, wenn ich es auf meinem Computer ausführe, aber es scheint, dass "Hinzufügen" nicht immer funktioniert und von der Klasse der Eingabedaten abhängt (siehe diesen Beitrag) . Also mein Vorschlag ist vielleicht nicht der beste Weg ...
Yellowcap