library(sf)
library(ggplot2)
library(rgdal)
library(RColorBrewer)
library(ggnewscale)
# Elección de la zona del área de México
# https://www.keene.edu/campus/maps/tool/
# Se guardan las coordenadas en archivo de texto y se convierten en un objeto espacial y con cierta proyección.
rutacam<-"D:/Documents/Claudia/Midropbox/Investigacion y escritos/mapasnacionales/"
limitesbox<-read.csv(paste0(rutacam,"limites.txt"),header=TRUE, sep=",",encoding="latin")
names(limitesbox)<-c("long","lat")
#Creación del objeto espacial seleccionado y su proyección
p = Polygon(limitesbox)
ps = Polygons(list(p),1)
sps = SpatialPolygons(list(ps))
sps <- st_as_sf(sps, coords = c("long","lat"))
st_crs(sps) <- CRS("+proj=longlat +datum=WGS84 +no_defs")
#Lectura de layers de osm descargados en máquina
#https://download.geofabrik.de/north-america/mexico.html
rutamc<-"D:/Documents/Claudia/Midropbox/Investigacion y escritos/mapasnacionales/mexico-latest-free.shp"
#Caminos carreteras
#lectura del shapefile con librería sf, más rápida que el readOGR
shapename <- read_sf('D:/Documents/Claudia/Midropbox/Investigacion y escritos/mapasnacionales/mexico-latest-free.shp/gis_osm_roads_free_1.shp')
#misma proyección que el área seleccionada
st_crs(shapename) <- CRS("+proj=longlat +datum=WGS84 +no_defs")
#filtro de tipos de caminos
mexosmlayer_sub <- shapename[shapename$fclass %in% c("primary","secondary","residential","tertiary"), ]
sf::sf_use_s2(FALSE)
# elección de subconjunto a graficar
recorteosmlayer = mexosmlayer_sub[sps, ]
#Mismo procedimiento para la capa de los ríos, canales
shapename <- read_sf('D:/Documents/Claudia/Midropbox/Investigacion y escritos/mapasnacionales/mexico-latest-free.shp/gis_osm_waterways_free_1.shp')
st_crs(shapename) <- CRS("+proj=longlat +datum=WGS84 +no_defs")
#filtros de tipos de corrientes de agua
mexosmlayer2_sub <- shapename[shapename$fclass %in% c("river","stream"), ]
#Recorte de zona
recorteosmlayer2 = mexosmlayer2_sub[sps, ]
#Mismo procedimiento para vías de ferrocarril
shapename <- read_sf('D:/Documents/Claudia/Midropbox/Investigacion y escritos/mapasnacionales/mexico-latest-free.shp/gis_osm_railways_free_1.shp')
st_crs(shapename) <- CRS("+proj=longlat +datum=WGS84 +no_defs")
#filtros de tipos de vías de ferrocarrill
#mexosmlayer3_sub <- shapename[shapename$fclass %in% c("railway_station","bus_station","airport","railway_halt"), ]
#Todas
mexosmlayer3_sub <- shapename
#recorte de zona
recorteosmlayer3 <-mexosmlayer3_sub[sps, ]
###### colores tipos de línea y tamaño
#colores
pal1<-c("3d5a80","98c1d9","e0fbfc","ee6c4d","293241")
via_paletacoltor <- c("trunk_link" =paste0("#",pal1[1]),
"trunk" =paste0("#",pal1[1]),
"primary" = paste0("#",pal1[1]),
"primary_link" = paste0("#",pal1[1]),
"secondary" = paste0("#",pal1[2]),
"residential"= paste0("#",pal1[2]),
"tertiary" = paste0("#",pal1[2]),
"motorway_link" = paste0("#",pal1[3]),
"secondary_link" = paste0("#",pal1[3]),
"path" = paste0("#",pal1[3]),
"motorway"= paste0("#",pal1[4]),
"pedestrian" = paste0("#",pal1[4]),
"service" = paste0("#",pal1[4]),
"unclassified" = paste0("#",pal1[5]))
via_paletagua <- c("stream" = "orange",
"drain" ="transparent",
"river" = "red",
# "river" = paste0("#",pal1[3]),
"canal" = "transparent")
pal2<-c("131313","4A4B4D")
#color de la vía
via_transporte<-
c("rail" =paste0("#",pal2[1]),
"tram" =paste0("#",pal2[2]))
#Tamaño de la vía
via_transporte2<-
c("rail" =.5, "tram" = .5,"funicular"=.5,"narrow_gauge"=.5)
#conversión de proyección de coordenadas
#tipo de línea de vía
LINES <- c("4" = "dotdash", "6" = "dotted", "8" = "solid")
recorteosmlayer3$lintip<-"6"
#Gráfica de mapa
# librería ggnewscale para cambiar de paletas de colores
mapamx <- ggplot(data = recorteosmlayer,aes(color=fclass)) + geom_sf(show.legend = FALSE)+
labs(title = "", x = "", y = "")+
scale_colour_manual(values =via_paletacoltor)+
ggnewscale::new_scale_color() +
geom_sf(data=recorteosmlayer2,aes(color=fclass),show.legend = FALSE)+
labs(title = "", x = "", y = "")+
scale_colour_manual(values =via_paletagua)+
ggnewscale::new_scale_color() +
geom_sf(data=recorteosmlayer3,aes(color=fclass,linetype=factor(lintip),size=fclass),show.legend = FALSE)+
labs(title = "", x = "", y = "")+
scale_colour_manual(values =via_transporte)+
#scale_colour_brewer(palette = "Greys")+
scale_linetype_manual(values = LINES)+
scale_size_manual(values=via_transporte2)+
theme(
panel.background = element_rect(fill = "transparent"), # bg of the panel
plot.background = element_rect(fill = "white", color = NA), # bg of the plot
panel.grid.major = element_blank(), # get rid of major grid
panel.grid.minor = element_blank(), # get rid of minor grid
legend.background = element_rect(fill = "transparent"), # get rid of legend bg
legend.box.background = element_rect(fill = "transparent"), # get rid of legend panel bg
legend.key = element_rect(fill = "transparent", colour = NA), # get rid of key legend fill, and of the surrounding
axis.line = element_line(colour = "transparent"),
axis.text.x=element_blank(), axis.ticks.x = element_blank(),
axis.text.y = element_blank(), axis.ticks.y = element_blank())+ coord_sf()
mapamx
Guardado de la imagen
# Guardado de imágen formato y dimensiones
ggsave("camriofer_map.png", width = 800, height = 800, units = "mm", dpi = 300,limitsize = FALSE)
ggsave("camriofer_map.svg", width = 1300, height = 1300, units = "mm", dpi = "retina",limitsize = FALSE)