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 xorp-archive.xorp.hu nevƱ 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.
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ó.
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.yml fĂĄ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.pbf elĂ©rĂ©si Ășton talĂĄlhatĂł.
Az import az osm-import konté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 shm_size: 1gb beĂĄ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.
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.
Folyamatos frissĂtĂ©s
A legmenĆbb funkciĂł a beĂ©pĂtett incrementĂĄlis frissĂtĂ©s. Az UPDATES: enabled környezeti vĂĄltozĂł hatĂĄsĂĄra a kontĂ©ner percenkĂ©nt letölti a minute diff fĂĄjlokat a planet.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.0 image 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.sh script 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ĂłlEllenĆrzi a metaadatokat (ETag, last-modified) â ha nem vĂĄltozott, kihagyja a letöltĂ©stLeĂĄllĂtja a Photon kontĂ©nertEgy ideiglenes Docker kontĂ©nerben dekompresszĂĄlja Ă©s importĂĄlja az adatbĂĄzistFrissĂti a szimbolikus linket az Ășj import könyvtĂĄrraĂjraindĂtja a Photon kontĂ©nertEllenĆ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 (/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.
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.
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.1 image 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Ă©s
MĂV (Magyar Ăllamvasutak)mavcsoport.hu (Basic Auth)~5 MBNaponta
Volånbusz (Helyközi buszok)opendata.utas.hu~110 MBNaponta
BKK (Budapesti Közlekedési Központ)go.bkk.hu~55 MBHetente
A 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.sh script naponta (hajnali 3:30-kor) letölti mindhĂĄrom GTFS fĂĄjlt, majd ĂșjraindĂtja a graphhopper-pt kontĂ©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.file paramĂ©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, nincs unpkg â 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
7. ĂĄbra: A teljes webes felĂŒlet â a tĂ©rkĂ©p, keresĂ©s Ă©s ĂștvonaltervezĂ©s hasznĂĄlata lĂ©pĂ©srĆl lĂ©pĂ©sre.
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