Compartir
Portada de VIGÍA: teledetección municipal contra la obra no declarada
Proyecto teledeteccion · gispostgis

VIGÍA: teledetección municipal contra la obra no declarada

Teledetección sobre datos públicos para aflorar construcciones no declaradas y recuperar ingresos municipales.

25 ago 20266 minde lectura2vistas
Tipo
SaaS B2G
Estado
MVP local
IoU modelo
0,767
Tests
113
año
2026

Qué es VIGÍA

VIGÍA es una plataforma de teledetección para administraciones públicas españolas. Compara ortofotos de un mismo territorio en dos fechas, cruza los cambios con las huellas de edificación del Catastro y entrega al técnico municipal una bandeja de posibles construcciones no declaradas, priorizada por euros recuperables y con expediente preliminar imprimible. Está diseñado como un motor genérico con verticales conectables: el MVP implementa solo el primero, construcciones no declaradas (IBI/ICIO). Todo funciona sobre datos públicos gratuitos, sin ninguna credencial de pago.

Pantalla de inicio de VIGÍA con el potencial de recuperación estimado, los casos pendientes y la fecha de los datos
Inicio de un municipio ya analizado: potencial de recuperación orientativo, casos pendientes y fecha de los datos. Nombre del municipio, direcciones, referencias catastrales y coordenadas difuminados.

Comparador de añadas

Dos mapas sincronizados del mismo territorio en fechas distintas, con las capas del Catastro superpuestas en ambos.

Detección por IA

Un ReFineNet afinado dibuja huellas de edificio sobre el PNOA; candidato es lo que aparece y antes no estaba.

Cruce con el Catastro

PostGIS descarta lo ya declarado: solo queda lo construido que no consta en las huellas oficiales de edificios y piscinas.

Bandeja en euros

Cada caso se valora en IBI e ICIO no prescritos y se ordena por retorno esperado, con confianza por antigüedad.

Expediente imprimible

HTML listo para imprimir con evidencia fechada, datos oficiales de la parcela y trazabilidad de cadena de custodia.

Cualquier municipio

Alta desde el código DGC de 5 dígitos, resuelto del feed ATOM provincial. Todo el territorio común, salvo catastros forales.

Cómo funciona por dentro

Todo se levanta en local con un único docker compose up: una SPA en React con MapLibre, una API en Fastify y un worker geoespacial en Python que se comunican exclusivamente a través de PostgreSQL con PostGIS. La cola de trabajos es una tabla de Postgres reclamada con FOR UPDATE SKIP LOCKED: un contenedor menos que con Redis y reclamo atómico correcto. En una prueba sobre datos públicos de un municipio pequeño, prepararlo de cero llevó unos 16 segundos: unos 1.500 edificios y 80 piscinas ingeridos, 31 cambios detectados y 25 candidatos valorados.

Flujo de un municipio

  1. Elegir provincia y municipio; el mapa vuela al término antes de ingerir nada.
  2. Ingerir del Catastro las huellas oficiales de edificios y piscinas (GML INSPIRE).
  3. Detectar cambios entre dos añadas reales del PNOA con el modelo de IA.
  4. Cruzar en PostGIS y descartar todo lo que ya consta declarado.
  5. Valorar cada candidato en euros no prescritos y priorizar la bandeja.
  6. Revisar caso a caso y generar el expediente preliminar imprimible.

Pensado para quien no es informático

La interfaz está diseñada para técnicos municipales, no para desarrolladores: navegación en lenguaje claro, una sola acción grande por pantalla y una vista de revisión caso a caso con foto antes/después y tres botones enormes: sí es nueva, no es nada, no lo sé. El triaje se guarda con deshacer y atajos de teclado.

Pantalla Revisar el municipio con tres pasos completados y el resumen del resultado
Revisar el municipio: tres pasos en lenguaje llano y un resumen final con los casos y los euros estimados.

El mapa del cruce

Sobre la ortofoto se superponen las huellas declaradas, las piscinas y, en ámbar, los polígonos candidatos: lo construido que no consta. Todas las capas se sirven como teselas vectoriales MVT generadas directamente en PostGIS, y la leyenda se filtra según lo que está activo.

Mapa con la ortofoto PNOA, huellas declaradas en azul y dos polígonos candidatos en ámbar, con el panel de capas y la leyenda
El mapa del cruce: ortofoto PNOA de fondo, lo declarado en azul y, en ámbar, lo que no consta. A la izquierda, las capas; abajo, la leyenda.

La bandeja en euros

Cada candidato se tipifica por reglas geométricas (obra nueva, ampliación o piscina), se valora en IBI no prescrito más ICIO y recibe una prioridad de 0 a 100 por retorno esperado. Las reglas son deliberadamente simples: piscina si es pequeña (hasta 150 m²) y compacta, ampliación si está a menos de 3 metros de un edificio declarado, obra nueva el resto. En la prioridad, la mitad del peso es el valor, un cuarto la confianza y otro cuarto la compacidad. El trabajo del técnico sobrevive a los recálculos: estados, notas y direcciones se reasignan por solape geométrico en vez de perderse.

Bandeja de posibles construcciones no declaradas con fotos antes y después, tipo, prioridad y euros estimados
La bandeja ordenada por prioridad: antes y después de cada caso, tipo, superficie, euros orientativos y antigüedad. Nombre del municipio, direcciones, referencias catastrales y coordenadas difuminados.

Sobre los euros

Todas las cifras son estimaciones orientativas calculadas con tipos medios nacionales (configurables por municipio), nunca liquidaciones. Los casos en cuarentena por posible plazo administrativo no suman en el titular.

La prueba más fuerte

La ficha de cada caso muestra tres fotos fechadas (antes, después y actual) y consulta en vivo los datos oficiales de la parcela en la sede del Catastro. Cuando la parcela consta como sin edificar y la ortofoto muestra una construcción, el caso se sostiene casi solo.

Ficha de detalle de un caso con valoración desglosada en IBI e ICIO, datos del cambio e inmueble catastral más cercano
Ficha de un caso: valoración desglosada en IBI e ICIO, datos del cambio y el inmueble catastral más cercano consultado al Catastro. Nombre del municipio, direcciones, referencias catastrales y coordenadas difuminados.

El expediente preliminar

Un clic genera un expediente en HTML listo para imprimir: evidencia fechada vía WMS del IGN, valoración orientativa desglosada, comprobación oficial del Catastro, observaciones del técnico y cadena de custodia con trazabilidad completa.

Expediente preliminar imprimible con datos del candidato, valoración orientativa y tres ortofotos fechadas
Expediente preliminar: datos del candidato, valoración orientativa y evidencia fechada (antes, después y actual). Nombre del municipio, direcciones, referencias catastrales y coordenadas difuminados.

Lo que VIGÍA no hace

VIGÍA detecta y prepara; no altera el catastro ni sanciona. La comprobación, la decisión y la tramitación son siempre del ayuntamiento. Es apoyo a la inspección, no un sustituto.

Un detector entrenado con etiquetas gratis

Afinar un detector de edificios suele exigir pagar anotación humana. Aquí no: las huellas del Catastro ya ingeridas se rasterizan sobre la ortofoto PNOA y sirven de verdad-terreno. Así salieron 1.193 pares imagen/máscara de cinco municipios a coste cero. La validación se hizo reteniendo municipios enteros, no teselas aleatorias, para no inflar la métrica: la IoU sobre municipios nunca vistos quedó en 0,767, frente al 0,651 del modelo base sin afinar.

Tres paneles de la misma tesela: ortofoto PNOA, huellas del Catastro en azul y edificios detectados por el modelo base en rojo
La misma tesela tres veces: ortofoto PNOA 2023, huellas del Catastro que sirven de etiqueta y lo que detecta el modelo base antes de afinarlo (IoU 0,67 en esta tesela).

El bug del JPEG en blanco

El PNOA no vuela todos los años: cada zona se fotografía cada ~3 años, en años distintos. Pedir al WMS una añada sin vuelo no devuelve un error: devuelve un JPEG en blanco de 667 bytes. El comparador ofrecía todos los años 2004-2024, así que elegir uno fantasma comparaba una foto real contra un lienzo blanco y la IA no detectaba nada. La solución tiene tres capas: sondear al ingerir qué años tienen vuelo real, ofrecer en la interfaz solo esos, y fallar con mensaje claro si aun así llega una imagen vacía.

Medirse aunque el titular empeore

Ya el primer cribado, antes del modelo, se afinó midiendo: comparar colores entre dos ortofotos confundía una casa nueva con un campo que cambia de color, así que pasó a exigir pérdida de vegetación (índice Excess Green, porque el PNOA no tiene infrarrojo) y a descartar formas alargadas. En un área de prueba de 2 km bajó de 88 a 11 polígonos.

Sentinel-2 entró como fuente de candidatos igual que el PNOA, y se midió: a 10 metros de resolución dio 72 falsos positivos de 73 y una estimación absurda de 10,6 millones de euros en un solo término. En vez de retocar umbrales, se le cambió el papel: hoy es una capa de zonas a investigar, excluida explícitamente de la bandeja fiscal. Y refinar el año de aparición de cada obra bajó la estimación del municipio piloto de 95,9k a 82,2k euros. Peor titular comercial, mejor verdad.

“No estamos construyendo un producto monolítico, sino un motor reutilizable con verticales conectables. Es una decisión de arquitectura, no solo de negocio.”
— Documentación interna del proyecto

Estado real

VIGÍA es un MVP completo y funcionando en local, construido en un sprint de tres días de junio de 2026 más un commit de consolidación en agosto: 10.624 líneas, 25 rutas de API, 9 migraciones SQL y 113 tests unitarios con CI en GitHub Actions. No está desplegado, ningún ayuntamiento lo ha usado y la métrica que decide si sirve —de cada diez candidatos, cuántos son construcción real— aún no está medida: la herramienta de evaluación existe, falta etiquetar entre 50 y 100 casos a mano. El desarrollo está en pausa hasta validarlo con un cliente real.

Materiales / Compra

Tienda: Datos 100 % públicos y gratuitos: ortofotos PNOA del IGN (CC BY 4.0 scne.es), Catastro de la DGC vía descargas INSPIRE y Sentinel-2 del programa Copernicus. Modelo base: building-footprint-segmentation (Apache-2.0), afinado con un dataset propio de 1.193 pares generado automáticamente desde el Catastro. Las capturas incluyen ortofotos PNOA © IGN, CC BY 4.0 scne.es.

Aprendizajes

La lección grande fue medirse y aceptar el resultado aunque quitara valor comercial: Sentinel-2 quedó degradado a capa auxiliar tras medirlo, y fechar mejor los edificios bajó la estimación del piloto. La deuda más importante sigue siendo la primera del TODO: la precisión y el recall del candidato, que solo un etiquetado humano puede dar.