• Saltar a la navegación principal
  • Saltar al contenido principal
Geoinnova

Consultoría y Formación en SIG, Territorio y Medio Ambiente

  • Geoinnova
    • Quiénes somos
    • Coworking
    • Alianzas Estratégicas
    • Visor de proyectos Geoinnova
  • SIG y Desarrollo
    • Plugins QGIS
    • GeoNode
    • QElectricGIS
    • Planero Web
  • Consultoría Territorial
    • Planes de Emergencia Municipales de Protección Civil
    • Planes Urbanos de Actuación Municipal – PUAM
    • Evaluación Ambiental Estratégica de planes y programas
    • Minimización de Impacto Territorial y Declaración de Situación Individualizada en suelo no urbanizable
    • Turismo sostenible
  • Consultoría Ambiental
    • Trámites de Economía Circular
    • Prevención y gestión ambiental
    • Responsabilidad social corporativa
    • Estrategia de sostenibilidad
  • Formación
    • Todos los cursos
    • Formación para empresas
    • Máster y Diplomas
    • Cursos de QGIS Online Certificados
    • Cursos de programación, desarrollo SIG y geoservicios
    • Cursos de Teledetección
    • Cursos de Giswater
    • Cursos de SIG con ArcGIS
    • Cursos de Medio Ambiente
    • Campus
  • Divulgación
    • Blog
    • Tertulia Territorio Geoinnova
    • TFMs y otro trabajos de alumnos
    • Noticias
    • Webinars
    • Geolibrería
  • Contacto
    • Soporte – Tickets
Programación y Desarrollo SIG APÚNTATE
Programación y Desarrollo SIG SIG

Explorando el método DBSCAN: Análisis de agrupamiento por densidad con Scikit-learn

19/03/2024 Deja un comentario

En el siguiente artículo vamos a conocer el método de análisis de agrupamiento por densidad DBSCAN usando la biblioteca Python para aprendizaje automático Scikit-learn. El caso de ejemplo se centrará en la generación de agrupaciones de construcciones.

Contenidos ocultar
¿Qué es una análisis de agrupamiento o clustering?
DBSCAN
Caso Práctico: Análisis de densidad de edificaciones
Librerías Python
Carga y manejo de datos
Cálculo de agrupaciones por densidad con DBSCAN
Informe y estadísticas de resultados
Representación gráfica del análisis con Matplotlib
Generación de archivo SIG y visualización con QGIS.
Conclusiones

¿Qué es una análisis de agrupamiento o clustering?

Las técnicas de agrupamiento o clustering se utilizan para identificar grupos naturales que comparten ciertas similitudes entre sí dentro de un conjunto de datos. Este tipo de técnicas son ampliamente explotadas en áreas como el marketing, los negocios (segmentación de clientes, análisis de comportamiento de compra…) o las redes sociales  pero también pueden también ser usadas teniendo en cuenta la componente geográfica de la información.

Los métodos de clustering enfocados a la identificación de patrones, categorías o relaciones  basadas en proximidad o distancia como K-Means, Clustering Jerárquico o DBSCAN son algoritmos manejados en el diagnóstico geográfico y que pueden ser aplicados a la planificación urbana, diseño de redes de transporte, geografía de la salud o el análisis territorial.

DBSCAN

El algoritmo Density-Based Spatial Clustering of Applications with Noise (DBSCAN) está basado en la densidad y puede ser usado para identificar agrupaciones  en base a la misma de las entidades espaciales a analizar.

A diferencia de otros métodos que requieren especificar el número de clústeres de antemano, DBSCAN automáticamente determina el número de clusters basándose en dos parámetros:

  • Distancia máxima entre dos muestras para que una sea considerada en la vecindad de la otra
  • Densidad  de puntos mínimos necesarios para formar un clúster.

Esquema de representación. Los puntos en rojo cumplirían los criterios de agrupación mientas que los azules quedarían fuera (outliers). B y C se sitúan en los bordes del análisis. (Fuente: Wikipedia)

Este algoritmo es particularmente útil en el análisis geográfico porque puede manejar datos espaciales de formas irregulares y detectar ruidos (outliers).

El algoritmo se encuentra presente en la mayoría de los software y paquetes de análisis SIG. Podemos encontrarlo dentro de QGIS y ArcGIS. Es también una función accesible dentro de PostGIS (ST_ClusterDBSCAN). En este artículo conoceremos cómo usarlo gracias a la biblioteca Python de machine learnig Scikit-learn.

Si estás interesado en aprender cómo usar las librerías Python dentro del campo del análisis geográfico puedes consultar nuestro Curso de análisis geográfico con Python y librerías geoespaciales.

Caso Práctico: Análisis de densidad de edificaciones

Como hemos comentado, vamos a realizar una análisis de densidad básico sobre un conjunto de edificaciones con el objetivo de identificar posibles patrones de agrupación de las mismas.

Modelos más avanzados de este tipo de análisis venimos utilizándolos por ejemplo, en la elaboración de diferentes trabajos de planificación territorial y urbanística que se están llevando desde Geoinnova en colaboración con Abtemas.

Librerías Python

Junto con Scikit-learn, las librerías Python que vamos a usar en este ejemplo son:

  • Pandas. Librería especializada en el manejo y análisis de estructuras de datos.
  • Numpy. Librería para manejo de “arreglos” de datos y cálculos matemáticos
  • GeoPandas. Similar a Pandas pero funciones y capacidades de gestión de datos geográficos.

Todo el código será manejado dentro de un notebook de Jupyter por lo que podremos realizar una representación de los resultados de nuestros datos usando Matplotlib.

Tras la instalación de las correspondientes librerías comenzaremos con su importación dentro de notebook.

Carga y manejo de datos

Nuestros datos se encuentran en un archivo CSV que contiene columnas con las coordenadas de localización X e Y que representan el centroide de la construcción. Con Pandas recuperamos los datos del CSV y crearemos un dataframe que posteriormente usaremos.

Cálculo de agrupaciones por densidad con DBSCAN

Una vez que disponemos de nuestros datos vamos a realizar el análisis de agrupaciones por densidad. Para este estudio, los criterios que vamos a aplicar son los siguientes:

  • Distancia máxima entre edificaciones 150 metros (eps). Consideramos esta medida como un parámetro significativo de vecindad entre construcciones.
  • Número mínimo de densidad de edificaciones 3 (min_samples) o valor de vecindad. A pesar de que se cumpla la distancia anterior, solo se tendrán en cuenta aquellos casos en los que se cumpla para 3 o más construcciones.

Para conocer con más detalle el usos de DBSCAN puedes acceder a la documentación oficial en el siguiente enlace https://scikit-learn.org/stable/modules/generated/sklearn.cluster.DBSCAN.html

Informe y estadísticas de resultados

Usando funciones básicas de Python como len(), set() y estadísticas generaremos un sencillo informe de resultados que nos ofrece los indicadores:

  • Total de edificaciones: 667
  • N.º de agrupaciones: 39
  • N.º de edificaciones (ruido) que están a una distancia > 150 m: 136
  • N.º mínimo edificaciones por agrupación: 3
  • N.º máximo de edificaciones por agrupación: 74
  • N.º medio de edificaciones por agrupación: 13.62

Representación gráfica del análisis con Matplotlib

Usando la popular librería de representación Matplotlib podemos genera un “mapa” que represente los resultados de nuestro análisis.

La configuración es muy básica. Lo único que añadimos son unas líneas de código que nos creen una paleta de colores  para asignarla a cada agrupación. También se añade el color negro para aquellas localizaciones que no cumplen los criterios del análisis.

Este es el resultado de final.

Generación de archivo SIG y visualización con QGIS.

Gracias a la librería GeoPandas exportamos los resultados en un GeoJSON y como buenos “giseros” lo cargamos en nuestros SIG de escritorio de referencia QGIS junto con la ortofotografía del PNOA.

Conclusiones

Con este sencillo ejemplo, que puede hacerse más complejo si introducimos análisis por categorizaciones (ej. tipo de usos), relación con redes de transporte, índices de edificabilidad, y manejando librerías geográficas de código abierto podemos ver el gran potencial de este tipo de métodos de análisis espacial y como son de gran apoyo para la toma de decisiones de índole geográfico.

Etiquetas: clustering, python, sig

Apúntate a nuestra newsletter semanal

"*" señala los campos obligatorios

Este campo es un campo de validación y debe quedar sin cambios.
Consentimiento*

Artículos relacionados

misiones-sentinel-copernicus-geoinnova
Las misiones Sentinel del programa Copernicus: qué observa cada una y para qué se utilizan
25/08/2026
Qfield-nueva-actualización-trabajo-de-campo-geoinnova
QField 4.2: precisión subcentimétrica y nuevas herramientas para el trabajo de campo
22/07/2026
plugins-qgis-org-nueva-web-qt6-geoinnova
La web oficial de plugins de QGIS prepara su versión 4.0.0 ¿qué cambia para desarrolladores y usuarios?
08/07/2026

Patricio Soriano

Geógrafo “Full-stack” y desarrollador web especializado en Tecnologías de Información Geográfica.

Vinculado con la labor de consultoría, ha realizado diversos proyectos sobre análisis urbanístico, planes de vivienda y gestión patrimonial, así como la puesta en marcha de Sistemas de Información Geográfica corporativos para la administración pública.

Dentro de los trabajos como desarrollador se encuentran el diseño de varias aplicaciones webmapping y desarrollos para QGIS (Spanish Inspire Catastral Downloader, CDAU Downloader o qgis2mapea). Autor del blog www.sigdeletras.com y organizador de Geoinquietos Córdoba. Actualmente se encuentra incorporado al equipo de desarrollo de Geoinnova en aplicaciones Open Source.

Como docente lleva impartiendo cursos profesionales de SIG desde 2007 para diferentes entidades y en diferentes modalidades (tanto presencial como online). Especializándose en los últimos años en cursos de QGIS a distintos niveles.

Interacciones con los lectores

¿Quieres comentarnos algo? Adelante! Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Geoinnova
c/ Luis Morondo Urra nº 8 Bajo A
31006 Pamplona (Navarra)
info@geoinnova.org
+34 948 117 137

Horario de atención

Lunes a Viernes - 09:00 a 14:00 y de 16:00 a 19:00.
Fines de semana y Festivos - Exclusivamente por mail.
Horario de Verano (01 de julio al 30 de agosto): De lunes a viernes de 8 a 15h.

Otras páginas de interes

  • Promociones y descuentos en formación
  • Formación bonificada FUNDAE
  • Verificador y descarga de Certificados de aprovechamiento
  • Cursos certificable por QGIS.org

Legal

  • Aviso Legal
  • Política de privacidad
  • Política de seguridad
  • Política de cookies
  • Términos y condiciones
Entidad adherida a Confianza Online Certificado de inscripción en el Registro de huella de carbono, compensación y proyectos de absorción Logo Plazox Certificado de conformidad con el ENS

Todo el contenido publicado desde 2009 hasta 2026 en el Blog de Geoinnova por Geoinnova y colaboradores está licenciado bajo CC BY-NC-ND 4.0
Para usos específicos, contactar con Geoinnova.

© 2026 · Desarrollada por Geoinnova

Gestionar el Consentimiento de las Cookies
Utilizamos tecnologías como las cookies para almacenar y/o acceder a la información del dispositivo. Lo hacemos para mejorar la experiencia de navegación y para mostrar anuncios personalizados. El consentimiento a estas tecnologías nos permitirá procesar datos como el comportamiento de navegación o las identificaciones únicas en este sitio. No consentir o retirar el consentimiento, puede afectar negativamente a ciertas características y funciones.
Funcional Siempre activo
El almacenamiento o acceso técnico es estrictamente necesario para el propósito legítimo de permitir el uso de un servicio específico explícitamente solicitado por el abonado o usuario, o con el único propósito de llevar a cabo la transmisión de una comunicación a través de una red de comunicaciones electrónicas.
Preferencias
El almacenamiento o acceso técnico es necesario para la finalidad legítima de almacenar preferencias no solicitadas por el abonado o usuario.
Estadísticas
El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos. El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos anónimos. Sin una requerimiento, el cumplimiento voluntario por parte de su proveedor de servicios de Internet, o los registros adicionales de un tercero, la información almacenada o recuperada sólo para este propósito no se puede utilizar para identificarlo.
Marketing
El almacenamiento o acceso técnico es necesario para crear perfiles de usuario para enviar publicidad, o para rastrear al usuario en un sitio web o en varios sitios web con fines de marketing similares.
  • Administrar opciones
  • Gestionar los servicios
  • Gestionar {vendor_count} proveedores
  • Leer más sobre estos propósitos
Personalizar
  • {title}
  • {title}
  • {title}