#graphhopper — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #graphhopper, aggregated by home.social.
-
Self-Hosted Google Maps egy Raspberry Pi-n
Mindig is lenyűgözött az a gondolat, hogy a saját négy falunk között is fusson egy olyan térkép szolgáltatás, ami nem függ az internetkapcsolattól. Egy olyan „Google Maps”, ami a saját gépemen fut, a saját adataimat használja, és akkor is működik, ha épp nincs net. Az inspiration a N.O.M.A.D. (Network of Offline Mapping and Discovery) projektből jött, akik egy teljes offline szolgáltatás stack-et álmodtak meg. Az ő nyomdokaikon haladva építettem meg a saját verziómat, ami egy Raspberry Pi-n fut, Docker konténerekben, és teljes Magyarországot lefedi.
A hardver – Mi ez a gép?
A szolgáltatás a
1. ábra: A Raspberry Pi NVMe HAT-tal és SSD-vel. A képen a Raspberry Pi 5, a ráhelyezett M.2 HAT+ és az NVMe SSD látható.xorp-archive.xorp.hunevű gépemen fut, ami nem egy átlagos Raspberry Pi. Egy Raspberry Pi ARM64 architektúrájú eszköz, 8 GB RAM-mal, NVMe HAT kiegészítővel és egy 1 TB-os Crucial CT1000E100SSD8 NVMe SSD-vel. Ez nem a régi SD kártyás megoldás – az NVMe sebessége és megbízhatósága nélkülözhetetlen egy ilyen adatigényes stack működtetéséhez. A gép Ubuntu 24.04 LTS-t futtat, a kernel pedig a Raspberry Pi-hez optimalizált 6.8.0-1057-raspi.Az ötlet – Miért építsünk offline térképet?
A válasz egyszerű: szabadság. Amikor nincs internet, vagy korlátozott a sávszélesség, a legtöbb térkép szolgáltatás használhatatlanná válik. Gondoljunk csak egy kirándulásra a Pilisbe, egy külföldi utazásra roaming nélkül, vagy épp egy olyan helyzetre, ahol az adatvédelem miatt nem szeretnénk külső szolgáltatókra bízni magunkat. Egy offline térkép ezekre mind megoldást nyújt.
A stack négy fő komponensből áll, amelyek Docker konténerekben futnak:
- OSM Tile Server – a térkép csempék (tile-ok) kiszolgálása
- Photon – címkeresés, geokódolás
- GraphHopper – útvonaltervezés (autó, bicikli, gyalogos)
- GraphHopper PT – tömegközlekedési útvonaltervezés (MÁV, Volánbusz, BKK)
- MapLibre GL UI – a webes felület, ami összefogja az egészet
Az architektúra áttekintése
Minden kérés egyetlen belépési ponton, a map-ui konténeren keresztül történik, ami egy Nginx reverse proxyként szolgál. Ez nemcsak egyszerűbbé teszi a konfigurációt, hanem kiküszöböli a CORS problémákat is, hiszen a böngésző számára minden kérés ugyanarról az origin-ről érkezik.
Böngésző → port 8090 └── Nginx (map-ui konténer) ├── /tile/{z}/{x}/{y}.png → OSM (8081) ├── /photon/api → Photon (2322) ├── /graphhopper/route → GraphHopper (8989) └── /graphhopper-pt/route → GraphHopper PT (8989)A Docker Compose – Minden együtt
A teljes stack egyetlen
docker-compose-osm-extended.ymlfájlban van definiálva. Lássuk a lényeget (az IP címeket és elérési utakat természetesen megváltoztattam a valóságban):services: osm-import: image: overv/openstreetmap-tile-server container_name: osm-import command: import shm_size: 1gb environment: THREADS: 4 UPDATES: enabled volumes: - /home/osm/data/hungary-latest.osm.pbf:/data/region.osm.pbf - /home/osm/data/hungary.poly:/data/region.poly - osm-db:/data/database - osm-tiles:/data/tiles osm: image: overv/openstreetmap-tile-server container_name: osm command: run shm_size: 1gb ports: - 8081:80 environment: UPDATES: enabled THREADS: 4 REPLICATION_URL: https://planet.openstreetmap.org/replication/minute/ volumes: - osm-db:/data/database - osm-tiles:/data/tiles photon: image: local/photon:1.1.0 container_name: photon command: ["-listen-ip", "0.0.0.0", "-cors-any"] ports: - 2322:2322 volumes: - /home/osm/photon:/data/photon graphhopper: image: local/graphhopper:9.1 container_name: graphhopper ports: - 8989:8989 volumes: - /home/osm/graphhopper:/data - /home/osm/data/hungary-latest.osm.pbf:/data/region.osm.pbf graphhopper-pt: image: local/graphhopper:9.1 container_name: graphhopper-pt ports: - 8991:8989 volumes: - /home/osm/graphhopper-pt:/data - /home/osm/data/hungary-latest.osm.pbf:/data/region.osm.pbf - /home/osm/gtfs:/data/gtfs:ro entrypoint: ["java", "-Xmx6g", "-jar", "/app/graphhopper-web.jar", "server", "/app/config.yml"] map-ui: image: local/osm-ui:1.0 container_name: map-ui ports: - 8090:80 volumes: - /root/osm-ui:/usr/share/nginx/html:ro - /home/osm/map-ui/conf/default.conf:/etc/nginx/conf.d/default.conf:ro1. OpenStreetMap Tile Server – A térkép alapja
Az overv/openstreetmap-tile-server Docker image egy előre összeállított környezet, ami tartalmazza az Apache webszervert, a renderd-et (a csempe renderelő démont), a PostgreSQL-t PostGIS kiegészítővel, és a mod_tile-t, ami a csempe kiszolgálásért felel. Ez a négy komponens együtt teszi lehetővé, hogy a nyers OpenStreetMap adatokból szép, böngészhető térképi csempéket (tile-okat) kapjunk.
Az import folyamat
Minden egy PBF fájllal kezdődik – ez a Protocol Buffer Binary Format, az OpenStreetMap adatok tömörített formátuma. Nekünk a Magyarországra vonatkozó kivonatra van szükségünk, ami a geofabrik.de-ról szerezhető be. Ez a fájl a
/home/osm/data/hungary-latest.osm.pbfelérési úton található.Az import az
osm-importkonténer egyszeri futtatásával történik:# Első importálás (csak egyszer kell) docker compose -f docker-compose-osm-extended.yml run --rm osm-import # Ha frissíteni kell a PBF-et, töröljük a régi adatbázist és újraimportálunk docker compose -f docker-compose-osm-extended.yml down # ... új PBF letöltése ... docker compose -f docker-compose-osm-extended.yml run --rm osm-import docker compose -f docker-compose-osm-extended.yml up -d osmA konténer a
3. ábra: Az OSM tile server folyamatos frissítése – a docker compose logs kimenete mutatja az osm2pgsql importálást és a percenkénti diff letöltést.shm_size: 1gbbeállítással fut, mert az importálás és a renderelés során rengeteg megosztott memóriára van szükség a gyorsítótárazáshoz. Ez egy kritikus beállítás – ha kicsi a shared memory, a renderelés rendkívül lassú lesz.Folyamatos frissítés
A legmenőbb funkció a beépített incrementális frissítés. Az
UPDATES: enabledkörnyezeti változó hatására a konténer percenként letölti a minute diff fájlokat aplanet.openstreetmap.org-ról. Ez azt jelenti, hogy a térképünk gyakorlatilag valós időben frissül – ha valaki módosít egy utat az OSM-ben, az pár percen belül megjelenik a saját szerverünkön is. Természetesen ha nincs internet, a script egyszerűen csendben meghibásodik, és a konténer tovább szolgálja a már meglévő csempéket.2. Photon – Címkeresés geokódolással
A Photon egy nyílt forráskódú geokódoló motor, ami az OpenStreetMap adatokra épül. A mi stackünkben a
local/photon:1.1.0image fut, ami egy Magyarországra szabott adatbázissal dolgozik. Ez nem a teljes világ – csak Magyarország, ami jelentősen csökkenti a keresési időt és a tárhely igényt.A Photon adatbázis frissítése egy
/root/photon-import.shscript segítségével történik, ami hetente egyszer fut (vasárnap 11:30-kor a cron-ban).A script működése:
- Letölti a legújabb Magyarország Photon dump fájlt(zst tömörítésben) a graphhopper.com-ról
- Ellenőrzi a metaadatokat (ETag, last-modified) – ha nem változott, kihagyja a letöltést
- Leállítja a Photon konténert
- Egy ideiglenes Docker konténerben dekompresszálja és importálja az adatbázist
- Frissíti a szimbolikus linket az új import könyvtárra
- Újraindítja a Photon konténert
- Ellenőrzi a szolgáltatás állapotát egy egyszerű API hívással
# A Photon import script lényege (egyszerűsítve): docker run --rm \ --entrypoint sh \ -v /home/osm/photon:/data/photon \ -v /home/osm/photon-dumps:/data/dumps \ local/photon:1.1.0 \ -lc "zstd -d --stdout /data/dumps/photon-dump-hungary.jsonl.zst \ | java -Xms2g -Xmx4g -jar /app/photon.jar import \ -import-file - -data-dir /data/photon/imports/20260603200523" # A szimbolikus link frissítése: ln -sfn /home/osm/photon/imports/20260603200523 /home/osm/photon/photon_dataAz importált adatbázisok verziózott könyvtárakba kerülnek (
4. ábra: Címkeresés a Photon segítségével – „Eger, Dobó tér” keresése és megjelenítése a térképen./home/osm/photon/imports/20260603200523/), így mindig vissza lehet térni egy régebbi verzióhoz, ha valami elromlana. Egy szimbolikus link (photon_data -> imports/20260603200523/) mutat az aktuális verzióra.3. GraphHopper – Útvonaltervezés (autó, bicikli, gyalogos)
A GraphHopper egy nagy teljesítményű, nyílt forráskódú útvonaltervező motor, ami az OpenStreetMap úthálózatára épül. A mi stackünkben a
local/graphhopper:9.1image fut, 4 GB RAM allokációval.A GraphHopper három útvonal profilt támogat:
- car – autós közlekedés, figyelembe veszi az egyirányú utcákat, sebességkorlátozásokat, út típusokat
- bike – biciklis közlekedés, preferálja a kerékpárutakat, kerüli a főútvonalakat
- foot – gyalogos közlekedés, használja a járdákat, gyalogutakat, lépcsőket
A konfiguráció
/home/osm/graphhopper/config.yml-ban található:graphhopper: datareader.file: /data/region.osm.pbf graph.location: /data/graph-cache profiles: - name: car - name: bike - name: foot profiles_ch: - profile: car - profile: bike - profile: foot graph.dataaccess.default_type: RAM_STORE server: application_connectors: - type: http port: 8989 bind_host: 0.0.0.0A Contraction Hierarchies (CH) egy előfeldolgozási technika, ami drámaian felgyorsítja az útvonal keresést. Az autó és bicikli profilokhoz CH-t használunk, ami az első induláskor 5-10 perc előfeldolgozást igényel, de utána a lekérések ezredmásodpercek alatt teljesülnek.
5. ábra: Autós útvonaltervezés a GraphHopper segítségével – Budapestről Debrecenbe (231,5 km, 2 óra 12 perc).4. GraphHopper PT – Tömegközlekedési útvonaltervezés
Ez a stack talán legmenőbb komponense. A GraphHopper PT (Public Transport) egy speciális konfigurációja a GraphHopper-nak, ami nemcsak az OSM úthálózatot, hanem a menetrendi adatokat (GTFS) is felhasználja a tömegközlekedési útvonaltervezéshez.
GTFS adatforrások
Három GTFS adatforrást használunk, amelyek Magyarország teljes tömegközlekedését lefedik:
SzolgáltatóForrásMéretFrissítésMÁV (Magyar Államvasutak)mavcsoport.hu (Basic Auth)~5 MBNapontaVolánbusz (Helyközi buszok)opendata.utas.hu~110 MBNapontaBKK (Budapesti Közlekedési Központ)go.bkk.hu~55 MBHetenteA MÁV regisztrációs kálvária
A MÁV GTFS elérése sajnos nem nyilvános – a mavcsoport.hu/gtfs oldalon kell regisztrálni, ahol egy rövid adatkezelési hozzájárulás után kapunk Basic Auth felhasználónevet és jelszót. A regisztráció egyszerű, de a mai napig nem értem, miért kell ez egy nyílt GTFS adatfolyamhoz – a MÁV indoklása szerint azért, hogy „tudják, hányan és milyen célra használják az adataikat”. Nos, a mi célunk egyértelmű: jobb tömegközlekedési információt adni a felhasználóknak.
A Volánbusz és a BKK szerencsére nyíltan, mindenféle regisztráció nélkül elérhető – köszönet érte!
A GTFS szinkronizáló script
A
/root/gtfs-sync.shscript naponta (hajnali 3:30-kor) letölti mindhárom GTFS fájlt, majd újraindítja agraphhopper-ptkonténert, hogy az új menetrend alapján újraépítse a gráfot. Ez a folyamat 2-5 percet vesz igénybe – ezalatt a tömegközlekedési útvonaltervezés nem elérhető.# A GTFS szinkronizáló script lényege (egyszerűsítve): # MÁV letöltés (Basic Auth-val) curl -sSf -u "user:password" \ -o /home/osm/gtfs/mav_gtfs.zip \ "https://www.mavcsoport.hu/gtfs/gtfsMavMenetrend.zip" # Volánbusz letöltés curl -sSf -o /home/osm/gtfs/volanbusz_gtfs.zip \ "https://opendata.utas.hu/public-gtfs/volanbusz_gtfs.zip" # BKK letöltés curl -sSf -o /home/osm/gtfs/bkk_gtfs.zip \ "https://go.bkk.hu/api/static/v1/public-gtfs/budapest_gtfs.zip" # GraphHopper PT újraindítása az új menetrendek betöltéséhez docker restart graphhopper-ptÉrdekesség, hogy a GraphHopper PT konfigurációja egyszerre három GTFS fájlt is be tud tölteni – a
gtfs.fileparaméterben vesszővel felsorolva:graphhopper: gtfs.file: /data/gtfs/mav_gtfs.zip,/data/gtfs/volanbusz_gtfs.zip,/data/gtfs/bkk_gtfs.zip # ...és az OSM fájl a gyalogos kapcsolatokhozEz azért fontos, mert a tömegközlekedési útvonaltervezésnél nem elég a menetrend – tudni kell, hogyan jutok el a buszmegállóhoz gyalog, amihez pontosan az OSM adataira van szükség.
6. ábra: Tömegközlekedési útvonaltervezés a GraphHopper PT segítségével – Egerből a Budapest-Keleti pályaudvarra, átszállás nélkül, 2 óra 33 perc alatt.5. A Webes Felület – MapLibre GL UI
A felhasználói felület MapLibre GL JS-re épül, ami a Mapbox GL JS nyílt forráskódú továbbfejlesztett változata. A map-ui konténer egy Nginx Alpine image, ami a statikus fájlokat szolgálja ki és proxy-zik a háttérszolgáltatások felé.
Ami különösen fontos: minden JavaScript és CSS fájl lokálisan van tárolva a
/root/osm-ui/vendor/könyvtárban. Nincs CDN függőség, nincs Google Fonts, nincsunpkg– ha elmegy az internet, a felület továbbra is teljesen működőképes marad.A UI funkciói
- Térkép nézet – raszteres csempék MapLibre GL-lel, teljes képernyős interakció
- Keresés – autocomplete címkeresés a Photon segítségével, kattintásra odarepülés
- Útvonaltervezés – A→B útvonal négy módban: autó, bicikli, gyalogos, tömegközlekedés
- Kanyarról-kanyarra navigáció – összecsukható lista az útvonal panelen, bármelyik kanyarra kattintva odarepül a térkép
- Több alternatíva – tömegközlekedésnél több útvonal közül választhatunk indulási/idő szerint
- Járat jelvények – színkódolt jelvények a különböző járatokhoz (busz=kék, villamos=sárga, metró=piros, vasút=lila, stb.)
- Rétegek váltása – OSM (alap) és Műhold (ESRI World Imagery) között
- Offline érzékelés – a műhold réteg automatikusan letiltódik, ha nincs internet
Offline audit – Mi működik internet nélkül?
Ez a projekt egyik legfontosabb szempontja. Lássuk, mi a helyzet:
Teljesen offline (nincs szükség internetre)
- ✅ Térképi csempék – a PostgreSQL adatbázisból renderelve (Magyarország OSM PBF)
- ✅ Címkeresés – Photon a lokális Magyarország dump-ot használja
- ✅ Útvonaltervezés – GraphHopper ugyanazt a lokális PBF-et olvassa
- ✅ Tömegközlekedés – GraphHopper PT a lokálisan szinkronizált GTFS menetrendekkel
- ✅ MapLibre GL JS/CSS –
/root/osm-ui/vendor/könyvtárból (nincs CDN) - ✅ Összes HTML/JS/CSS – nincs külső font, nincs Google Fonts, nincs külső API hívás
- ✅ Nginx proxy – minden upstream cél localhost vagy konténer név
Internetet igényel
- ❌ Műhold réteg (ESRI World Imagery) – opcionális, kikapcsolható
- ❌ OSM tile frissítések – minute diff letöltések (ha elérhető a net, különben csendben hibázik)
- ❌ Photon adatfrissítés – heti dump letöltés graphhopper.com-ról
- ❌ GTFS adatok – napi menetrend letöltés
Üzemeltetés – Cron feladatok
A rendszer üzemeltetése nagyrészt automatizált. Három cron job gondoskodik a frissítésekről:
# Heti Photon adatbázis frissítés (vasárnap 11:30) 30 11 * * 0 /root/photon-import.sh >> /var/log/photon-import.log 2>&1 # Napi GTFS szinkronizáció (hajnali 3:30) 30 3 * * * /root/gtfs-sync.sh >> /var/log/gtfs-sync.log 2>&1Az OSM konténer beépített frissítése percenként fut a konténeren belül, nem cron-on keresztül.
Ismert korlátok
- Hiányzó házszámok a Photon keresésben – a Magyarország Photon dump nem tartalmazza az OSM házszintű címkéit. Ez nem hiba, hanem adatkorlát.
- Street View nem elérhető – nincs gyakorlati, önállóan üzemeltethető alternatíva (a Mapillary internetet igényel, a Google Street View pedig API kulcsot és internetet).
- GraphHopper frissítése kézi – amikor az OSM PBF frissül, a GraphHopper graph cache-t manuálisan kell törölni (vagy újraindítani a konténert).
- Transit gráf újraépítés – GTFS frissítéskor 2-5 percig nem elérhető a tömegközlekedési útvonaltervezés.
- GTFS adatok időszerűsége – a menetrendek olyan frissek, amilyen friss az utolsó szinkronizáció (maximum 24 óra késés).
Zárszó
Ez a projekt számomra a szoftveres szabadság egyik legszebb példája. Egy olcsó, kis fogyasztású Raspberry Pi-n fut egy teljes értékű térkép szolgáltatás, ami semmilyen külső függőséggel nem rendelkezik. A nyílt forráskódú OpenStreetMap közösség munkája, a Photon, a GraphHopper és a MapLibre projectek lehetővé teszik, hogy bárki a saját kezébe vegye a térképezést.
A forráskód és a konfigurációk természetesen elérhetők a saját infrastruktúrámon. Ha bárki szeretne egy hasonló rendszert építeni, a N.O.M.A.D. projekt remek kiindulási alap, és az itt leírt konfigurációk is szabadon felhasználhatók.
Következő lépésként szeretném kiterjeszteni a szolgáltatást Szlovákiára, Romániára, Ausztriára, Szlovéniára és Horvátországra is – a Kárpát-medence teljes lefedésére. Továbbá tervben van egy útnyitás (road closure) támogatás is, ahol a felhasználók jelezhetik az aktuális lezárásokat, tereléseket, ami aztán az összes felhasználó számára megjelenne.
Ha kérdésetek van, vagy kipróbáltátok a megoldást és elakadtatok, nyugodtan szóljatok!
#útvonaltervezés #BKK #Docker #GraphHopper #GTFS #MapLibre #MÁV #offline #OpenStreetMap #OSM #Photon #RaspberryPi #térkép #tömegközlekedés #Volánbusz -
Self-Hosted Google Maps egy Raspberry Pi-n
Mindig is lenyűgözött az a gondolat, hogy a saját négy falunk között is fusson egy olyan térkép szolgáltatás, ami nem függ az internetkapcsolattól. Egy olyan „Google Maps”, ami a saját gépemen fut, a saját adataimat használja, és akkor is működik, ha épp nincs net. Az inspiration a N.O.M.A.D. (Network of Offline Mapping and Discovery) projektből jött, akik egy teljes offline szolgáltatás stack-et álmodtak meg. Az ő nyomdokaikon haladva építettem meg a saját verziómat, ami egy Raspberry Pi-n fut, Docker konténerekben, és teljes Magyarországot lefedi.
A hardver – Mi ez a gép?
A szolgáltatás a
1. ábra: A Raspberry Pi NVMe HAT-tal és SSD-vel. A képen a Raspberry Pi 5, a ráhelyezett M.2 HAT+ és az NVMe SSD látható.xorp-archive.xorp.hunevű gépemen fut, ami nem egy átlagos Raspberry Pi. Egy Raspberry Pi ARM64 architektúrájú eszköz, 8 GB RAM-mal, NVMe HAT kiegészítővel és egy 1 TB-os Crucial CT1000E100SSD8 NVMe SSD-vel. Ez nem a régi SD kártyás megoldás – az NVMe sebessége és megbízhatósága nélkülözhetetlen egy ilyen adatigényes stack működtetéséhez. A gép Ubuntu 24.04 LTS-t futtat, a kernel pedig a Raspberry Pi-hez optimalizált 6.8.0-1057-raspi.Az ötlet – Miért építsünk offline térképet?
A válasz egyszerű: szabadság. Amikor nincs internet, vagy korlátozott a sávszélesség, a legtöbb térkép szolgáltatás használhatatlanná válik. Gondoljunk csak egy kirándulásra a Pilisbe, egy külföldi utazásra roaming nélkül, vagy épp egy olyan helyzetre, ahol az adatvédelem miatt nem szeretnénk külső szolgáltatókra bízni magunkat. Egy offline térkép ezekre mind megoldást nyújt.
A stack négy fő komponensből áll, amelyek Docker konténerekben futnak:
- OSM Tile Server – a térkép csempék (tile-ok) kiszolgálása
- Photon – címkeresés, geokódolás
- GraphHopper – útvonaltervezés (autó, bicikli, gyalogos)
- GraphHopper PT – tömegközlekedési útvonaltervezés (MÁV, Volánbusz, BKK)
- MapLibre GL UI – a webes felület, ami összefogja az egészet
Az architektúra áttekintése
Minden kérés egyetlen belépési ponton, a map-ui konténeren keresztül történik, ami egy Nginx reverse proxyként szolgál. Ez nemcsak egyszerűbbé teszi a konfigurációt, hanem kiküszöböli a CORS problémákat is, hiszen a böngésző számára minden kérés ugyanarról az origin-ről érkezik.
Böngésző → port 8090 └── Nginx (map-ui konténer) ├── /tile/{z}/{x}/{y}.png → OSM (8081) ├── /photon/api → Photon (2322) ├── /graphhopper/route → GraphHopper (8989) └── /graphhopper-pt/route → GraphHopper PT (8989)A Docker Compose – Minden együtt
A teljes stack egyetlen
docker-compose-osm-extended.ymlfájlban van definiálva. Lássuk a lényeget (az IP címeket és elérési utakat természetesen megváltoztattam a valóságban):services: osm-import: image: overv/openstreetmap-tile-server container_name: osm-import command: import shm_size: 1gb environment: THREADS: 4 UPDATES: enabled volumes: - /home/osm/data/hungary-latest.osm.pbf:/data/region.osm.pbf - /home/osm/data/hungary.poly:/data/region.poly - osm-db:/data/database - osm-tiles:/data/tiles osm: image: overv/openstreetmap-tile-server container_name: osm command: run shm_size: 1gb ports: - 8081:80 environment: UPDATES: enabled THREADS: 4 REPLICATION_URL: https://planet.openstreetmap.org/replication/minute/ volumes: - osm-db:/data/database - osm-tiles:/data/tiles photon: image: local/photon:1.1.0 container_name: photon command: ["-listen-ip", "0.0.0.0", "-cors-any"] ports: - 2322:2322 volumes: - /home/osm/photon:/data/photon graphhopper: image: local/graphhopper:9.1 container_name: graphhopper ports: - 8989:8989 volumes: - /home/osm/graphhopper:/data - /home/osm/data/hungary-latest.osm.pbf:/data/region.osm.pbf graphhopper-pt: image: local/graphhopper:9.1 container_name: graphhopper-pt ports: - 8991:8989 volumes: - /home/osm/graphhopper-pt:/data - /home/osm/data/hungary-latest.osm.pbf:/data/region.osm.pbf - /home/osm/gtfs:/data/gtfs:ro entrypoint: ["java", "-Xmx6g", "-jar", "/app/graphhopper-web.jar", "server", "/app/config.yml"] map-ui: image: local/osm-ui:1.0 container_name: map-ui ports: - 8090:80 volumes: - /root/osm-ui:/usr/share/nginx/html:ro - /home/osm/map-ui/conf/default.conf:/etc/nginx/conf.d/default.conf:ro1. OpenStreetMap Tile Server – A térkép alapja
Az overv/openstreetmap-tile-server Docker image egy előre összeállított környezet, ami tartalmazza az Apache webszervert, a renderd-et (a csempe renderelő démont), a PostgreSQL-t PostGIS kiegészítővel, és a mod_tile-t, ami a csempe kiszolgálásért felel. Ez a négy komponens együtt teszi lehetővé, hogy a nyers OpenStreetMap adatokból szép, böngészhető térképi csempéket (tile-okat) kapjunk.
Az import folyamat
Minden egy PBF fájllal kezdődik – ez a Protocol Buffer Binary Format, az OpenStreetMap adatok tömörített formátuma. Nekünk a Magyarországra vonatkozó kivonatra van szükségünk, ami a geofabrik.de-ról szerezhető be. Ez a fájl a
/home/osm/data/hungary-latest.osm.pbfelérési úton található.Az import az
osm-importkonténer egyszeri futtatásával történik:# Első importálás (csak egyszer kell) docker compose -f docker-compose-osm-extended.yml run --rm osm-import # Ha frissíteni kell a PBF-et, töröljük a régi adatbázist és újraimportálunk docker compose -f docker-compose-osm-extended.yml down # ... új PBF letöltése ... docker compose -f docker-compose-osm-extended.yml run --rm osm-import docker compose -f docker-compose-osm-extended.yml up -d osmA konténer a
3. ábra: Az OSM tile server folyamatos frissítése – a docker compose logs kimenete mutatja az osm2pgsql importálást és a percenkénti diff letöltést.shm_size: 1gbbeállítással fut, mert az importálás és a renderelés során rengeteg megosztott memóriára van szükség a gyorsítótárazáshoz. Ez egy kritikus beállítás – ha kicsi a shared memory, a renderelés rendkívül lassú lesz.Folyamatos frissítés
A legmenőbb funkció a beépített incrementális frissítés. Az
UPDATES: enabledkörnyezeti változó hatására a konténer percenként letölti a minute diff fájlokat aplanet.openstreetmap.org-ról. Ez azt jelenti, hogy a térképünk gyakorlatilag valós időben frissül – ha valaki módosít egy utat az OSM-ben, az pár percen belül megjelenik a saját szerverünkön is. Természetesen ha nincs internet, a script egyszerűen csendben meghibásodik, és a konténer tovább szolgálja a már meglévő csempéket.2. Photon – Címkeresés geokódolással
A Photon egy nyílt forráskódú geokódoló motor, ami az OpenStreetMap adatokra épül. A mi stackünkben a
local/photon:1.1.0image fut, ami egy Magyarországra szabott adatbázissal dolgozik. Ez nem a teljes világ – csak Magyarország, ami jelentősen csökkenti a keresési időt és a tárhely igényt.A Photon adatbázis frissítése egy
/root/photon-import.shscript segítségével történik, ami hetente egyszer fut (vasárnap 11:30-kor a cron-ban).A script működése:
- Letölti a legújabb Magyarország Photon dump fájlt(zst tömörítésben) a graphhopper.com-ról
- Ellenőrzi a metaadatokat (ETag, last-modified) – ha nem változott, kihagyja a letöltést
- Leállítja a Photon konténert
- Egy ideiglenes Docker konténerben dekompresszálja és importálja az adatbázist
- Frissíti a szimbolikus linket az új import könyvtárra
- Újraindítja a Photon konténert
- Ellenőrzi a szolgáltatás állapotát egy egyszerű API hívással
# A Photon import script lényege (egyszerűsítve): docker run --rm \ --entrypoint sh \ -v /home/osm/photon:/data/photon \ -v /home/osm/photon-dumps:/data/dumps \ local/photon:1.1.0 \ -lc "zstd -d --stdout /data/dumps/photon-dump-hungary.jsonl.zst \ | java -Xms2g -Xmx4g -jar /app/photon.jar import \ -import-file - -data-dir /data/photon/imports/20260603200523" # A szimbolikus link frissítése: ln -sfn /home/osm/photon/imports/20260603200523 /home/osm/photon/photon_dataAz importált adatbázisok verziózott könyvtárakba kerülnek (
4. ábra: Címkeresés a Photon segítségével – „Eger, Dobó tér” keresése és megjelenítése a térképen./home/osm/photon/imports/20260603200523/), így mindig vissza lehet térni egy régebbi verzióhoz, ha valami elromlana. Egy szimbolikus link (photon_data -> imports/20260603200523/) mutat az aktuális verzióra.3. GraphHopper – Útvonaltervezés (autó, bicikli, gyalogos)
A GraphHopper egy nagy teljesítményű, nyílt forráskódú útvonaltervező motor, ami az OpenStreetMap úthálózatára épül. A mi stackünkben a
local/graphhopper:9.1image fut, 4 GB RAM allokációval.A GraphHopper három útvonal profilt támogat:
- car – autós közlekedés, figyelembe veszi az egyirányú utcákat, sebességkorlátozásokat, út típusokat
- bike – biciklis közlekedés, preferálja a kerékpárutakat, kerüli a főútvonalakat
- foot – gyalogos közlekedés, használja a járdákat, gyalogutakat, lépcsőket
A konfiguráció
/home/osm/graphhopper/config.yml-ban található:graphhopper: datareader.file: /data/region.osm.pbf graph.location: /data/graph-cache profiles: - name: car - name: bike - name: foot profiles_ch: - profile: car - profile: bike - profile: foot graph.dataaccess.default_type: RAM_STORE server: application_connectors: - type: http port: 8989 bind_host: 0.0.0.0A Contraction Hierarchies (CH) egy előfeldolgozási technika, ami drámaian felgyorsítja az útvonal keresést. Az autó és bicikli profilokhoz CH-t használunk, ami az első induláskor 5-10 perc előfeldolgozást igényel, de utána a lekérések ezredmásodpercek alatt teljesülnek.
5. ábra: Autós útvonaltervezés a GraphHopper segítségével – Budapestről Debrecenbe (231,5 km, 2 óra 12 perc).4. GraphHopper PT – Tömegközlekedési útvonaltervezés
Ez a stack talán legmenőbb komponense. A GraphHopper PT (Public Transport) egy speciális konfigurációja a GraphHopper-nak, ami nemcsak az OSM úthálózatot, hanem a menetrendi adatokat (GTFS) is felhasználja a tömegközlekedési útvonaltervezéshez.
GTFS adatforrások
Három GTFS adatforrást használunk, amelyek Magyarország teljes tömegközlekedését lefedik:
SzolgáltatóForrásMéretFrissítésMÁV (Magyar Államvasutak)mavcsoport.hu (Basic Auth)~5 MBNapontaVolánbusz (Helyközi buszok)opendata.utas.hu~110 MBNapontaBKK (Budapesti Közlekedési Központ)go.bkk.hu~55 MBHetenteA MÁV regisztrációs kálvária
A MÁV GTFS elérése sajnos nem nyilvános – a mavcsoport.hu/gtfs oldalon kell regisztrálni, ahol egy rövid adatkezelési hozzájárulás után kapunk Basic Auth felhasználónevet és jelszót. A regisztráció egyszerű, de a mai napig nem értem, miért kell ez egy nyílt GTFS adatfolyamhoz – a MÁV indoklása szerint azért, hogy „tudják, hányan és milyen célra használják az adataikat”. Nos, a mi célunk egyértelmű: jobb tömegközlekedési információt adni a felhasználóknak.
A Volánbusz és a BKK szerencsére nyíltan, mindenféle regisztráció nélkül elérhető – köszönet érte!
A GTFS szinkronizáló script
A
/root/gtfs-sync.shscript naponta (hajnali 3:30-kor) letölti mindhárom GTFS fájlt, majd újraindítja agraphhopper-ptkonténert, hogy az új menetrend alapján újraépítse a gráfot. Ez a folyamat 2-5 percet vesz igénybe – ezalatt a tömegközlekedési útvonaltervezés nem elérhető.# A GTFS szinkronizáló script lényege (egyszerűsítve): # MÁV letöltés (Basic Auth-val) curl -sSf -u "user:password" \ -o /home/osm/gtfs/mav_gtfs.zip \ "https://www.mavcsoport.hu/gtfs/gtfsMavMenetrend.zip" # Volánbusz letöltés curl -sSf -o /home/osm/gtfs/volanbusz_gtfs.zip \ "https://opendata.utas.hu/public-gtfs/volanbusz_gtfs.zip" # BKK letöltés curl -sSf -o /home/osm/gtfs/bkk_gtfs.zip \ "https://go.bkk.hu/api/static/v1/public-gtfs/budapest_gtfs.zip" # GraphHopper PT újraindítása az új menetrendek betöltéséhez docker restart graphhopper-ptÉrdekesség, hogy a GraphHopper PT konfigurációja egyszerre három GTFS fájlt is be tud tölteni – a
gtfs.fileparaméterben vesszővel felsorolva:graphhopper: gtfs.file: /data/gtfs/mav_gtfs.zip,/data/gtfs/volanbusz_gtfs.zip,/data/gtfs/bkk_gtfs.zip # ...és az OSM fájl a gyalogos kapcsolatokhozEz azért fontos, mert a tömegközlekedési útvonaltervezésnél nem elég a menetrend – tudni kell, hogyan jutok el a buszmegállóhoz gyalog, amihez pontosan az OSM adataira van szükség.
6. ábra: Tömegközlekedési útvonaltervezés a GraphHopper PT segítségével – Egerből a Budapest-Keleti pályaudvarra, átszállás nélkül, 2 óra 33 perc alatt.5. A Webes Felület – MapLibre GL UI
A felhasználói felület MapLibre GL JS-re épül, ami a Mapbox GL JS nyílt forráskódú továbbfejlesztett változata. A map-ui konténer egy Nginx Alpine image, ami a statikus fájlokat szolgálja ki és proxy-zik a háttérszolgáltatások felé.
Ami különösen fontos: minden JavaScript és CSS fájl lokálisan van tárolva a
/root/osm-ui/vendor/könyvtárban. Nincs CDN függőség, nincs Google Fonts, nincsunpkg– ha elmegy az internet, a felület továbbra is teljesen működőképes marad.A UI funkciói
- Térkép nézet – raszteres csempék MapLibre GL-lel, teljes képernyős interakció
- Keresés – autocomplete címkeresés a Photon segítségével, kattintásra odarepülés
- Útvonaltervezés – A→B útvonal négy módban: autó, bicikli, gyalogos, tömegközlekedés
- Kanyarról-kanyarra navigáció – összecsukható lista az útvonal panelen, bármelyik kanyarra kattintva odarepül a térkép
- Több alternatíva – tömegközlekedésnél több útvonal közül választhatunk indulási/idő szerint
- Járat jelvények – színkódolt jelvények a különböző járatokhoz (busz=kék, villamos=sárga, metró=piros, vasút=lila, stb.)
- Rétegek váltása – OSM (alap) és Műhold (ESRI World Imagery) között
- Offline érzékelés – a műhold réteg automatikusan letiltódik, ha nincs internet
Offline audit – Mi működik internet nélkül?
Ez a projekt egyik legfontosabb szempontja. Lássuk, mi a helyzet:
Teljesen offline (nincs szükség internetre)
- ✅ Térképi csempék – a PostgreSQL adatbázisból renderelve (Magyarország OSM PBF)
- ✅ Címkeresés – Photon a lokális Magyarország dump-ot használja
- ✅ Útvonaltervezés – GraphHopper ugyanazt a lokális PBF-et olvassa
- ✅ Tömegközlekedés – GraphHopper PT a lokálisan szinkronizált GTFS menetrendekkel
- ✅ MapLibre GL JS/CSS –
/root/osm-ui/vendor/könyvtárból (nincs CDN) - ✅ Összes HTML/JS/CSS – nincs külső font, nincs Google Fonts, nincs külső API hívás
- ✅ Nginx proxy – minden upstream cél localhost vagy konténer név
Internetet igényel
- ❌ Műhold réteg (ESRI World Imagery) – opcionális, kikapcsolható
- ❌ OSM tile frissítések – minute diff letöltések (ha elérhető a net, különben csendben hibázik)
- ❌ Photon adatfrissítés – heti dump letöltés graphhopper.com-ról
- ❌ GTFS adatok – napi menetrend letöltés
Üzemeltetés – Cron feladatok
A rendszer üzemeltetése nagyrészt automatizált. Három cron job gondoskodik a frissítésekről:
# Heti Photon adatbázis frissítés (vasárnap 11:30) 30 11 * * 0 /root/photon-import.sh >> /var/log/photon-import.log 2>&1 # Napi GTFS szinkronizáció (hajnali 3:30) 30 3 * * * /root/gtfs-sync.sh >> /var/log/gtfs-sync.log 2>&1Az OSM konténer beépített frissítése percenként fut a konténeren belül, nem cron-on keresztül.
Ismert korlátok
- Hiányzó házszámok a Photon keresésben – a Magyarország Photon dump nem tartalmazza az OSM házszintű címkéit. Ez nem hiba, hanem adatkorlát.
- Street View nem elérhető – nincs gyakorlati, önállóan üzemeltethető alternatíva (a Mapillary internetet igényel, a Google Street View pedig API kulcsot és internetet).
- GraphHopper frissítése kézi – amikor az OSM PBF frissül, a GraphHopper graph cache-t manuálisan kell törölni (vagy újraindítani a konténert).
- Transit gráf újraépítés – GTFS frissítéskor 2-5 percig nem elérhető a tömegközlekedési útvonaltervezés.
- GTFS adatok időszerűsége – a menetrendek olyan frissek, amilyen friss az utolsó szinkronizáció (maximum 24 óra késés).
Zárszó
Ez a projekt számomra a szoftveres szabadság egyik legszebb példája. Egy olcsó, kis fogyasztású Raspberry Pi-n fut egy teljes értékű térkép szolgáltatás, ami semmilyen külső függőséggel nem rendelkezik. A nyílt forráskódú OpenStreetMap közösség munkája, a Photon, a GraphHopper és a MapLibre projectek lehetővé teszik, hogy bárki a saját kezébe vegye a térképezést.
A forráskód és a konfigurációk természetesen elérhetők a saját infrastruktúrámon. Ha bárki szeretne egy hasonló rendszert építeni, a N.O.M.A.D. projekt remek kiindulási alap, és az itt leírt konfigurációk is szabadon felhasználhatók.
Következő lépésként szeretném kiterjeszteni a szolgáltatást Szlovákiára, Romániára, Ausztriára, Szlovéniára és Horvátországra is – a Kárpát-medence teljes lefedésére. Továbbá tervben van egy útnyitás (road closure) támogatás is, ahol a felhasználók jelezhetik az aktuális lezárásokat, tereléseket, ami aztán az összes felhasználó számára megjelenne.
Ha kérdésetek van, vagy kipróbáltátok a megoldást és elakadtatok, nyugodtan szóljatok!
#útvonaltervezés #BKK #Docker #GraphHopper #GTFS #MapLibre #MÁV #offline #OpenStreetMap #OSM #Photon #RaspberryPi #térkép #tömegközlekedés #Volánbusz -
🤦♂️ Es ist noch schlimmer als gedacht : (unpassend) zur #OpenStreetMap-Karte werden Daten an #Google übertragen, sofern man den Standort 📍 anzeigen möchte https://visitreutlingen.de/akteure/fachwerk-kaffehaus-gartencafe/
#Graphhopper wäre wohl zu einfach : 🗺️ https://graphhopper.com/maps/?point=Fachwerk+Reutlingen
#Digitalisierung #Datenschutz #DigitaleSouveränität #DID #Neuland #Reutlingen #StaRT #Stadtmarketing
-
🤦♂️ Es ist noch schlimmer als gedacht : (unpassend) zur #OpenStreetMap-Karte werden Daten an #Google übertragen, sofern man den Standort 📍 anzeigen möchte https://visitreutlingen.de/akteure/fachwerk-kaffehaus-gartencafe/
#Graphhopper wäre wohl zu einfach : 🗺️ https://graphhopper.com/maps/?point=Fachwerk+Reutlingen
#Digitalisierung #Datenschutz #DigitaleSouveränität #DID #Neuland #Reutlingen #StaRT #Stadtmarketing
-
🚴♂️🔍🥱 So apparently, everyone was losing sleep over the "vital" need for more precise #elevation #data in GraphHopper's routing engine. Because, clearly, your #cycling route simply isn't complete without knowing that hill is exactly 2.34567 meters high. 🌍🚫
https://www.graphhopper.com/blog/2026/03/23/more-precise-elevation-data-for-graphhopper/ #GraphHopper #SleepDeprivation #PrecisionRouting #TechHumor #HackerNews #ngated -
🚴♂️🔍🥱 So apparently, everyone was losing sleep over the "vital" need for more precise #elevation #data in GraphHopper's routing engine. Because, clearly, your #cycling route simply isn't complete without knowing that hill is exactly 2.34567 meters high. 🌍🚫
https://www.graphhopper.com/blog/2026/03/23/more-precise-elevation-data-for-graphhopper/ #GraphHopper #SleepDeprivation #PrecisionRouting #TechHumor #HackerNews #ngated -
More precise elevation data for GraphHopper routing engine
https://www.graphhopper.com/blog/2026/03/23/more-precise-elevation-data-for-graphhopper/
#HackerNews #More #precise #elevation #data #for #GraphHopper #routing #engine #GraphHopper #Elevation #Data #Routing #Engine #GIS #Technology
-
More precise elevation data for GraphHopper routing engine
https://www.graphhopper.com/blog/2026/03/23/more-precise-elevation-data-for-graphhopper/
#HackerNews #More #precise #elevation #data #for #GraphHopper #routing #engine #GraphHopper #Elevation #Data #Routing #Engine #GIS #Technology
-
#Carburoid: After adding route deviations, geodesic distance become a bad approximation. So current struggle is adding real road distance. I lost many hours getting #graphhopper working and yet no outcome. Default configurations don't work out of the box, data blobs are too big and features are too overshoot for what i need, just the distance. Documentation for offline use is obscure and #AI agents loop among non-working solutions. I am stuck. Any suggestions?
-
#Carburoid: After adding route deviations, geodesic distance become a bad approximation. So current struggle is adding real road distance. I lost many hours getting #graphhopper working and yet no outcome. Default configurations don't work out of the box, data blobs are too big and features are too overshoot for what i need, just the distance. Documentation for offline use is obscure and #AI agents loop among non-working solutions. I am stuck. Any suggestions?
-
@nclick sehr gut. Vielen Dank. Werde ich testen. Ich habe schon einige alternative #naviapps getestet. Mit den bekannten wie #OsmAnd #GraphHopper #organicmaps bin ich nicht wirklich happy gewesen und habe bisher #MagicEarth für mich entdeckt. #CoMaps runtergeladen und installiert! Danke f Hinweis!
PS: Die #Sprachausgabe #TTS ist in meinem E/OS shitty. (Gibt es eine nette alternative TTS-Plastikdame in deutsch?)
#navigation #naviapp #did #didit #diday #digitalindependenceDay #eos #android
-
RE: https://social.notjustbikes.com/@notjustbikes/115984775951005911
Nessuno dovrebbe usare google maps per andare in bici: chi l'ha progettato non oncepisce che l'auto potrebbe non essere il modo migliore di spostarsi, specialmente in città.
Avete mai notato come sono rappresentate le strade pedonali nell'app? O che gli spostamenti includono il traffico, ma mai il tempo per trovare parcheggio e per poi andare dal parcheggio alla destinazione?
Tutto spiagato nel video di @notjustbikes , che potete trovare anche su YouTube: https://www.youtube.com/watch?v=csHdwHTteOw&pp=2Ab7Cg%3D%3D
(Per trovare il miglior percorso ciclabile potete provare https://graphhopper.com/maps/?profile=bike)
-
RE: https://social.notjustbikes.com/@notjustbikes/115984775951005911
Nessuno dovrebbe usare google maps per andare in bici: chi l'ha progettato non oncepisce che l'auto potrebbe non essere il modo migliore di spostarsi, specialmente in città.
Avete mai notato come sono rappresentate le strade pedonali nell'app? O che gli spostamenti includono il traffico, ma mai il tempo per trovare parcheggio e per poi andare dal parcheggio alla destinazione?
Tutto spiagato nel video di @notjustbikes , che potete trovare anche su YouTube: https://www.youtube.com/watch?v=csHdwHTteOw&pp=2Ab7Cg%3D%3D
(Per trovare il miglior percorso ciclabile potete provare https://graphhopper.com/maps/?profile=bike)
-
I made GNOME Maps stop doing search queries faster than most people can type, with this One Weird Trick™: https://gitlab.gnome.org/GNOME/gnome-maps/-/merge_requests/584
Medium-to-fast typists will no longer see flickering search results and won't be doing "Hokuto no ken" network requests anymore. I presume #GNOME users will have less chances of collectively DDoSing servers when the Year of the Linux Desktop™ happens.
#GNOMEMaps #OpenStreetMap #GraphHopper #EnergyEfficiency #EnvironmentThisWeek
-
I made GNOME Maps stop doing search queries faster than most people can type, with this One Weird Trick™: https://gitlab.gnome.org/GNOME/gnome-maps/-/merge_requests/584
Medium-to-fast typists will no longer see flickering search results and won't be doing "Hokuto no ken" network requests anymore. I presume #GNOME users will have less chances of collectively DDoSing servers when the Year of the Linux Desktop™ happens.
#GNOMEMaps #OpenStreetMap #GraphHopper #EnergyEfficiency #EnvironmentThisWeek
-
GraphHopper Routing Engine 11.0 Released
https://www.graphhopper.com/blog/2025/10/14/graphhopper-routing-engine-11-0-released/
-
GraphHopper Routing Engine 11.0 Released
https://www.graphhopper.com/blog/2025/10/14/graphhopper-routing-engine-11-0-released/
-
Das technische Update unserer Webseite hat einen großen Fortschritt erfahren. Leider sieht man kaum etwas von den unzähligen Stunden, die reingeflossen sind.
* #PHP Version 8.X-Kompatibilität hergestellt
* altes Framework entfernt
* #Symfony PHP-Framework eingeführtWir sammeln ohnehin nicht viele Daten, doch die wenigen sind nach den Updates noch besser geschützt.
Sichtbar:
* Self-Service Passwortreset für den Mitgliederbereich
* Die Patenbäume werden nun wieder im Mitgliederbereich mit Link auf die Baumbeschreibung dargestellt
* GPS-Daten des #Patenbaum|es im Mitgliederbereich werden nun auf Satellitenkarte von #Graphhopper dargestelltUnser Webmaster Ed hat noch weitere Updates im Köcher. Wir bleiben dran und danken ihm für seine exzellente Arbeit!
-
Das ist ne Fährstrecke. Kannst du sicher vermeiden, anderer Kommentar. Dass es sowas überhaupt gibt ist schon nice
Sicher dass du alle Karten heruntergeladen hast? Norddeutschland, Dänemark, Schweden?
Alternativ kannst du auch Routing von #BRouter oder #GraphHopper verwenden, die gehen auch ohne heruntergeladene Karten aber halt nicht lokal.
-
Das ist ne Fährstrecke. Kannst du sicher vermeiden, anderer Kommentar. Dass es sowas überhaupt gibt ist schon nice
Sicher dass du alle Karten heruntergeladen hast? Norddeutschland, Dänemark, Schweden?
Alternativ kannst du auch Routing von #BRouter oder #GraphHopper verwenden, die gehen auch ohne heruntergeladene Karten aber halt nicht lokal.
-
What #OpenStreetMap routing method would you use to draw a reasonably efficient route to visit a number of coordinates (dozens, hundreds of places)?
#OpenRouteService is the only option mentioned in https://wiki.openstreetmap.org/wiki/Track-drawing_websites .
For example: tour of 35 #Helsinki city #libraries. I did the track manually on #GraphHopper and imported it on #uMap. Surely there's a better way?
https://graphhopper.com/maps/?point=60.211976%2C24.899321_Haagan+tori%2C+00320+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.211892%2C24.891851_Isonnevantie+16%2C+00320+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.196842%2C24.875807_Munkkiniemen+kirjasto%2C+Riihitie+22%2C+00330+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.226117%2C24.860429_Pit%C3%A4j%C3%A4nm%C3%A4en+kirjasto%2C+Jousipolku+1+C1%2C+00370+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.232278%2C24.886046_Kaupintie+4%2C+00440+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.238828%2C24.876173_Kanneltalo%2C+Klaneettitie+5%2C+00420+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.24641%2C24.860333_Malminkartanon+kirjasto%2C+Puustellintie+6%2C+00410+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.249305%2C24.941267_Palohein%C3%A4n+kirjasto%2C+Palohein%C3%A4ntie+22%2C+00670+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.231191%2C24.933162_Maunulan+kirjasto%2C+Mets%C3%A4purontie+4%2C+00630+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.227988%2C24.962491_Kyl%C3%A4nvanhimmantie+27%2C+00640+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.210845%2C24.947109_K%C3%A4pyl%C3%A4n+kirjasto%2C+V%C3%A4in%C3%B6l%C3%A4nkatu+5%2C+00610+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.20931%2C24.977825_H%C3%A4meentie+135%2C+00560+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.227515%2C25.01288_Infokeskus+Korona%2C+Viikinkaari+11%2C+00790+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.2498%2C24.99122_Pukinm%C3%A4en+kirjasto%2C+Kentt%C3%A4kuja+12%2C+00720+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.250265%2C25.014819_Malmin+kirjasto%2C+Ala-Malmin+tori+1%2C+00700+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.265566%2C25.019094_Tapanilan+kirjasto%2C+Hiidenkiventie+21%2C+00730+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.276121%2C25.004456_Suutarilan+kirjasto%2C+Vaskiniitynkuja+5C%2C+00740+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.274555%2C25.033988_Ajurinaukio+5%2C+00750+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.271422%2C25.058756_Nurkkatie+2%2C+00760+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.260506%2C25.076276_Jakom%C3%A4en+kirjasto%2C+Jakom%C3%A4enpolku+3%2C+00770+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.237708%2C25.085237_Ostostie+4%2C+00940+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.224182%2C25.072526_Kiviparintie+2%2C+00920+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.211928%2C25.080165_It%C3%A4keskuksen+kirjasto%2C+Turunlinnantie+1%2C+00900+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.208802%2C25.143585_Vuosaaren+kirjasto%2C+Mosaiikkitori+2%2C+00980+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.194521%2C25.052814_Roihuvuoren+kirjasto%2C+Roihuvuorentie+2%2C+00820+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.179617%2C25.051353&point=60.195079%2C25.033528_Herttoniemen+kirjasto%2C+Linnanrakentajantie+2%2C+00880+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.18731%2C24.980518&point=60.192129%2C24.962442&point=60.183607%2C24.953627_Kallion+kirjasto%2C+Viides+linja+11%2C+00530+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.17394%2C24.937982_Helsingin+keskustakirjasto+Oodi%2C+T%C3%B6%C3%B6l%C3%B6nlahdenkatu+4%2C+00100+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.166128%2C24.94627_Rikhardinkatu+3%2C+00130+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.159987%2C24.920857_J%C3%A4tk%C3%A4saaren+kirjasto%2C+Tyynenmerenkatu+1%2C+00220+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.158703%2C24.883285_Lauttasaaren+kirjasto%2C+Pajalahdentie+10a+A%2C+00200+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.183347%2C24.917451_T%C3%B6%C3%B6l%C3%B6n+kirjasto%2C+Topeliuksenkatu+6%2C+00250+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.200775%2C24.935879_Pasilan+kirjasto%2C+Kellosilta+9%2C+00520+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.211976%2C24.899321_Haagan+tori%2C+00320+Helsinki%2C+Manner-Suomi%2C+Suomi&profile=racingbike&layer=OpenStreetMap
https://umap.openstreetmap.fr/en/map/helsinki-culture-tour_1191485#12/60.2286/24.8284 -
What #OpenStreetMap routing method would you use to draw a reasonably efficient route to visit a number of coordinates (dozens, hundreds of places)?
#OpenRouteService is the only option mentioned in https://wiki.openstreetmap.org/wiki/Track-drawing_websites .
For example: tour of 35 #Helsinki city #libraries. I did the track manually on #GraphHopper and imported it on #uMap. Surely there's a better way?
https://graphhopper.com/maps/?point=60.211976%2C24.899321_Haagan+tori%2C+00320+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.211892%2C24.891851_Isonnevantie+16%2C+00320+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.196842%2C24.875807_Munkkiniemen+kirjasto%2C+Riihitie+22%2C+00330+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.226117%2C24.860429_Pit%C3%A4j%C3%A4nm%C3%A4en+kirjasto%2C+Jousipolku+1+C1%2C+00370+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.232278%2C24.886046_Kaupintie+4%2C+00440+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.238828%2C24.876173_Kanneltalo%2C+Klaneettitie+5%2C+00420+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.24641%2C24.860333_Malminkartanon+kirjasto%2C+Puustellintie+6%2C+00410+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.249305%2C24.941267_Palohein%C3%A4n+kirjasto%2C+Palohein%C3%A4ntie+22%2C+00670+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.231191%2C24.933162_Maunulan+kirjasto%2C+Mets%C3%A4purontie+4%2C+00630+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.227988%2C24.962491_Kyl%C3%A4nvanhimmantie+27%2C+00640+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.210845%2C24.947109_K%C3%A4pyl%C3%A4n+kirjasto%2C+V%C3%A4in%C3%B6l%C3%A4nkatu+5%2C+00610+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.20931%2C24.977825_H%C3%A4meentie+135%2C+00560+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.227515%2C25.01288_Infokeskus+Korona%2C+Viikinkaari+11%2C+00790+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.2498%2C24.99122_Pukinm%C3%A4en+kirjasto%2C+Kentt%C3%A4kuja+12%2C+00720+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.250265%2C25.014819_Malmin+kirjasto%2C+Ala-Malmin+tori+1%2C+00700+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.265566%2C25.019094_Tapanilan+kirjasto%2C+Hiidenkiventie+21%2C+00730+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.276121%2C25.004456_Suutarilan+kirjasto%2C+Vaskiniitynkuja+5C%2C+00740+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.274555%2C25.033988_Ajurinaukio+5%2C+00750+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.271422%2C25.058756_Nurkkatie+2%2C+00760+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.260506%2C25.076276_Jakom%C3%A4en+kirjasto%2C+Jakom%C3%A4enpolku+3%2C+00770+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.237708%2C25.085237_Ostostie+4%2C+00940+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.224182%2C25.072526_Kiviparintie+2%2C+00920+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.211928%2C25.080165_It%C3%A4keskuksen+kirjasto%2C+Turunlinnantie+1%2C+00900+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.208802%2C25.143585_Vuosaaren+kirjasto%2C+Mosaiikkitori+2%2C+00980+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.194521%2C25.052814_Roihuvuoren+kirjasto%2C+Roihuvuorentie+2%2C+00820+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.179617%2C25.051353&point=60.195079%2C25.033528_Herttoniemen+kirjasto%2C+Linnanrakentajantie+2%2C+00880+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.18731%2C24.980518&point=60.192129%2C24.962442&point=60.183607%2C24.953627_Kallion+kirjasto%2C+Viides+linja+11%2C+00530+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.17394%2C24.937982_Helsingin+keskustakirjasto+Oodi%2C+T%C3%B6%C3%B6l%C3%B6nlahdenkatu+4%2C+00100+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.166128%2C24.94627_Rikhardinkatu+3%2C+00130+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.159987%2C24.920857_J%C3%A4tk%C3%A4saaren+kirjasto%2C+Tyynenmerenkatu+1%2C+00220+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.158703%2C24.883285_Lauttasaaren+kirjasto%2C+Pajalahdentie+10a+A%2C+00200+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.183347%2C24.917451_T%C3%B6%C3%B6l%C3%B6n+kirjasto%2C+Topeliuksenkatu+6%2C+00250+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.200775%2C24.935879_Pasilan+kirjasto%2C+Kellosilta+9%2C+00520+Helsinki%2C+Manner-Suomi%2C+Suomi&point=60.211976%2C24.899321_Haagan+tori%2C+00320+Helsinki%2C+Manner-Suomi%2C+Suomi&profile=racingbike&layer=OpenStreetMap
https://umap.openstreetmap.fr/en/map/helsinki-culture-tour_1191485#12/60.2286/24.8284 -
@awinkler for which region? For car only routing there exist several (#graphhopper, #osrm, #valhalla ), for transit routing, data availability is still an issue. The #transitous project is the largest free instance I‘m aware of. For smaller regions, you might self-host e.g. an #OpenTripPlanner or #MOTIS instance https://transitous.org/
-
@awinkler for which region? For car only routing there exist several (#graphhopper, #osrm, #valhalla ), for transit routing, data availability is still an issue. The #transitous project is the largest free instance I‘m aware of. For smaller regions, you might self-host e.g. an #OpenTripPlanner or #MOTIS instance https://transitous.org/
-
@ianb Meanwhile #GraphHopper lets you decide between leisurely walk and hike, but gently warns you that the hike involves 15 km of climbing of which 5 rather dangerous.
-
@ianb Meanwhile #GraphHopper lets you decide between leisurely walk and hike, but gently warns you that the hike involves 15 km of climbing of which 5 rather dangerous.
-
I just discovered #brouter .
It's a routing engine that can use #openstreetmap data and your own preferences for #cycling roads if you want.Certainly beats #graphhopper on the #OSM website.
https://brouter.de/brouter-web/
Is there a GUI for #Linux ?
-
I just discovered #brouter .
It's a routing engine that can use #openstreetmap data and your own preferences for #cycling roads if you want.Certainly beats #graphhopper on the #OSM website.
https://brouter.de/brouter-web/
Is there a GUI for #Linux ?
-
Hey #OpenStreetMap peeps, how can I debug this strange routing behavior?
#GraphHopper & #OSRM make a simple left turn (correct), while #Valhalla and #OsmAnd act as if there's a turn restriction and make a U-turn instead.
This is at 51.73201° N, 9.97389° E, coming from north on B3 and going to the east on A7.
There's been a construction site here a few weeks ago, so my first suspicion was stale data, but even with OsmAnd Live it still does it.
I can't see any restrictions in the data. Ideas?
-
Hey #OpenStreetMap peeps, how can I debug this strange routing behavior?
#GraphHopper & #OSRM make a simple left turn (correct), while #Valhalla and #OsmAnd act as if there's a turn restriction and make a U-turn instead.
This is at 51.73201° N, 9.97389° E, coming from north on B3 and going to the east on A7.
There's been a construction site here a few weeks ago, so my first suspicion was stale data, but even with OsmAnd Live it still does it.
I can't see any restrictions in the data. Ideas?
-
@fdroidorg delivering only @openstreetmap -related updates today, yamma yamma yamma
-
@fdroidorg delivering only @openstreetmap -related updates today, yamma yamma yamma
-
Why doesn't @duckduckgo have cycling directions on their maps, like every other navigation app? Only having the choice between walking or driving really decreases its value.
Fortunately #GraphHopper works reasonably well... -
Why doesn't @duckduckgo have cycling directions on their maps, like every other navigation app? Only having the choice between walking or driving really decreases its value.
Fortunately #GraphHopper works reasonably well... -
Nächste Radtour steht fest 🤣
Danke Graphhopper, dass du selbst
51°N 6.5°E komplett misinterpretierst.
Inzwischen sehe ich, dass es sowohl dezimal als auch im Bogenmaß mehr als hapert.
#komoot #graphhopper #photon -
Why would a map app like #Graphhopper fail so hard in 2024 when given
50°55'58.5"N 6°55'03.3"E
as a search String? -
OSM, Graphopper и все все все
Введение Думаю, все согласятся с утверждением, что в современном мире логистической компании трудно обойтись без маршрутизации. Да, можно планировать все поездки руками, но с ростом объема работ это делать становиться все труднее и труднее. Не спасают ни записные книжки, ни электронные таблицы, ни даже записи в базе данных. Увеличивается количество ошибок. И появляется случаи доставки отправления не в назначенный Саратов, а в Норильск. Выясняется это уже на месте, производится возврат отправления на что тратятся ресурсы компании. Маршрутизация, волшебное слово, но с чего начать?
-
@opensorcerer Es kommt ein wenig darauf an, welche Version von #OSMAnd du nutzt. In 4.7 hat sich einiges getan https://osmand.net/blog/osmand-android-4-7-released/#enhanced-offline-navigation
Alternativ kann man noch #Graphhopper nutzen, extrem schnell, aber nicht mehr offline:
https://www.graphhopper.com/blog/2024/02/27/osmand-with-graphhopper-navigation/ -
@opensorcerer Es kommt ein wenig darauf an, welche Version von #OSMAnd du nutzt. In 4.7 hat sich einiges getan https://osmand.net/blog/osmand-android-4-7-released/#enhanced-offline-navigation
Alternativ kann man noch #Graphhopper nutzen, extrem schnell, aber nicht mehr offline:
https://www.graphhopper.com/blog/2024/02/27/osmand-with-graphhopper-navigation/ -
@blausand Nun ja, die Routenvorschläge von #GraphHopper fürs Fahrrad sehen dann aber auch sehr nach quick'n dirty aus. Habe vorhin mal probehalber Start und Ziel fürs #mdrza eingegeben. Suboptimal wäre untertrieben. Dann doch lieber bei #osmand (ggf. mit #BRouter als offline Engine) ein paar Sekunden warten und dafür eine wirklich brauchbare Route erhalten.
Und wenn ich vorab planen kann, suche ich mir die Routen auf #bikerouter und importiere die Tracks dann zum Navigieren in OsmAnd. -
@blausand @Cheatha Du kannst #Graphhopper als Routingengine auch für #OSMand aktivieren: https://www.graphhopper.com/blog/2024/02/27/osmand-with-graphhopper-navigation/
Die neue Version 4.7 soll schneller routen: https://osmand.net/blog/osmand-android-4-7-released/#enhanced-offline-navigation -
@Cheatha Ach, übrigens, hab rausgefunden, wer bei der Suche auf freien mobilen Karten am Stock geht (wie ich, Grüße geh'n raus an #OSMand), dem sei die #GraphHopper App empfohlen. Blitzschnell ist untertrieben!
#hackurday -
Si quelqu'un près de #Montréal voudrait implémenter les directions pour le transport en commun de la #STM, #ARTM / Exo, etc., dans #GNOMEMaps pour avoir un logiciel de routage natif à #GNOME / #Linux avec #OpenStreetMap et #GraphHopper, voyez ce billet et ceux reliés pour la documentation de données ouvertes #opendata : https://gitlab.gnome.org/GNOME/gnome-maps/-/issues/609
-
Si quelqu'un près de #Montréal voudrait implémenter les directions pour le transport en commun de la #STM, #ARTM / Exo, etc., dans #GNOMEMaps pour avoir un logiciel de routage natif à #GNOME / #Linux avec #OpenStreetMap et #GraphHopper, voyez ce billet et ceux reliés pour la documentation de données ouvertes #opendata : https://gitlab.gnome.org/GNOME/gnome-maps/-/issues/609
-
Ahem, #GNOMEMaps Nightly (with its dark vector maps!) says that walking from the airport's nearest lane to the #GUADEC 2024 venue is a terrible idea 🤔️
I'll just leave this link here in case someone in the #GNOME #Colorado community wants to implement public transit routing using the #Denver RTD's open data / APIs and #OpenStreetMap #GraphHopper : https://gitlab.gnome.org/GNOME/gnome-maps/-/issues/639
-
Ahem, #GNOMEMaps Nightly (with its dark vector maps!) says that walking from the airport's nearest lane to the #GUADEC 2024 venue is a terrible idea 🤔️
I'll just leave this link here in case someone in the #GNOME #Colorado community wants to implement public transit routing using the #Denver RTD's open data / APIs and #OpenStreetMap #GraphHopper : https://gitlab.gnome.org/GNOME/gnome-maps/-/issues/639
-
Actually, you can : https://openstreetmap.org/directions though it won't be able to provide you with turn-by-turn guidance.
There are multiple routers and modes available, too: #OSRM, #graphHopper, #valhalla
-
@karussell @obfusk @SylvieLorxu @sachsenspielt #graphhopper
Acrylicpicture painted by me a long time ego ;)
-
Online Routenberechnung #Graphhopper funktioniert. Jedoch wird da ja dann kein Tempolimit und auch keine Verkehrsbeschränkungen mehr angezeigt. -
Zur Frage der Software:
1. Die #Graphhopper Routing engine ist Open Source
https://www.graphhopper.com/open-source/ - Wie ich Peter kenne ist er sehr offen für jedwede Verbesserung ... https://github.com/boldtrn/graphhopper-maps-capacitor2. Auch Victor Scherb von #OsmAnd https://github.com/osmandapp/OsmAnd ist jederzeit ansprechbar
-
📆 June 23, 2022 #Rwanda 🇷🇼 registered several #constellations of small #satellites 🛰️ with the #International #Telecommunications Union (#ITU), totalling more than 300,000 units https://advanced-television.com/2022/06/23/rwanda-still-wants-300000-satellites
Screenshot : #Graphhopper https://graphhopper.com/maps/?point=Kigali+Ruanda&point=Kigali+Ruanda&layer=Esri+Satellite, Picture : Lake Victoria :cc_zero: