A algum tempo atras, precisei implementar uma ferramenta para gerar rotas rodoviárias entre 2 pontos de interesse.
Em um primeiro momento, pensei no Google Maps API, mas este é um serviço pago e então procurei alternativas OPEN SOURCE que atencessem a necessidade e foi aí que conheci o Valhalla.
O que é o Valhalla?
O Valhalla é um mecanismo de roteamento OPEN SOURCE.
O que ele nos permite:
- Geração de rotas em varias modalidades:
- Auto;
- pedestrian;
- truck;
- etc;
- Geração de rotas evitando determinados caminhos;
- Utilização direta no QGIS com o uso de pluguin;
- Utilização no LeafletJS para uma interface interativa em mapa.
Uma demo da API em funcionamento pode ser vista na pagina DEMO
a documentação completa da API pode ser vista em Documentação
Abaixo um exemplo de docker-compose para a implementação de um servidor de maneira rápida.
Lembrando que na primeira execução, o processo é bem demorado pois ele irá baixar o mapa de rodovias e preparar os dados para entao deixar a API funcional.
version: '3'
services:
valhalla:
image: ghcr.io/gis-ops/docker-valhalla/valhalla:3.4.0
environment:
- tile_urls=https://download.geofabrik.de/south-america/brazil-latest.osm.pbf
- use_tiles_ignore_pbf=True
- force_rebuild=False
- force_rebuild_elevation=False
ports:
- 8002:8002
volumes:
- /opt/valhalla/custom_files/:/custom_files
restart: always
abaixo um exemplo de estruturação da chamada com os parametros que utilizo.
$queryParams = ['json' => json_encode([
'locations' => [
['lat' => $lat_a, 'lon' => $long_a],
['lat' => $lat_b, 'lon' => $long_b]
],
'costing' => 'pedestrian',
'narrative' => false,
'id' => 'my_second_route',
//'avoid_locations' => $shapeToIgnore,//para rotas alternativas
'directions_options' => [
'units' => 'meters',
'language' => 'pt-BR'
],
])];
$response = Http::get('http://1.2.3.4:8002/route', $queryParams);
Top comments (0)