Descripción General

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.

Objetivo

Construcción y actualización del modelo de densidad habitacional.

Estructura Metodológica

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:

Construcción del código

1. Activación de librerías

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)

2. Lectura de datos

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)

3. Definición de la cuadrícula de anÔlisis

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

4. CƔlculo de la densidad de Kernel

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")

5. Visualización de la densidad a nivel distrital

plot(rast_ker5050)

6. Exportar resultados

writeRaster(rast_ker,
        filename = "01_RMarkDown/Yarinacocha_denviv30050.tif",
        format = "GTiff", 
        overwrite = TRUE)

Revisión de los datos a nivel de CCPP

Figura 1: Visualización de resultados en los CCPP de Yarinacocha
Figura 1: Visualización de resultados en los CCPP de Yarinacocha
Figura 2: Visualización de resultados en los CCPP de Yarinacoch
Figura 2: Visualización de resultados en los CCPP de Yarinacoch

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