La Delimitación de Colonias y otros Asentamientos Humanos
(DCAH) constituye una iniciativa del Instituto
Nacional de Estadística y Geografía (INEGI) que tiene como
propósito esencial la generación y mantenimiento de un sistema integral
de información geográfica sobre los asentamientos humanos en el
territorio mexicano. Este proyecto se desarrolló mediante un marco de
colaboración estratégica con las autoridades municipales, quienes
desempeñan un papel crucial en la delimitación precisa de estos espacios
territoriales.
La implementación del DCAH se sustenta en cuatro pilares
fundamentales que garantizan su efectividad y relevancia
institucional.
Generación de información geográfica precisa: El programa se centra en la generación de información geográfica de alta precisión, estableciendo un riguroso sistema de datos espaciales que refleja fielmente la realidad territorial de los asentamientos humanos en México. Este compromiso con la exactitud y la calidad de los datos representa la base sobre la cual se construyen todas las demás funciones del programa.
Análisis y la toma de decisiones: Capacidad para facilitar procesos de análisis y toma de decisiones en múltiples ámbitos. La información generada por el DCAH se ha convertido en un recurso indispensable para la planificación urbana estratégica, la optimización en la gestión de servicios públicos, el desarrollo de investigaciones sociodemográficas y la formulación de políticas públicas basadas en evidencia. Esta versatilidad en su aplicación demuestra el valor multidimensional del programa.
Promover la colaboración interinstitucional: Enfoque en la promoción de la colaboración interinstitucional. Se ha establecido mecanismos efectivos de cooperación con las autoridades municipales, creando sinergias que aseguran tanto la calidad como la actualización continua de la información recopilada. Esta colaboración representa un modelo ejemplar de coordinación entre diferentes niveles de gobierno para el beneficio público.
Poner a disposición de la sociedad información relevante: La democratización del acceso a la información. Se ha implementado una política de transparencia y accesibilidad, poniendo a disposición del público general los datos del DCAH a través de su plataforma digital. Esta iniciativa no solo cumple con los principios de gobierno abierto, sino que también facilita el acceso a información valiosa para investigadores, planificadores urbanos y ciudadanos interesados.
Proporcionar a las Unidades de Estado (UE) y a la sociedad en general un insumo que permita el análisis y estudios referidos a esta delimitación de colonias y otros asentamientos humanos, en temas geográficos, sociales, demográficos, económicos, culturales, históricos, políticos, entre otros.
Se encuentran en formatos digitales, cabe aclarar que aún no se cuenta con la cobertura a nivel nacional, pero se cuenta con Delimitaciones de colonias y otros asentamientos humanos y conjuntos de datos vectoriales con los que se tiene el aval del Ayuntamiento municipal.
Los archivos vectoriales se encuentran disponibles en formato Shape
(.shp), los cuales pueden ser incorporados en sistemas de
información geográfica (SIG). Mismo que se encuentran
disponibles en la página oficial del INEGI
Asentamiento humano: Es el establecimiento de un conglomerado demográfico, con el conjunto de sus sistemas de convivencia, en un área físicamente localizada considerando dentro de la misma los elementos naturales y las obras materiales que lo integran. También es un componente de referencia del domicilio geográfico.
Delimitación de los asentamientos humanos
La delimitación o actualización de los asentamientos humanos conforman a las localidades amanzanadas de la siguiente manera:
| Conjunto de datos vectoriales de la capa de asentamientos humanos | ||||
| Insituto Nacional de Estadística y Geografía | ||||
| Campo | Tipo | Longuitud | Descripción | Contenido |
|---|---|---|---|---|
| Fuente: INEGI. Delimitación de colonias y otros asentamientos humanos, 2024 | ||||
La función readOGR del paquete rgdal,
extrae automáticamente la información utilizada por otros paquetes
SIG de código abierto como QGIS y permite a R manejar una
gama más amplia de formatos de datos espaciales. Esta función lee datos
OGR y datos vectoriales, pero solamente permite manejar
capas con características geométricas (no mezcla puntos, líneas o
polígonos en una sola capa) y a su vez establecerá un sistema de
referencia espacial si la capa tiene dichos metadatos.
Para leer un archivo shapefile, se establecen los
siguientes argumentos, como dsn, en donde se indica el
directorio que contiene los shapes y layer que es el nombre
explícito de la capa a trabajar y dichas capas deben de ir sin la
extensión .shp.
A continuación, se lee el archivo .shp que contiene de manera
integrada la división de el área geoestadística de asentamientos
as.
shape_asentamientos <- readOGR(dsn ="D:/Colonias y Asentamientos/DCAH 2024/conjunto_de_datos",
layer = "00as",
encoding = "UTF-8",
use_iconv = TRUE)
shape_asentamientos <- shape_asentamientos %>%
spTransform(., CRS('+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'))El Instituto Nacional de Estadística, Geografía e Informática (INEGI)
tiene puestos a disposición del público los shapefiles con los distintos
niveles de información geográfica. Estos archivos digitales se
encuentran disponibles en el Marco Geoestadístico Nacional (MGN),
el cual es un sistema único y se presenta la división del territorio
nacional en diferentes niveles de desagregación para referir
geográficamente la información estadística de los censos y encuestas. Se
integra al Sistema Nacional de Información Estadística y Geográfica
(SNIEG).
Este producto integra información vectorial, tablas de atributos y catálogos. Muestra la división geoestadística del territorio nacional en sucesivos niveles del territorio. Esta división está dada por los llamados límites estadísticos, que pueden coincidir con los límites político-administrativos oficiales, los cuales tienen sustento legal.
A continuación, se lee el archivo .shp que contiene de manera
integrada la división de el área geoestadística municipal
agem.
DCAH)Se usa ggplot2 y otros paquetes para visualizar
shapefiles geoespaciales y se exportan la figura como un PDF.
RColorBrewer: Paletas de colores.
ggspatial: Herramientas para mapas en
ggplot2.
ggpubr: Funciones adicionales para
ggplot2, como exportar gráficos.
# Paleta de colores
require(RColorBrewer)
require(ggspatial)
require(ggpubr)
p <- ggplot() +
layer_spatial(shape_asentamientos, aes(fill = CVE_ENT), color = "transparent") +
layer_spatial(shape_estados, fill = "transparent", color = "black") +
theme_bw() +
theme(plot.title = element_text(size = 22, hjust = 0.15, family = "Montserrat", face = "bold"),
plot.caption = element_text(size = 11, hjust = 0.2, vjust = 1, family = "Montserrat"),
legend.key.size = unit(0.5, "cm"),
legend.text = element_text(size = 12, family = "Montserrat"),
legend.title = element_text(size = 10, hjust = 0.5, family = "Montserrat", face = "bold"),
legend.position = "none"
) +
scale_fill_viridis_d(option = "A", begin = 0.3, end = 1) +
scale_color_viridis_d(option = "A", begin = 0.3, end = 1) +
guides(color = 'none') +
labs(title = "Delimitación de colonias y otros asentamientos humanos (DCAH)",
fill = "",
color = "",
caption = expression(paste("Fuente: INEGI. Delimitación de colonias y otros asentamientos humanos, 2024")))
p
path = "Output/Delmitación de colonias.pdf"
ggexport(p, filename = path ,width = 10, height = 10, device = "cairo")Dado que a nivel nacional la delimitación de colonias no es
representativo. Se usa las librerías osmdata y
sf para descargar y guardar datos de las vías de la
Ciudad de México desde OpenStreetMap
(OSM).
osmdata: Permite obtener datos de OpenStreetMap.sf: Manejo de datos espaciales en formato
sf (Simple Features).Se obtiene las vías de OpenStreetMap. Utilizando la
función opq(city), crea una consulta para la Ciudad de
México en OSM.
library(osmdata)
library(sf)
# Se establece Ciudad de México como el área de consulta.
city <- "Ciudad de México"
# Se obtienen datos de vías de OpenStreetMap
viasosm <- opq(city) %>% ## Se crea una consulta para la Ciudad de México en OSM.
add_osm_feature(key = "highway") %>% ## Filtra las entidades relacionadas con carreteras/calles.
osmdata_sf() ##Se descarga los datos en formato sf.
#saveRDS(viasosm, file = paste0(here::here(), "/Output/viasosm_cdmx.RDS"))
readRDS(file = paste0(here::here(), "/Output/viasosm_cdmx.RDS"))
# Se extraen las líneas de las vías de OSM
viasosm_sf <- viasosm$osm_lines
# Se define el sistema de referencia espacial (CRS)
st_crs(viasosm_sf) <- 4326 ## sistema de coordenadas EPSG:4326
# Se filtra la Ciudad de México en shape_estados
cdmx <- shape_estados %>%
filter(CVEGEO %in% "09")
# Transformar CRS a EPSG:4326 si no está en ese sistema
cdmx <- spTransform(cdmx, CRS("+init=epsg:4326"))
#st_crs(viasosm_sf) # Debe ser EPSG:4326
#st_crs(cdmx) # Debe ser EPSG:4326
# Se filtran solo las calles principales
cdmx_sf <- st_as_sf(cdmx) ## Se convierte cdmx en formato sf
# Se recorta las calles dentro de la Ciudad de México
viasosm_sf <-viasosm_sf |>
st_intersection(cdmx_sf)
# Se filtra solo calles principales
viasosm_sf <- viasosm_sf %>%
filter(highway %in% c("primary", "secondary", "tertiary"))# Límites
limites <- shape_estados %>%
filter(CVEGEO %in% "09") %>%
bbox()
#paleta <- colorRampPalette(pals::kovesi.linear_bmw_5_95_c86(10))(5)
paleta <- c("#00024B", "#190ED1", "#FEEBFE", "#FC81FD", "#B621FE")
p <- ggplot() +
layer_spatial(shape_asentamientos %>% filter(CVE_ENT %in% "09"),
aes(fill = TIPO, color = "LINE1", linetype = "LINE1"),
linewidth = 0.005) +
layer_spatial(shape_municipios %>% filter(CVE_ENT %in% "09"),
aes(color = "LINE2", linetype = "LINE2"),
fill = "transparent",
linewidth = 0.5) +
layer_spatial(shape_estados %>% filter(CVE_ENT %in% "09"),
aes(color = "LINE3", linetype = "LINE3"),
fill = "transparent",
linewidth = 1) +
geom_sf(data = recorteviasosm_sf, fill = NA, linewidth = 0.2) +
theme_bw() +
theme(plot.title = element_text(size = 22, hjust = 0.15, family = "Montserrat", face = "bold"),
plot.subtitle = element_text(size = 16, hjust = 0.15, family = "Montserrat", face = "bold"),
plot.caption = element_text(size = 11, hjust = 0.2, vjust = 1, family = "Montserrat"),
axis.text = element_text(family = "Montserrat"),
legend.key.size = unit(0.5, "cm"),
legend.text = element_text(size = 10, family = "Montserrat"),
legend.title = element_text(size = 12, hjust = 0.5, family = "Montserrat", face = "bold"),
legend.position = "right") +
scale_fill_manual(labels=c("Aeropuerto", "Barrio", "Colonia", "Pueblo", "Zona Federal"),
values = paleta) +
scale_color_manual(values = c("LINE1" = "white", "LINE2" = "lightgrey", "LINE3" = "black")) +
scale_linetype_manual(labels = c("Colonias", "Alcaldias", "Estado"),
values = c("LINE1" = "solid", "LINE2" = "solid", "LINE3" = "solid")) +
coord_sf(xlim = c(limites['x', 'min'], limites['x', 'max']),
ylim = c(limites['y', 'min'], limites['y', 'max'])) +
guides(color = 'none',
linetype = guide_legend(override.aes = list(fill = NA,
size = 1,
linetype = c(1, 1, 1)))) +
labs(title = "Colonias de la Ciudad de México",
subtitle = "Delimitación de colonias y otros asentamientos humanos (DCAH)",
fill = "TIPO",
linetype = "Delimitación",
caption = expression(paste("Fuente: INEGI. Delimitación de colonias y otros asentamientos humanos, 2024")))
p
#path = "Output/CDMX_OSM.pdf"
#ggexport(p, filename = path ,width = 10, height = 10, device = "cairo")Se define el estilo y el contenido de un título para un mapa Leaflet
utilizando HTML y CSS dentro de
R.
tags$style(HTML("...")): Esta función permite incluir
estilos CSS en el documento..leaflet-control.map-title: Define una clase CSS que se
aplicará al título del mapa.tags$div(...): Crea un contenedor div en el cual se
coloca el título del mapa.tag.map.title: Aplica los estilos definidos
anteriormente a este contenedor div.# Estructura del título
tag.map.title <- tags$style(HTML("
.leaflet-control.map-title {
transform: translate(-50%,20%);
position: fixed !important;
left: 50%;
text-align: center;
padding-left: 10px;
padding-right: 10px;
background: rgba(255,255,255,0.75);
font-weight: bold;
font-size: 28px;
}
"))
# Nota de página
title <- tags$div(
tag.map.title, HTML("Fuente: INEGI. Delimitación de colonias y otros asentamientos humanos, 2024")
) Se calcula el cuadro delimitador que contiene las coordenadas de los
límitesde un objeto espacial utilizando la función
st_bbox() de la librería sf.
xmin: La coordenada mínima en el eje x (longitud
mínima).ymin: La coordenada mínima en el eje y (latitud
mínima).xmax: La coordenada máxima en el eje x (longitud
máxima).ymax: La coordenada máxima en el eje y (latitud
máxima).paleta <- colorRampPalette(pals::kovesi.linear_bmw_5_95_c86(10))(5)
paleta <- c("#FEEBFE", "#FC81FD", "#B621FE", "#190ED1", "#00024B")
mypalette <- leaflet::colorFactor(palette = paleta,
domain = forcats::fct_relevel(shape_asentamientos@data$TIPO,
c("Aeropuerto", "Barrio", "Colonia", "Pueblo", "Zona Federal")),
na.color = "transparent")
map <- leaflet(options = leafletOptions(minZoom = 7, maxZoom = 15, zoomControl = FALSE)) %>%
addMapPane("estados", zIndex = 430) %>% # shown above ames_lines
addMapPane("layer1", zIndex = 420) %>% # shown below
addMapPane("layer2", zIndex = 420) %>% # shown below
addTiles() %>%
setView(lat = 19.355, lng = -99.2, zoom = 10) %>%
setMaxBounds(lng1 = bounding_box[1],
lat1 = bounding_box[2],
lng2 = bounding_box[3],
lat2 = bounding_box[4]) %>%
addProviderTiles(providers$OpenStreetMap,
options = providerTileOptions(minZoom = 5, maxZoom = 5)) %>%
addPolygons(data = shape_estados %>% filter(CVE_ENT %in% "09"),
fill = NA,
stroke = TRUE, # Dibujar los bordes del polígono
weight = 1.5, # line thickness
dashArray = "1",
opacity = 1,
color = "black", # line colour
highlight = highlightOptions(weight = 2,
color = "red", # Color de selección
dashArray = "",
fillOpacity = 0.6,
bringToFront = TRUE),
options = pathOptions(pane = "layer1")) %>%
addPolygons(data = shape_municipios %>% filter(CVE_ENT %in% "09"),
fill = NA,
popup = ~NOMGEO,
stroke = TRUE, # Dibujar los bordes del polígono
weight = 1, # line thickness
dashArray = "1",
opacity = 1,
color = "grey", # line colour
highlight = highlightOptions(weight = 2,
color = "red", # Color de selección
dashArray = "",
fillOpacity = 0.6,
bringToFront = TRUE),
options = pathOptions(pane = "layer2")) %>%
addPolygons(data = shape_asentamientos %>% filter(CVE_ENT %in% "09"),
fillColor = ~mypalette(TIPO),
fillOpacity = 0.6,
stroke = TRUE, # Dibujar los bordes del polígono
popup = ~NOM_ASEN,
weight = 0.005, # line thicknes
dashArray = "1",
opacity = 1,
color = "black", # line colour
highlight = highlightOptions(weight = 2,
color = "red", # Color de selección
dashArray = "",
fillOpacity = 0.6,
bringToFront = TRUE),
options = pathOptions(pane = "layer1")) %>%
addControl(title, position = "bottomright") %>%
addLegend("bottomright",
colors = paleta,
labels = c("Aeropuerto", "Barrio", "Colonia", "Pueblo", "Zona Federal"),
values = ~forcats::fct_relevel(shape_asentamientos@data$TIPO, c("Aeropueto", "Barrio", "Colonia", "Pueblo", "Zona Federal")),
title = stringr::str_wrap("Tipo", 15), opacity = 0.7)
mapSe cálcula área en m² y se agrega al data.frame
require(rgeos)
#Nivel estatal
shape_estados@data$area_m2 <- gArea(shape_estados, byid = TRUE)
#Nivel municipal
shape_municipios@data$area_m2 <- gArea(shape_municipios, byid = TRUE)
#Nivel asentamientos
shape_asentamientos@data$area_m2 <- gArea(shape_asentamientos, byid = TRUE) Se convierten en \(Km^2\)
Librerías que se usaron en el trabajo
| package | loadedversion | source |
|---|---|---|
| dplyr | 1.1.3 | CRAN (R 4.3.2) |
| extrafont | 0.19 | CRAN (R 4.3.0) |
| ggplot2 | 3.4.3 | CRAN (R 4.3.1) |
| ggpubr | 0.6.0 | CRAN (R 4.3.1) |
| ggspatial | 1.1.9 | CRAN (R 4.3.2) |
| gt | 0.10.0 | CRAN (R 4.3.1) |
| htmltools | 0.5.8.9000 | Github (rstudio/htmltools@487aa0bed7313d7597b6edd5810e53cab0061198) |
| htmlwidgets | 1.6.4 | CRAN (R 4.3.3) |
| kableExtra | 1.3.4 | CRAN (R 4.3.1) |
| knitr | 1.45 | CRAN (R 4.3.2) |
| leafgl | 0.1.1 | CRAN (R 4.3.1) |
| leaflet | 2.2.2 | CRAN (R 4.3.3) |
| leaflet.extras | 1.0.0 | CRAN (R 4.3.1) |
| leaflet.providers | 2.0.0 | CRAN (R 4.3.3) |
| mapview | 2.11.0 | CRAN (R 4.3.1) |
| openxlsx | 4.2.5.2 | CRAN (R 4.3.1) |
| RColorBrewer | 1.1-3 | CRAN (R 4.3.0) |
| readxl | 1.4.3 | CRAN (R 4.3.1) |
| rgdal | 1.6-7 | CRAN (R 4.3.1) |
| sf | 1.0-16 | CRAN (R 4.3.3) |
| showtext | 0.9-6 | CRAN (R 4.3.1) |
| showtextdb | 3.0 | CRAN (R 4.3.1) |
| sp | 2.2-0 | CRAN (R 4.3.3) |
| spData | 2.3.1 | CRAN (R 4.3.3) |
| spdep | 1.3-5 | CRAN (R 4.3.3) |
| spdplyr | 0.4.0 | Github (mdsumner/spdplyr@e14dec9017a96c309065ab319da96c839cac6f58) |
| sysfonts | 0.8.8 | CRAN (R 4.3.1) |
| unikn | 0.9.0 | CRAN (R 4.3.1) |
This
work by Diana Villasana
Ocampo is licensed under a
Creative
Commons Attribution 4.0 International License.