[DOCKER] J'ai essayé d'exécuter facilement le moteur de recherche d'itinéraire (OSRM) avec un conteneur

Contexte

Encore une fois, j'ai trouvé très utile d'utiliser Docker (conteneur), j'ai donc décidé d'organiser le cas sous forme de mémorandum.

Qu'est-ce que tu voulais faire en premier lieu

Je voulais facilement utiliser ** OSRM (Open Source Routing Machine) **, un moteur de recherche d'itinéraire qui utilise ** OpenStreetMap (OSM) **, mais il semble que la construction de l'environnement soit gênante, donc je ne peux rien faire. J'enquêtais.

Quoi, l'environnement déjà construit a été fourni sous forme d'image Docker

Dans Project-OSRM / osrm-backend, il y avait la description suivante.

The easiest and quickest way to setup your own routing engine is to use Docker images we provide.

De plus, simplement en exécutant la commande suivante, l'image du conteneur est acquise (téléchargée) à partir de dockerhub, et un conteneur (en tant que moteur de recherche d'itinéraire) est créé et démarré à partir de cette image.

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

Dans cet exemple, ** osrm / osrm-backend ** est l'image du conteneur et ** osrm-routed ** est la commande à exécuter à l'intérieur du conteneur.

Cependant, les travaux suivants sont nécessaires à l'avance pour cette exécution. Parmi eux, le traitement de formatage et d'optimisation suivant est exécuté en démarrant un nouveau conteneur à partir d'osrm / osrm-backend (en démarrant la commande pour ce traitement en tant que conteneur).

--Téléchargez la carte (OSM) utilisée par OSRM

À l'origine, il est dit que la procédure suivante nécessite un traitement sauf ** 2. 6. 7. **, vous pouvez donc voir que vous pouvez l'essayer plus rapidement et de manière plus fiable en utilisant Docker.

  1. Mise à jour et sécurité
  2. ** Télécharger l'exportation de la carte **
  3. Installation des dépendances
  4. Compilez OSRM
  5. Configuration STXXL
  6. ** Extraction de carte **
  7. ** Calcul du temps de trajet **
  8. Exécution et test des services Web
  9. Configuration de Nginx
  10. Installation et configuration du superviseur

Ainsi, j'ai pu reconfirmer qu'il est très facile de créer un environnement d'exécution en utilisant une image de conteneur.

Pour référence, j'ai exécuté la commande suivante sur le moteur de recherche d'itinéraire lancé ci-dessus pour obtenir les informations d'itinéraire (format JSON).

Dans cet exemple, afin d'obtenir l'itinéraire à pied de Kita Kamakura à Kamakura Daibutsu, chaque information de position est envoyée au moteur de recherche en tant que paramètre.

curl --noproxy 127.0.0.1 'http://127.0.0.1:5000/route/v1/walking/139.545056,35.337103;139.535689,35.316696?alternatives=3&geometries=geojson' | jq 'def hexdec(i): "0123456789abcdef"[i:i+1]; {"type": "FeatureCollection", "features": [[.routes[].geometry] | [., keys] | transpose[] | {"geometry": .[0], "type": "Feature", "properties": {"stroke-width": 2, "stroke": ("#" + hexdec(15-.[1]*2) + hexdec(.[1]*2) + hexdec(.[1]*2))}}]}' > routes_kamakura.json

Ensuite, lorsque le fichier au format Json acquis est chargé sur ** geojson.io **, il y a plusieurs parcours de marche de Kita Kamakura à Kamakura Daibutsu comme indiqué ci-dessous. J'ai la route. (Ceci est un article séparé que je voudrais organiser)

kamakura.PNG

Recommended Posts

J'ai essayé d'exécuter facilement le moteur de recherche d'itinéraire (OSRM) avec un conteneur
J'ai essayé d'exécuter une application d'échange de cartes de crédit avec Corda 1
J'ai essayé de jouer un peu avec BottomNavigationView ①
Exécutez DMN à l'aide du moteur Camunda DMN
[API] J'ai essayé d'utiliser l'API de recherche par code postal
J'ai essayé de casser le bloc avec java (1)
J'ai essayé d'exécuter Java dans un terminal Mac
J'ai essayé OCR de traiter un fichier PDF avec Java
J'ai essayé de créer un environnement de développement java8 avec Chocolatey
J'ai essayé d'utiliser le référentiel GitHub comme serveur de bibliothèque
J'ai essayé de moderniser une application Java EE avec OpenShift.
J'ai essayé d'augmenter la vitesse de traitement avec l'ingénierie spirituelle
[Rails] J'ai essayé de créer une mini application avec FullCalendar
J'ai essayé JAX-RS et pris note de la procédure
[Docker] Supprimer uniquement le volume associé à un conteneur spécifique
J'ai essayé de créer un environnement de développement padrino avec Docker
J'ai essayé OCR de traiter un fichier PDF avec Java part2
J'ai essayé d'utiliser la bibliothèque CameraX avec Android Java Fragment
J'ai essayé d'exprimer les résultats avant et après de la classe Date avec une ligne droite numérique
J'ai essayé DI avec Ruby
J'ai essayé le problème FizzBuzz
J'ai essayé UPSERT avec PostgreSQL.
J'ai essayé BIND avec Docker
J'ai essayé d'imprimer un formulaire avec Spring MVC et Jasper Reports 1/3 (paramètres Jasper Reports)
J'ai essayé de résoudre le problème de la "sélection multi-étapes" avec Ruby
J'ai essayé d'imprimer un formulaire avec Spring MVC et Jasper Reports 3/3 (contrôle Spring MVC)
J'ai essayé d'illuminer le sapin de Noël dans un jeu de la vie
J'ai essayé de créer un environnement de serveur UML Plant avec Docker
J'ai essayé d'implémenter la fonction de prévisualisation d'image avec Rails / jQuery
J'ai essayé d'utiliser la fonction de cache d'Application Container Cloud Service
J'ai créé un formulaire de recherche simple avec Spring Boot + GitHub Search API.
J'ai jeté un coup d'œil aux ressources d'Azure Container Instance
J'ai essayé de vérifier le fonctionnement du serveur gRPC avec grpcurl
[Java] J'ai essayé de faire un labyrinthe par la méthode de creusage ♪
J'ai essayé de créer une fonction de groupe (babillard) avec Rails