GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nainstalovat OSRM na Ubuntu 20.04 – Open Source Routing Machine

OSRM (Open Source Routing Machine) je super rychlý směrovací modul pro silniční sítě OpenStreetMap (OSM). V předchozích kurzech jsme vysvětlili proces nastavení samostatně hostovaného dlaždicového serveru OpenStreetMap a jak přidat funkci vyhledávání adres do mapy pomocí Nominatim. Tento tutoriál vám ukáže, jak přidat navigační funkce do vaší OpenStreetMap s OSRM, která poskytuje trasování aut , trasa na kole a pěší trasa .

Tento tutoriál funguje také na Ubuntu 18.04.

Předpoklady

Abyste mohli postupovat podle tohoto návodu, měli byste mít spuštěný a spuštěný server dlaždic OSM. Pokud ne, postupujte podle níže uvedeného návodu a nastavte si svůj vlastní server dlaždic OSM.

  • Jak nastavit OpenStreetMap Tile Server na Ubuntu 20.04

Měli byste mít také přístup ke službě geokódování, jako je Nominatim pro vyhledávání adres.

  • Nastavit OSM Nominatim Geocoding Server na Ubuntu 20.04

Jakmile jsou požadavky splněny, postupujte podle pokynů níže a nastavte server OSRM.

Krok 1:Sestavte OSRM ze zdroje

Nainstalujte balíčky závislostí.

sudo apt update

sudo apt install build-essential git cmake pkg-config doxygen libboost-all-dev libtbb-dev lua5.2 liblua5.2-dev libluabind-dev libstxxl-dev libstxxl1v5 libxml2 libxml2-dev libosmpbf-dev libbz2-dev libzip-dev libprotobuf-dev

Vytvořte osrm uživatel. (Pro tohoto uživatele není třeba vytvářet heslo.)

sudo useradd -d /srv/osrm -s /bin/bash -m osrm

Udělte oprávnění svému vlastnímu uživatelskému účtu.

sudo apt install acl

sudo setfacl -R -m u:username:rwx /srv/osrm/

Změňte na /srv/osrm/ adresář.

cd /srv/osrm/

Stáhněte si zdrojový kód OSRM z jeho úložiště Github.

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

Vytvořte build adresář.

mkdir build

Přejděte do tohoto adresáře a nakonfigurujte prostředí sestavení.

cd build

cmake /srv/osrm/osrm-backend/

Zkompilujte zdrojový kód.

make

Nainstalujte binární soubory.

sudo make install

Budou nainstalovány následující binární soubory.

  • /usr/local/bin/osrm-extract:
  • /usr/local/bin/osrm-partition:
  • /usr/local/bin/osrm-customize:
  • /usr/local/bin/osrm-contract:
  • /usr/local/bin/osrm-datastore:
  • /usr/local/bin/osrm-routed:

Krok 2:Instalace obrazovky GNU

V dalším kroku budeme muset z OpenStreetMap extrahovat silniční sítě, což může trvat dlouho. Váš počítač může být odpojený od internetu, proto se doporučuje použít nástroj GNU Screen, abyste udrželi relaci naživu. Obrazovka instalace na serveru Ubuntu 20.04:

sudo apt install screen

Poté úvodní obrazovka:

screen

Při prvním spuštění se zobrazí úvodní text, stačí stisknout Enter do konce. Poté budete moci spouštět příkazy jako obvykle.

Krok 3:Vygenerujte směrovací data OSRM

Nyní musíme stáhnout data OpenStreetMap a učinit je použitelnými pro směrování. Spusťte následující příkaz ke stažení mapových dat celé planety (56G) ve formátu PBF (ProtoBufBinary).

wget -c http://planet.openstreetmap.org/pbf/planet-latest.osm.pbf -P /srv/osrm/osrm-backend

Pokud chcete mapu jednotlivé země/státu/provincie/města, přejděte na http://download.geofabrik.de. Například stáhněte mapová data Velké Británie (1,2G) pomocí následujícího příkazu.

wget -c http://download.geofabrik.de/europe/great-britain-latest.osm.pbf -P /srv/osrm/osrm-backend

BBBike.org také poskytuje výňatky z více než 200 měst a regionů po celém světě v různých formátech.

Ujistěte se, že jste v /srv/osrm/osrm-backend/ adresář.

cd /srv/osrm/osrm-backend/

Extrahujte graf z dat OpenStreetMap.

osrm-extract britain-and-ireland-latest.osm.pbf --threads=10

Ve výchozím nastavení bude používat car.lua profilu.

Nyní pravděpodobně nemusíte na svém serveru dělat další věci. Protože používáte obrazovku, můžete stisknout Ctrl+A , uvolněte tyto klávesy a poté stiskněte D tlačítko pro odpojení od aktuální relace obrazovky. Zobrazí se zpráva jako níže.

[detached from 32113.pts-1.focal]

To mi říká, že předchozí ID relace obrazovky je 32113. Můžete se odhlásit z relace SSH a dokonce vypnout počítač. Nebojte se, osrm-extract proces stále běží. Když se potřebujete vrátit a zkontrolovat průběh, SSH na váš server a spuštěním následujícího příkazu získáte předchozí ID relace obrazovky.

screen -ls

Ukázkový výstup:

There is a screen on:
	32113.pts-1.focal	(05/19/2020 03:45:29 PM)	(Detached)
1 Socket in /run/screen/S-linuxbabe.

Poté se můžete znovu připojit k předchozí relaci obrazovky.

screen -r 32113

Tento proces je náročný na paměť. (Na mém serveru používá 7 GB RAM.) Po dokončení bude soubor se stejným názvem, ale s .osrm rozšíření. Spusťte následující příkaz k rozdělení tohoto grafu rekurzivně do buněk

osrm-partition britain-and-ireland-latest.osrm

Přizpůsobte buňky výpočtem směrovacích vah pro všechny buňky.

osrm-customize britain-and-ireland-latest.osrm

Nyní můžete spustit směrovací modul.

osrm-routed --algorithm=MLD britain-and-ireland-latest.osrm

Jak vidíte, naslouchá na TCP portu 5000.

Krok 4:Vytvoření služby systemd

Směrovací modul OSRM můžeme spustit ručně pomocí osrm-routed --algorithm=MLD britain-and-ireland-latest.osrm , ale je pohodlnější spouštět osrm-routed jako službu systemd na pozadí. Stiskněte Ctrl+C zastavte aktuální proces směrovaný osrm a pomocí následujícího příkazu vytvořte soubor servisní jednotky systemd pro směrování osrm.

sudo nano /etc/systemd/system/osrm-routed.service

Vložte do souboru následující řádky.

[Unit]
Description=Open Source Routing Machine
Wants=network-online.target
After=network.target network-online.target

[Service]
ExecStart=/usr/local/bin/osrm-routed --algorithm=MLD /srv/osrm/osrm-backend/britain-and-ireland-latest.osrm
User=osrm
Group=osrm
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target

Uložte a zavřete soubor. Změňte vlastnictví /srv/osrm/osrm-backend/ adresář.

sudo chown osrm:osrm /srv/osrm/osrm-backend/ -R

Nyní můžeme spustit a povolit osrm-routed systemd service.

sudo systemctl start osrm-routed

sudo systemctl enable osrm-routed

Zkontrolujte stav.

systemctl status osrm-routed

Pokud osrm-routed služba není aktivní (běží), můžete spustit následující příkaz a zjistit, co je špatně.

sudo journalctl -eu osrm-routed

Krok 5:Konfigurace webového serveru Apache

Webový server Apache můžeme nakonfigurovat jako reverzní proxy pro osrm-routed službu, takže můžeme použít název domény pro přístup ke směrovací službě a také povolit šifrování HTTPS.

Nainstalujte webový server Apache.

sudo apt install apache2

Chcete-li používat Apache jako reverzní proxy, musíme povolit proxy , proxy_http a rewrite modul.

sudo a2enmod proxy proxy_http rewrite

Poté vytvořte soubor virtuálního hostitele pro OSRM.

sudo nano /etc/apache2/sites-available/osrm.conf

Přidejte do souboru následující texty. Nahraďte osrm.your-domain.com s vaším skutečným názvem domény a nezapomeňte pro něj vytvořit záznam DNS A.

<VirtualHost *:80>
    ServerName osrm.your-domain.com

    ProxyPass / http://127.0.0.1:5000/
    ProxyPassReverse / http://127.0.0.1:5000/
</VirtualHost>

Uložte a zavřete soubor. Poté povolte tohoto virtuálního hostitele.

sudo a2ensite osrm.conf

Znovu načtěte Apache, aby se změny projevily.

sudo systemctl reload apache2

Nyní můžete vzdáleně přistupovat k OSRM zadáním názvu domény (osrm.your-domain.com ) v adresním řádku prohlížeče.

Krok 6:Povolte HTTPS

HTTPS můžeme povolit instalací bezplatného certifikátu TLS vydaného od Let’s Encrypt. V tutoriálu nastavení dlaždicového serveru OSM jsme již nainstalovali klienta Let’s Encrypt (certbot) z úložiště Snap. K získání a instalaci certifikátu TLS tedy stačí spustit následující příkaz.

sudo /snap/bin/certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d osrm.your-domain.com

Kde:

  • --apache :Použijte plugin Apache.
  • --agree-tos :Souhlas se smluvními podmínkami.
  • --redirect :Vynutit HTTPS přesměrováním 301.
  • --hsts :Přidejte hlavičku Strict-Transport-Security do každé odpovědi HTTP. Vynucení prohlížeče, aby pro doménu vždy používal TLS. Chrání před odstraněním SSL/TLS.
  • --staple-ocsp :Umožňuje sešívání OCSP. Platná odpověď OCSP je přišita k certifikátu, který server nabízí během TLS.

Certifikát by nyní měl být získán a automaticky nainstalován. A budete mít přístup k webovému rozhraní Webmin přes zabezpečené připojení HTTPS.

Krok 7:Integrujte OSRM s kluzkou mapou

Předpokládám, že vaše kluzká mapa je zobrazena pomocí knihovny Leaflet JavaScript a že jste do své kluzké mapy přidali službu geokódování Nominatim.

Pro integraci OSRM s kluzkou mapou můžeme použít plugin s názvem Leaflet Routing Machine. Nejprve do své kluzké mapy zahrňte JavaScript a soubor CSS pro stroj pro směrování letáků. Všimněte si, že by měly být umístěny za hlavním JavaScriptem letáku a JavaScriptem Geocoderu kontroly letáku.

<html>
  <head>
     ....
     ....
     <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet-routing-machine.css" />
     <script src="https://unpkg.com/[email protected]/dist/leaflet-routing-machine.js"></script>
 </head>
 <body>
 ....
 ....
 </body>
</html>

Dále přidejte následující řádky do <script>...</script> úryvek v těle HTML.

     L.Routing.control({
         serviceUrl: 'https://osrm.your-domain.com/route/v1',
         geocoder: L.Control.Geocoder.nominatim({serviceUrl:'https://tile.your-domain.com/nominatim/'}),
         routeWhileDragging: true
       }).addTo(map);

Takhle:

<html>
  <head>
     ....
     ....
     <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet-routing-machine.css" />
     <script src="https://unpkg.com/[email protected]/dist/leaflet-routing-machine.js"></script>
 </head>
 <body>
   <div id="map"></div>
     <script>
     ....
     ....


     L.Routing.control({
         serviceUrl: 'https://osrm.your-domain.com/route/v1',
         geocoder: L.Control.Geocoder.nominatim({serviceUrl:'https://tile.your-domain.com/nominatim/'}),
         routeWhileDragging: true
       }).addTo(map);

    </script>

  </body> 
</html>

Uložte a zavřete soubor. Poté znovu načtěte mapu do webového prohlížeče, v pravém horním rohu byste měli vidět ovládací panel, kde můžete zadat počáteční a cílovou adresu.

Trasové body můžete přetáhnout na mapu a OSRM automaticky přepočítá trasu.


Ubuntu
  1. Jak nainstalovat Open Real Estate na Ubuntu 16.04

  2. Jak nainstalovat TensorFlow “Machine Learning” na Ubuntu 21.04

  3. Jak nainstalovat Ubuntu na bezhlavý počítač?

  1. Jak nainstalovat R na Ubuntu 20.04

  2. Jak nainstalovat Go na Ubuntu 18.04

  3. Instalace Ubuntu | Jak nainstalovat Ubuntu 11.10 (Oneiric Ocelot)?

  1. Jak nainstalovat R na Ubuntu 18.04

  2. Jak nainstalovat Open Source Social Network (OSSN) na Ubuntu 18.04 LTS

  3. Jak nainstalovat Open Visual Traceroute na Ubuntu 16.04