La ortoimagen en el ICGC
## Programa
1. Presentación ICGC
2. Cómo se hace una cobertura de ortoimagen
3. Uso de FOSS en la cadena de producción del ICGC
## ICGC

## Desenvolupament de Geoprocés
- Grupo de desarrolladores a cargo de mantener el software que da
soporte a las cadenas de producción de datos raster (desde 2012)
- Lidar
- MDE
- Ortofoto
- 4 personas
## La cadena de producción de ortoimagen
- Conjunto de procesos destinados a producir las hojas de distribución
de ortofotos a partir de fotogramas orientados.
- El ICGC elabora las ortofotos con software de desarrollo propio.
- más de 20 años de desarrollo
- Certificada ISO
- _Major Rewrite_ en el 2012, en un contexto de recortes.
## La cadena de producción de ortoimagen
- Programas interactivos y _batch_, command-line
- C++ / Fortran para proceso de imagen
- Python siempre que podemos...
- ... en Windows, toolchain de Microsoft
Windows??? MSVC???
## Major Rewrite
- En 2012 el ICGC se propone entregar la cobertura en el año de vuelo.
- Sin presupuesto extra...
- Aumentando la productividad.
- Solución...
FOSS!
Receta para hacer una cobertura orto
Pero antes...
Receta para hacer una lechuza
## Receta para hacer una orto
1. Ortofoto rápida (_batch_)
2. CC / Retoque (_interactivo_)
3. Mejoras finales (_batch_)
## 1. Ortofoto rápida
Dependencias de datos más o menos complejas:
Antes de calcular una costura tienen que haber terminado la
igualación radiométrica de los fotogramas implicados, pero no se
pueden calcular costuras susceptibles de cruzarse en paralelo.
*Un grafo de dependencias estático no describe el problema*
## 2. CC / Retoque
- Un grupo operadores revisan las ortofotos en busca de artefactos.
- *Otro* grupo los retoca.
*PROCESO MANUAL*
## Mejora de los procesos automáticos

## Distribución
- Creación de un cluster de proceso "reciclando" máquinas desktop obsoletas.
- Uso de [HTCondor](https://research.cs.wisc.edu/htcondor/) para coordinarlos.
## HTCondor
- `https://research.cs.wisc.edu/htcondor/`
- Universidad de Wisconsin
- Desde 1988!
- Licencia Apache 2.0
- Simplificando: "Cola de batch" distribuida.
## HTCondor

## HTCondor
- Muy usado en aplicaciones geo, incluso por sofware comercial. Pej. Erdas Imagine.
- Muy potente, fama de difícil de configurar...
- Nuestra experiencia es excelente
- Muy robusto
- Extensible
## Nuevos problemas
- Distribuir augmenta las necesidades de sincronización
- Dificulta la monitorización del progreso global
## Solución: BBDD centralizada de producción
- Introducción de una BBDD geoespacial de soporte a producción.
- Tracking de estado de ejecución de los procesos automáticos.
- Una BBDD SQL facilita la sincronización (ACID)
## Solución: BBDD centralizada de producción

Adivinad cuál... (+ PostGIS)
## Solución: BBDD centralizada de producción
- Tablas con las entidades relevantes para la producción:
- fotogramas
- costuras
- hojas de distribución...
- Guarda geometría, estado de producción...
Arquitectura
## Procesos
- Pasan a ser scripts de Python (main)
- Heredan de una clase común que provee servicios básicos:
- parseo homogéneo de parámetros
- log de progreso a la BBDD (inicio de ejecución, acabado OK, error...)
- gestión de archivos temporales
## Monitorización
- Cliente que permite visualizar el estado de la producción
- Customización de QGis
## OrthoQ

## OrthoQ
- Arquitectura basada en plugins
- Un plugin inicial se encarga de customizar los menús, cargar el proyecto de trabajo, etc...
- Aplicación de base para la interacción con la cadena, con distintos perfiles:
- Managers: informes de progreso, indicadores ISO...
- Operadores: ayuda a retoque i CC
## Monitorización de la cola de condor

## Monitorización del cluster

## Mejora de procesos manuales
- Marcaje
- Retoque
## Marcaje
- Un operador abre la ortofoto a resolución real y marca los artefactos encontrados.
- Los artefactos son geometrías que se guardan en PostGIS
- Elaboración de estadísticas para la mejora de procesos
- Retoque posterior
## Marcaje / Retoque

## Retoque
- Depende del artefacto ofrecemos más o menos ayuda.
- El operador de retoque escoge una zona y se abre automáticamente PhotoShop con:
- la orto a retocar
- los fotogramas originales que puedan tener información relevante para el retoque.
- sólo se cargan las zonas afectadas
- si hay solape entre hojas, las ediciones se traspasan a todas las hojas afectadas.
- Os imagináis cómo se hace esto sin una BBDD geoespacial?
## Conclusiones
Resultados
Personas
Meses
Esfuerzo
Pre - FOSS
8
14
112
FOSS
5
8
40
TOTAL
280%
## Nuevos proyectos
- LidarQ, CarboQ
- Catálogo de datos de producción (fototeca, ortos, las, aerotriangulaciones...)
- Compromiso: liberar código
## Conclusiones
- Un contexto de recortes también es una oportunidad para FOSS.
- Para mejorar la productividad, hay que pensar en el throughput de los procesos automáticos, pero también en la usabilidad de las herramientas para los procesos manuales.
- Trabajar con software abierto y estándares multiplica las sinergias. El software comercial intenta vender productos _end to end_, en detrimento de la interoperabilidad.
## Agradecimientos
- Equip de Desenvolupmament de Geoprocés.
- Equipo de TI.
- ICGC
- A todos los proyectos FOSS...
- presentación con reveal.js y spacemacs