Comment superposer des couches de carte (shp et csv) dans R?


9

Il s'agit d'un crosspost de stackoverflow . Je connais très peu de logiciels SIG et je fais tout mon mapping dans R. Excuses à l'avance si c'est une question trop basique. Disons que j'ai deux fichiers de formes provenant de sources différentes mais avec des attributs différents. Disons, l'un est pour les limites administratives du Texas ( boundaries.shp) et l'autre pour les rivières du Texas ( rivers.shp). J'ai également un troisième dossier towns.csvmontrant les emplacements des villes dans l'état. Après avoir lu les fichiers, je peux surplacer les emplacements des villes sur les limites administratives dans le maptoolspackage:

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

Mais comment puis-je superposer les trois? Il y a sûrement un moyen facile de le faire?

Réponses:


8

PBSMapping devrait répondre à vos besoins. Il y a un tutoriel chez NCEAS . Le code ci-dessous est adapté de ce tutoriel. Je fais des hypothèses sur vos données btw. Veuillez modifier selon votre 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)

Merci, RK J'essaie toujours de comprendre, mais c'était un excellent pointeur.
user3671

Je vous en prie. Amusez-vous à cartographier :)
RK

11

La façon la plus simple de superposer deux tracés pourrait être d'utiliser l' add = TRUEoption dans plot. Voici un exemple avec des données artificielles

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

Merci d'avoir contribué, yellowcap. Mais il dit "ajouter n'est pas un paramètre graphique".
user3671

L'exemple fonctionne bien lorsque je l'exécute sur mon ordinateur, mais il semble que "ajouter" ne fonctionne pas toujours et dépend de la classe des données d'entrée, voir ce post . Donc ma suggestion n'est peut-être pas la meilleure solution ...
yellowcap
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.