UNIVERSIDAD CENTRAL DEL ECUADOR
Facultad de Ciencias Económicas
Docente: Ing. Hernán Rengel
UNIVERSIDAD CENTRAL DEL ECUADOR
La información de partida con la que contamos es el enunciado y un conjunto de capas temáticas en formato vectorial. Estas capas se proporcionan en formato Shapefile, por lo que antes de comenzar conviene conocer algunos detalles sobre este formato:
El Shapefile es un formato de representación vectorial desarrollado por ESRI (Enviromental Systems Research Institute). Consta de un número variable de archivos, en los que se almacena digitalmente la localización de los elementos geográficos (archivo shape.shp) junto con sus atributos o características (tabla dBase.dbf). Algunas de las características principales de este tipo de archivos son:
No se trata de un único archivo, si no de entre 3 y 8 archivos independientes. Cada uno de estos archivos tiene una función específica y almacena un tipo de información (elementos geométricos, atributos, proyección, metadatos…)
Shape (.shp): Se trata del archivo principal y almacena la información geométrica de los elementos de la capa en formato vectorial. Pueden contener puntos, líneas o polígonos y cada vértice lleva implícitas sus coordenadas en un sistema de referencia concreto (que por lo general se especifica en el archivo project). Se componen de una cabecera con información general sobre el tipo de shapefile y un número variable de registros, que a su vez pueden estar compuestos por varias entidades geométricas independientes.
Shape Index (.shx): Consiste en un índice de las entidades geométricas que permite refinar las búsquedas dentro del archivo .shp.
Los archivos que contiene son:
● .shp — formato shape; características de la geometría propiamente dicha
● .shx — formato índice de shape; un índice con las características de las geometrías para permitir búsquedas más rápidas
● .dbf — formato de atributos; atributos presentados en columnas para cada “shape”
# Generar un script en rmarkdowmd
library(ggplot2)
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ tibble 3.1.8 ✔ dplyr 1.0.9
## ✔ tidyr 1.2.0 ✔ stringr 1.4.0
## ✔ readr 2.1.2 ✔ forcats 0.5.1
## ✔ purrr 0.3.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
library(datos)
## Warning: package 'datos' was built under R version 4.2.2
x11()
ggplot()+borders("world","ecuador")
# Ciudades
ciudades <- c("Quito","Guayaquil","Cuenca","Loja","Tena")
ciudades
## [1] "Quito" "Guayaquil" "Cuenca" "Loja" "Tena"
# Latitudes
lat <- c(-0.22985, -2.19616, -2.90055, -3.99313, -0.9938)
lat
## [1] -0.22985 -2.19616 -2.90055 -3.99313 -0.99380
# Longitudes
lon<- c(-78.52495, -79.88621, -79.00453, -79.20422, -77.81286)
lon
## [1] -78.52495 -79.88621 -79.00453 -79.20422 -77.81286
# Aqui se muestra la tabla creada con los datos de las ciduades
Tabla_ciudades <-tibble(Ciudad = ciudades,
Latitud = lat,
Longitud = lon)
Tabla_ciudades
## # A tibble: 5 × 3
## Ciudad Latitud Longitud
## <chr> <dbl> <dbl>
## 1 Quito -0.230 -78.5
## 2 Guayaquil -2.20 -79.9
## 3 Cuenca -2.90 -79.0
## 4 Loja -3.99 -79.2
## 5 Tena -0.994 -77.8
# Ahora grafica puntos capa de puntos
x11()
ggplot() +borders("world", "ecuador") +geom_point(data =
Tabla_ciudades,
aes(x = lon,
y = lat))
# Ahora grafica nombres provincias
x11()
ggplot() +borders("world", "ecuador") +
geom_text(data = Tabla_ciudades,
aes(x = lon,y = lat),
label = ciudades)
# Generar un script
library(tidyverse)
library(jsonlite)
##
## Attaching package: 'jsonlite'
## The following object is masked from 'package:purrr':
##
## flatten
library(httr)
library(highcharter)
## Warning: package 'highcharter' was built under R version 4.2.2
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
# En formato lista
mapa.ec <-
httr::GET("https://raw.githubusercontent.com/zpio/mapa-ecuador/main/ec-all.geo.json") %>%
httr::content(type = 'text') %>%
jsonlite::fromJSON(simplifyVector = FALSE)
## No encoding supplied: defaulting to UTF-8.
# En formato data frame
mapa_ec <-
jsonlite::fromJSON("https://raw.githubusercontent.com/zpio/mapa-ecuador/main/ec-all.geo.json") %>%
as.data.frame()
#
provincias <-
data.frame(
name= mapa_ec$features.properties$name,
lon = mapa_ec$features.properties$longitude,
lat = mapa_ec$features.properties$latitude
) %>%
filter(name != is.na(name)) %>%
mutate(across(everything(), as.character)) %>%
mutate(across(c(lon, lat), as.numeric))
# Poblacion Ecuador por provincia 2020
pop_prov <- read_csv('https://raw.githubusercontent.com/zpio/mapa-ecuador/main/pop_prov2020.csv')
## Rows: 24 Columns: 2
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): Provincia
## dbl (1): Poblacion2020
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# Mapa con colores degradados predeterminados
highchart() %>%
hc_add_series_map(
map = mapa.ec,
df = pop_prov,
name= 'Población',
value = "Poblacion2020",
joinBy = c("name", "Provincia"),
dataLabels = list(enabled = TRUE,
format = '{point.name}'),
states = list(hover = list(color='#04635b')),
borderColor = "#FFFFFF"
) %>%
hc_mapNavigation(enabled = TRUE) %>%
hc_add_theme(hc_theme_smpl()) %>%
hc_title(text = "Población del Ecuador por provincias") %>%
hc_subtitle(text = "Source: https://github.com/zpio") %>%
hc_legend(
layout= 'vertical',
align= 'right',
verticalAlign= 'bottom'
)
Muchos paquetes y funciones para la generación de gráficos se apoyan en los motores gráficos base de R. Sin embargo, para ciertos gráficos avanzados se quedan cortos. En este post, siguiendo con la estrecha relación entre R y los SIG, mostraremos los pasos para construir mapas con R con un acabado profesional utilizando el paquete ggplot2.
Antes de adentrarnos en el paquete ggplo2, es interesante conocer el funcionamiento del sistema de gráficos en R. Este sistema está formado por:
Paquetes gráficos. Sistemas gráficos. Motor de dispositivos gráficos. Paquetes de dispositivos gráficos.
library(tidyverse) library(jsonlite) library(httr) library(highcharter)
tres_prov <- pop_prov %>%
filter(Provincia %in% c("Guayas", "Pichincha", "Manabi")) %>%
arrange(Poblacion2020) %>%
mutate(value = 1:3)
highchart() %>%
#hc_chart(backgroundColor = "#161C20") %>% #color fondo imagen
hc_add_series_map(
map = mapa.ec,
df = tres_prov,
name= 'Población',
value = "value",
joinBy = c("name", "Provincia"),
dataLabels = list(enabled = TRUE,
format = '{point.Provincia}'),
states = list(hover = list(color='#e3e3e3')),
tooltip = list(pointFormat = "Pop: {point.Poblacion2020:,.0f}"),
borderColor = "#FFFFFF",
#para cambiar el tono gris del mapa
nullColor = "#e8e8e8" ) %>%
hc_mapNavigation(enabled = TRUE) %>%
hc_add_theme(hc_theme_smpl()) %>%
hc_colorAxis(
ataClassColor="category",
dataClasses = list(list(from=1, to=1, color ='#c4a6ff', name="Manabi"),
list(from=2, to=2, color = '#ff4f4f', name="Pichincha"),
list(from=3, to=3, color = '#1e8bb0', name="Guayas"))
) %>%
hc_title(text = "Población del Ecuador por provincias") %>%
hc_subtitle(text = "Source: https://github.com/zpio") %>%
hc_legend(
layout= 'vertical',
align= 'right',
verticalAlign= 'bottom')
QGIS le permite crear nuevas capas en diferentes formatos.
Proporciona herramientas para crear GeoPackage, Shapefile, SpatiaLite,
formato GPX y capas temporales borrador (también conocidas como capas de
memoria). La creación de una :ref: nueva capa
GRASS
Para crear una nueva capa de GeoPackage, presione el botón newGeoPackageLayer Nueva Capa GeoPackage… en el menú Capa -> Crear capa -> o desde la barra de herramientas Administrador de Fuente de Datos. Se mostrará el diálogo Nueva Capa Geopaquete como se muestra en figure_create_geopackage.
El primer paso es indicar la ubicación del archivo de la base de datos. Esto se puede hacer presionando el botón … a la derecha del campo Base de datos y seleccione un archivo GeoPackage existente o cree uno nuevo. QGIS agregará automáticamente la extensión correcta al nombre que proporcione.
Dá un nombre a la nueva capa/tabla (Nombre Tabla)
Defina el Tipo de geometría. Si no es una capa sin geometría, puede especificar si debe Incluir dimensión Z y/o Incluir valores M.
Especificar el sistema de coordenadas de referencia usando el botón
Introduce el Nombre del campo
Selecciona el Tipo de datos. Solo los atributos número decimal, número entero, datos de texto y Fecha son soportados.
En función del formato de datos, introduce la Longitud y Precisión.
Click en el botón newAttribute Añadir a Lista de campos
Repite los pasos anteriores para cada campo que necesites añadir
Una vez contento con los atributos, click Aceptar. QGIS añadirá la nueva capa a la leyenda, y puede editarla como se describe en la sección Digitalizando una capa existente.