martes, 12 de marzo de 2019

Instalar OSRM

OSRM

Open source route machine, este programa permite usarse como servidor para poder saber direcciones entre 2 o mas ubicaciones , similar a lo que hace el api de directions de google

LOCAL

Requerimientos:

  • linux (Ubuntu)
  • cmake
  • git
  • librerías básicas
  • 8GB de RAM
Proceso:
  1. Instalar las librerias
    -> sudo apt install build-essential pkg-config \libbz2-dev libxml2-dev libzip-dev libboost-all-dev \lua5.2 liblua5.2-dev libtbb-dev
  2. Clonar el repositorio de osrm-backend
    -> git clone https://github.com/Project-OSRM/osrm-backend.git && cd osrm-backend
  3. Instalacion:
    -> mkdir -p build
    -> cd build
    -> cmake ..
    -> cmake --build .
    -> sudo cmake --build . --target install
  4. Descargar el archivo .pbf que se utilizara
    http://download.geofabrik.de/
  5. Extraer el archivo pbf
    -> osrm-extract -p /usr/local/share/osrm/profiles/<car,foot>.lua /ruta/al/pbf
    -> osrm-partition /ruta/al/osrm
    -> osrm-customize /ruta/al/osrm
  6. Iniciar servidor
    -> osrm-routed --algotithm mld /ruta/al/osrm
DOCKER

Requerimientos:

  • 8GB de RAM exclusiva para el docker
  • Docker
Archivos:
docker-compose.yml
version: "3"

services:
server:
build: .
container_name: osrm
stdin_open: true
tty: true
ports:
- "8200:5000"
command: bash -c "osrm-routed --algorithm mld florida-latest.osrm"

Dockerfile
FROM osrm/osrm-backend
ADD . /opt/data
WORKDIR /opt/data
RUN apt-get update && apt-get install -y wget && wget http://download.geofabrik.de/north-america/us/florida-latest.osm.pbf &&
osrm-extract florida-latest.osm.pbf -p /opt/car.lua &&
osrm-partition florida-latest.osrm && osrm-customize florida-latest.osrm
EXPOSE 8200

Proceso:

  1. Utilizar el docker-compose
    -> docker-compose up

HEROKU

Para montar OSRM en heroku, es mejor tener los archivos ya extraídos debido a que realizar el proceso de extracción la maquina requiere de 8GB de RAM.

Requerimientos:
  • herokuCli
  • archivos osrm
Archivos:
Dockerfile
FROM osrm/osrm-backend
ADD . /opt/data
WORKDIR /opt/data
CMD osrm-routed --algorithm mld colombia-latest.osrm --port $PORT
Proceso:
  1. En la carpeta donde tenemos los archivos osrm.
    -> heroku container:login
  2. Si aun no tienes creado el proyecto en heroku
    -> heroku create <nombre>
  3. Hacer el push de la imagen que se genere (esto puede tardar)
  4. -> heroku container:push web -a <nombre>
  5. Hacer el release del container
    -> heroku container:release web -a <nombre>
Ya una vez hecho esto el servidor quedara funcionando para su uso.