Jak nakładać warstwy mapy (shp i csv) w R?


9

To jest crossspost z stackoverflow . Bardzo mało wiem o oprogramowaniu GIS i robię wszystkie moje mapowania z góry R. Przeprosiny, jeśli jest to zbyt podstawowe pytanie. Załóżmy, że mam dwa pliki kształtów z różnych źródeł, ale o różnych atrybutach. Powiedzmy, że jedna dotyczy granic administracyjnych w Teksasie ( boundaries.shp), a druga dotyczy rzek w Teksasie ( rivers.shp). Mam również trzeci plik towns.csvpokazujący lokalizacje miast w państwie. Po wczytaniu plików mogę nadpisać lokalizacje miast na granicach administracyjnych w maptoolspakiecie:

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

Ale jak mogę nałożyć wszystkie trzy? Z pewnością jest na to łatwy sposób?

Odpowiedzi:


8

PBSMapping powinien pasować do twoich potrzeb. W NCEAS jest tutorial . Poniższy kod jest dostosowany z tego samouczka. Przyjęłam założenia dotyczące twoich danych. Edytuj odpowiednio do swojej sytuacji.

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)

Dzięki, RK, wciąż próbuję się z tym pogodzić, ale to był doskonały wskaźnik.
user3671

Nie ma za co. Miłej zabawy mapowania :)
RK

11

Najprostszym sposobem na nałożenie dwóch wykresów może być użycie add = TRUEopcji w plot. Oto przykład ze sztucznymi danymi

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

Dzięki za włożenie, żółta czapka. Ale mówi: „add nie jest parametrem graficznym”.
user3671

Przykład działa dobrze, gdy uruchamiam go na komputerze, ale wydaje się, że „dodawanie” nie zawsze działa i zależy od klasy danych wejściowych, zobacz ten post . Więc moja sugestia może nie być najlepszym sposobem ...
yellowcap
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.