Giter VIP home page Giter VIP logo

osrm_recicleusp's Introduction

Projeto Recicla++

Repositórios

Página do projeto

  • Doador - Repositório do aplicativo do doador.
  • Coletor - Repositório do aplicativo do coletor.
  • Admistrativo - Repositório do site de administração.
  • Servidor de rotas - Repositório das instruções para a configuração do servidor de rotas.

Configuração do servidor de rotas

O Open Source Rounting Machine - OSRM, disponível em http://project-osrm.org/, é uma ferramenta de otimização de rotas. Diferente da maioria dos servidores de roteamento, o OSRM não usa uma variante A* para calcular o caminho mais curto, mas usa hierarquias de contração ou Dijkstra multinível [1]. Resultando em respostas rápidas e tornando o OSRM um bom candidato para aplicações que precisam de roteamento. Suas principais caracteríscas são:

  • Roteamento muito rápido
  • Altamente portátil
  • O formato de dados simples facilita a importação de conjuntos de dados personalizados em vez de dados do OpenStreetMap ou importação de dados de tráfego
  • Perfis de roteamento flexíveis (por exemplo, para diferentes modos de transporte)
  • Respeita as restrições de curva, incluindo restrições condicionais baseadas em tempo
  • Respeita as faixas de conversão
  • Instruções passo a passo localizadas fornecidas por instruções de texto OSRM

É disponibilizado atráves de imagem Docker, facilitando a configuração do servidor de roteamento. A seguir serão apresentados os passos utilizados para configurar o servidor utilizado no projeto.

Passo a passo

Instalação do Docker

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Testando o docker

sudo docker run hello-world

No terminal ocorrerá a saída abaixo. Caso contrário, favor consultar o matérial https://docs.docker.com/engine/install/ubuntu/

image

OSRM

Inicialmente, instala-se as dependências do projeto

sudo apt install build-essential git cmake pkg-config \
libbz2-dev libxml2-dev libzip-dev libboost-all-dev \
lua5.2 liblua5.2-dev libtbb-dev

Em seguida, cria-se uma pasta para receber o repositório

sudo mkdir -p /srv/osrm
cd /srv/osrm

Clona-se o repositório do backend do projeto OSRM

sudo git clone https://github.com/Project-OSRM/osrm-backend.git

Cria-se o diretório para a compilação do projeto

mkdir /srv/osrm/osrm-backend/build

Compila-se o projeto

cd /srv/osrm/osrm-backend/build
sudo cmake ..
sudo cmake --build .
sudo cmake --build . --target install

O próximo passo é baixar o mapa da região, nesse caso, utilizamos os dados dos estados da região sudeste. Para outras regiões do país, os dados estão disponíveis em http://download.geofabrik.de/south-america/brazil.html

cd /srv/osrm/osrm-backend/
sudo wget http://download.geofabrik.de/south-america/brazil/sudeste-latest.osm.pbf
sudo docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-extract -p /opt/car.lua /data/sudeste-latest.osm.pbf
sudo docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-partition /data/sudeste-latest.osrm
sudo docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-customize /data/sudeste-latest.osrm

Finalmente, os dados do mapa são adicionados ao container docker.

sudo docker run -t -i -p 5000:5000 -v "${PWD}:/data" osrm/osrm-backend osrm-routed --algorithm mld /data/sudeste-latest.osrm

Para testar a aplicação, realiza-se uma consulta de rota.

curl "http://127.0.0.1:5000/route/v1/driving/-22.01353404635547,-47.88069891161758;-22.01841397120339,-47.88327352469903?steps=true"

Vídeo tutorial

https://www.youtube.com/watch?v=8xyJPIFywxs

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.