Ninguna ruta, tesela ni matriz de tiempos sale a un tercero. Por eso no te las factura nadie.
Un GMAO que consume servicios de mapas de pago tiene un coste que crece con tu uso, y cada consulta le cuenta a ese proveedor dónde está tu personal. Aquí PostGIS, Valhalla, VROOM, Planetiler y el servidor de teselas corren dentro de la instalación, desplegados con Docker Compose. No es una preferencia técnica: cambia la estructura de costes y quién ve las posiciones de tu equipo.
Sin coste por llamada, sin cuota de proveedor.
Con un servicio de mapas de pago, el coste variable crece con el uso. Cada matriz de tiempos, cada geocodificación y cada tesela se factura, y cuanto más usa el sistema tu equipo, más pagas.
Con los motores dentro de la instalación, calcular la matriz de proximidad de toda la plantilla cada vez que se abre el panel de asignación no cuesta nada. Por eso la cercanía se calcula siempre, y no solo cuando alguien se acuerda de pedirla.
Y la consecuencia que no es económica: las posiciones del personal y las rutas no salen de la instalación, porque no hay un tercero al que consultarlas.
Qué corre y para qué.
| Componente | Tecnología | Función |
|---|---|---|
| API | FastAPI (Python) | Toda la lógica de negocio, sobre /api/v1 más la API pública en su propio espacio. |
| Base de datos | PostgreSQL + PostGIS | Datos y geometría. Con pg_cron y pg_partman. |
| Frontend web | PHP + MapLibre GL | Aplicación de gestión y portal de cliente. |
| Servidor de teselas | Nginx dedicado | Sirve las teselas MVT cacheadas en disco sin pasar por la API. |
| Ruteo | Valhalla sobre OSM | Rutas, matrices origen-destino, map matching e isócronas. |
| Optimización | VROOM | Solver de rutas con ventanas temporales y capacidades. |
| Mapa base | Planetiler | Genera PMTiles de OpenStreetMap para cualquier región. |
| Despliegue | Docker Compose | Dos redes: una interna y una de proxy, con TLS automático. |
Por qué el mapa no se atasca con la red completa.
Si el inventario se dibuja con marcadores del navegador, el mapa se atasca al mostrar una red completa: el DOM no aguanta cien mil elementos y hay que paginar o filtrar, que es exactamente lo que le quita la utilidad al mapa.
Aquí el inventario se sirve como teselas vectoriales MVT generadas desde PostGIS, cacheadas en disco en un volumen compartido y servidas por un Nginx dedicado que no pasa por la API. La caché lleva versionado por capa y purga selectiva: al cambiar un estilo o un dato se invalida lo que toca, no todo.
Mapa base propio y paquetes offline.
- Mapa base OSM propio Generado con Planetiler para la región que haga falta, con catálogo dinámico de regiones. Sin clave de API de terceros.
- PMTiles de activos Las teselas del inventario empaquetadas para uso offline en el dispositivo.
- MBTiles de ortofoto Ortofoto del PNOA descargada del IGN y recortada al ámbito de trabajo.
- Capas WMS externas De terceros, con descubrimiento automático por GetCapabilities.
- Estilos MapLibre completos Relleno, trazo, patrón, símbolo, etiqueta y filtro por zoom, con estilo temático por propiedad y leyenda derivada.
Cuatro que conviene conocer antes de evaluar.
- Geometrías en EPSG:3857 Internamente, coherente con la teselación web, con transformación a 4326 en las fronteras del sistema.
- Circuit breakers Ante Valhalla y VROOM, con estado consultable en el health check. Si el motor de rutas cae, la aplicación degrada en lugar de bloquearse.
- Particionado mensual de telemetría Con gestión automática de particiones y retención: 60 días para posiciones de personal, 90 para vehículo.
- Lógica compartida en PL/pgSQL Elegibilidad, disponibilidad, horario efectivo y detección de geofences viven en la base de datos, para que web, móvil y procesos automáticos den el mismo resultado.
Preguntas frecuentes
¿Se puede desplegar en nuestra propia infraestructura?
¿Qué pasa si Valhalla o VROOM no responden?
¿Cuántas migraciones de esquema lleva el producto?
Última actualización: