Motor de rutas y mapa base#
Los mapas de Empowerment Center pueden calcular isócronas (las zonas a la que se llega desde un punto en un tiempo o una distancia) y una matriz de tiempos y distancias hasta las entidades de una capa. Las isócronas radiales (círculos) se calculan siempre; las que van por carretera necesitan un motor de rutas. Esta página explica cómo configurarlo, junto con el mapa base que se dibuja debajo de las capas.
Antes de empezar#
- La configuración la hace quien instala ECenter: variables de entorno o un
application.ymlmontado en el backend (ver Configuración). - Ningún motor de rutas ni mapa base es obligatorio.
Qué cambia con un motor de rutas#
| Sin motor | Con motor | |
|---|---|---|
| Isócronas radiales (círculos de distancia en línea recta) | Sí | Sí |
| Isócronas por tiempo o por distancia por carretera | No («No hay motor de rutas configurado») | Sí |
| Matriz de tiempos y distancias hasta las entidades de una capa | No | Sí |
Con motor, una isócrona por carretera de, por ejemplo, 20 y 40 minutos desde una tienda dibuja las dos bandas, y su matriz dice cuánto se tarda y cuánto se recorre hasta cada municipio de la capa elegida que cae en la banda mayor (como mucho 500, de la más cercana en línea recta a la más lejana). Los usuarios lo usan desde el visor de mapas (ver Mapas).
Los fallos del motor no interrumpen el mapa: una isócrona que no se puede calcular queda con su error y lo demás se dibuja.
Elegir un motor#
| Motor | Cuándo |
|---|---|
| Valhalla | Autoalojado, junto a ECenter. Es el que se recomienda: las coordenadas no salen de su red. deploy/compose.yaml lo trae como servicio opcional. |
| OpenRouteService | Su servicio en la nube, con una clave y unos límites diarios, o autoalojado. Con el servicio en la nube, las coordenadas de los orígenes y los destinos salen a él. Su matriz no calcula las rutas más cortas, solo las más rápidas. |
Valhalla con Docker Compose#
En deploy/.env (con el navegador sin interfaz también, COMPOSE_PROFILES=render,routing):
El perfil routing arranca el servicio valhalla, que solo ve el backend; deploy/compose.yaml ya le dice al backend su dirección (ECENTER_MAPS_ROUTING_URL=http://valhalla:8002).
La primera vez, Valhalla descarga de Geofabrik los extractos de OpenStreetMap de ECENTER_ROUTING_TILE_URLS (por defecto, España con Baleares, Ceuta y Melilla, y Canarias: 1,5 GB) y construye su grafo de carreteras en el volumen routing-data. Mientras tanto, las isócronas por carretera fallan con su error y lo demás funciona. Después arranca de lo guardado, en segundos.
Lo que costó en un equipo de desarrollo (Docker con 2 CPU y 7,8 GB):
| España y Canarias | Comunidad de Madrid | |
|---|---|---|
| Construir el grafo, con la descarga | 24 min | 1,5 min |
| Memoria al construirlo | 4,6 GB | 0,7 GB |
| Memoria en marcha | 250 MB | 250 MB |
| Disco | 5,8 GB | 0,5 GB |
| Variable | Por defecto | Qué es |
|---|---|---|
ECENTER_ROUTING_TILE_URLS |
España y Canarias de Geofabrik | Los extractos que se descargan, separados por espacios: un país, una comunidad o varias. |
ECENTER_ROUTING_MEMORY |
6g |
El límite de memoria del contenedor. Tiene que cubrir la construcción del grafo. |
ECENTER_ROUTING_THREADS |
2 |
Hilos de Valhalla. Con más se construye antes y se gasta más memoria. |
Para otra zona, o para poner al día las carreteras (Geofabrik publica a diario), borre el volumen y vuelva a arrancar:
docker compose stop valhalla && docker compose rm -f valhalla
docker volume rm ecenter_routing-data
docker compose up -d valhalla
Valhalla no calcula isócronas de más de 120 minutos ni rutas de más de 400 km en una matriz (sus límites de servicio): la isócrona lo dice en su error. Una matriz de 500 destinos son 500 pares origen-destino, dentro del límite de 2500 que trae Valhalla 3.9; con una versión antigua que limite los destinos de una matriz a 50, súbalo en su configuración o baje ecenter.maps.routing.max-matrix-targets.
OpenRouteService en la nube#
ECENTER_MAPS_ROUTING_PROVIDER=openrouteservice
ECENTER_MAPS_ROUTING_URL=https://api.openrouteservice.org
ECENTER_MAPS_ROUTING_APIKEY=cambie-esta-clave
Su plan gratuito da 500 isócronas y 500 matrices al día. Para un OpenRouteService autoalojado, ponga su dirección en ECENTER_MAPS_ROUTING_URL.
Toda la configuración de los mapas#
| Propiedad | Por defecto | Qué es |
|---|---|---|
ecenter.maps.routing.provider |
none |
none, valhalla u openrouteservice. Variable: ECENTER_MAPS_ROUTING_PROVIDER. |
ecenter.maps.routing.url |
La dirección del servicio. | |
ecenter.maps.routing.api-key |
La clave de OpenRouteService. | |
ecenter.maps.routing.profile |
El de coche | El perfil de las rutas (auto en Valhalla, driving-car en OpenRouteService). |
ecenter.maps.routing.timeout |
30s |
Lo que puede tardar cada llamada al motor. |
ecenter.maps.routing.cache-ttl |
7d |
Lo que se guarda una respuesta del motor: procesar otra vez un mapa no lo vuelve a llamar. |
ecenter.maps.routing.max-matrix-targets |
500 |
Destinos como mucho de una matriz. |
ecenter.maps.max-features |
200000 |
Entidades como mucho de un fichero de capa. |
ecenter.maps.max-dots |
20000 |
Puntos como mucho de una densidad de puntos. |
ecenter.maps.upload-ttl |
24h |
Lo que dura un fichero subido sin crear la capa. |
ecenter.maps.base-map.style |
Un estilo de MapLibre para el mapa base: la URL de un proveedor (por ejemplo, MapTiler) o uno autoalojado (por ejemplo, un .pmtiles de Protomaps). |
|
ecenter.maps.base-map.style-dark |
El estilo para el tema oscuro. Sin él, el tema oscuro usa style. |
|
ecenter.maps.base-map.tiles, tiles-dark |
Teselas ráster (…/{z}/{x}/{y}.png), si no hay estilo, y su variante oscura; sin ella, en oscuro se ven las claras atenuadas. |
|
ecenter.maps.base-map.attribution |
La cita del mapa base, si se usan teselas ráster. | |
ecenter.maps.base-map.max-zoom |
19 |
El zoom máximo de las teselas ráster. |
Sin mapa base, las capas se dibujan sobre un fondo liso del color del tema. Las teselas públicas de OpenStreetMap solo valen para pruebas, por su política de uso.
Un ejemplo de application.yml montado en el backend:
ecenter:
maps:
base-map:
style: https://api.maptiler.com/maps/streets-v2/style.json?key=cambie-esta-clave
style-dark: https://api.maptiler.com/maps/streets-v2-dark/style.json?key=cambie-esta-clave
routing:
provider: valhalla
url: http://valhalla:8002
Nota
Si el mapa base es de otro origen, añada ese origen a ECENTER_CSP_MAP_ORIGINS en el frontal (https://api.maptiler.com), para que la política de contenido de la aplicación lo permita. Ver Instalación.