Este documento presenta el proceso de codificación para calcular la densidad habitacional (viviendas por hectĆ”rea), con fines de demarcación y organización territorial conforme a lo establecido en la Ley N° 27795. Como caso prĆ”ctico se utiliza el distrito de Yarinacocha, en la provincia de Coronel Portillo. El modelo se basa en la metodologĆa desarrollada por el equipo SSIAT (2019), incorporando mejoras en la estructura del código y el uso de librerĆas actualizadas. AdemĆ”s, toma como referencia la construcción de mapas de densidad espacial presentada por Maczokni, A. (2025) en su trabajo sobre cartografĆa del crimen.
Construcción y actualización del modelo de densidad habitacional.
Nombre del indicador: DENSIDAD HABITACIONAL
Definición de las variables que componen el indicador:
Unidad de medida:
Escala de las variables:
Escala del indicador:
Fuente y periodicidad de la data:
library(tidyverse)
library(sf)
library(sp)
library(raster)#opcional, antes se usaba esta librerĆa
library(terra) #libreria actual para trabajar datos raster
library(spatstat)
Se carga los puntos de vivienda y del polĆgono del distrito Yarinacocha.
vivienda <- st_read("Yarinacocha_vivienda/Yarinacocha_vivienda.shp",
stringsAsFactors=TRUE,
quiet = TRUE)
cuadrante <- st_read("Yarinacocha_distrito/Yarinacocha_distrito.shp",
stringsAsFactors=TRUE,
quiet = TRUE)
Se reproyectan los shp cargados a UTM WGS84.
vivienda_proy <- st_transform(vivienda, 32718)
cuadrante_proy <- st_transform(cuadrante, 32718)
Se visualizan los datos cargados.
ggplot()+
geom_sf(data = cuadrante) +
geom_sf(data = vivienda)
Se extraen los puntos de coordenadas de cada vivinda y se genera una matriz de coordinadas (x.y) por cada punto.
# Coordenadas de los puntos
coords <- st_coordinates(vivienda_proy)[, 1:2]
Se definen los lĆmites del Ć”rea de anĆ”lisis.
# Definición de los rangos espaciales
minx <- st_bbox(cuadrante_proy)$xmin
maxx <- st_bbox(cuadrante_proy)$xmax
miny <- st_bbox(cuadrante_proy)$ymin
maxy <- st_bbox(cuadrante_proy)$ymax
Se construye una malla regular cada 100m.
# Secuencias cada 100m (-50 a +50)
x.p <- seq(minx - 50, maxx + 50, by = 100)
y.p <- seq(miny - 50, maxy + 50, by = 100)
Luego se usa as.owin (ventana de observación), esta función define el window (ventana), el lĆmite espacial dentro del cual ocurren los puntos de vivienda a analizar.
# Crear mÔscara espacial (grilla de estimación)
w <- owin(xrange = c(min(x.p), max(x.p)), yrange = c(min(y.p), max(y.p)))
mask <- as.mask(w, xy = list(x = x.p, y = y.p))
# Crear patrón espacial ppp
vivienda_ppp <- ppp(x = coords[, 1],
y = coords[, 2],
window = mask)
## Warning: 17 points were rejected as lying outside the specified window
## Warning: data contain duplicated points
Se mueven los datos duplicados y se aplica el jittering
vivienda_ppp_jittered <- rjitter(vivienda_ppp, retry = TRUE, nsim = 1, drop = TRUE)
plot(vivienda_ppp_jittered, main = "Patrón espacial con jittering")
## Warning in plot.ppp(vivienda_ppp_jittered, main = "Patrón espacial con
## jittering"): 17 illegal points also plotted
Primero se definen los parƔmetros, esto dependerƔ de la escala de anƔlisis. Para el presente ejercicio, se usarƔn los siguientes parƔmetros:
# ParƔmetros
h <- 50 # ancho de banda
eps <- 50 # resolución de celda (metros)
Se realiza el cƔlculo de densidad de Kernel del tipo Epanechnikov.
# Densidad
dens_viv <- density.ppp(vivienda_ppp_jittered,
sigma = h,
kernel = "epanechnikov",
edge = FALSE,
leaveoneout = FALSE,
scalekernel = TRUE,
diggle = TRUE,
eps = eps) * 10000 # viviendas por hectƔrea
# Convertir a raster
rast_ker5050 <- raster(dens_viv,
crs = "+proj=utm +zone=18 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
plot(rast_ker5050)
writeRaster(rast_ker,
filename = "01_RMarkDown/Yarinacocha_denviv30050.tif",
format = "GTiff",
overwrite = TRUE)
Referencia:
Maczokni, A. (2025). Studying spatial point patterns. Crime Mapping Textbook. Recuperado el [fecha de consulta], de https://maczokni.github.io/crime_mapping_textbook/studying-spatial-point-patterns.html#getting-the-data