Prilagođen server za generisanje mapa

Jedna od najvažnijih vrednosti OSM-a je mogućnost korišćenja unetih podataka shodno svojim potrebama uz minimalna ograničenja uslovljena licencom (npr. navođenje izvora podataka). Kako se pokazala potreba za generisanjam prilagođenih mapa u odnosu na mape koje se podrazumevano generišu (https://www.openstreetmap.org) i u cilju olakšavanja njihovog korišćenja, urađena je adaptacija dokera https://github.com/Overv/openstreetmap-tile-server.

Tokom dosadašnjeg rada na prilagođavanju dokera datate su sledeće funkcionalnosti:

  • Prikaz granice sa Kosovom i Metohijom shodno ustavu RS
  • Prilikom inicijalizacije servera definišu se države za koje treba da budu generisane mape
  • Urađeno je postavljanje postojećih ili preslovljenih odgovarajućih naziva u cilju dobijanja ćirilične i latinične mape. Algoritam definisanja ćiriličnih/latiničnih naziva je u zavisnosti od države gde se određeni entitet nalazi
  • Definisano je korišćenje fonta koji sadrži naša kurzivna slova

Celokupni kod za kreiranje doker slike je dostupan na https://gitlab.com/osm-serbia/openstreetmap-tile-server-serbian, dok se funkcionalnost preslovljavanja nalazi na https://gitlab.com/osm-serbia/JOSM_transliterator/-/tree/novoPrepakaivanjeTagovaName .

Da bi se dobio funkcionalan server potrebno je prvo izvršiti inicijalizaciju servera, odnosno preuzeti potrebne OSM podatke i sa njima popuniti odgovarajuću bazu podataka. Ceo navedeni proces se postiže sledećim komandama:

docker volume create openstreetmap-data
docker volume create openstreetmap-rendered-tiles
docker run \
-e DRZAVE=serbia,montenegro,kosovo \
-e UPDATES=enabled \
-v openstreetmap-data:/var/lib/postgresql/12/main \
-v openstreetmap-rendered-tiles:/var/lib/mod_tile \
pmilanovic/openstreetmap-tile-server-serbian \
priprema_rendera

Ovde je neophodno napomenuti da se spisak država koje se prikazuju na mapi moraju navesti u parametru DRZAVE sa nazivima kako su one definisane na sajtu Geofabrik-a.

Samo startovanje servera se postiže komandom:

docker run \
-p 8080:80 \
-e UPDATES=enabled \
-v openstreetmap-data:/var/lib/postgresql/12/main \
-v openstreetmap-rendered-tiles:/var/lib/mod_tile \
-d pmilanovic/openstreetmap-tile-server-serbian \
run

Nakon ove komande na adresi http://localhost:8080/ biće dostupna probna/testna stranica sa prikazom mapa, odnosno na adresi http://localhost:8080/cir/{z}/{x}/{y}.png se nalaze ćirilični tile-ovi, a latinični na http://localhost:8080/lat/{z}/{x}/{y}.png . Ovako podešen server će automatski vršiti ažuriranje podataka u bazi na minutnom nivou, a izmene su vidljive na mapi sa velikim uveličanjima već posle par minuta od njihovg unosa na OSM servere.

U cilju optimizacije rada servera moguće je izvršiti prerender površine za koju su učitani podaci sa komandama:

c=$(sudo docker ps | grep "Up" | grep -Eo "^[0-9a-f]+")
docker exec -u renderer "$c" bash -c '/home/renderer/render_list_geo.pl/render_list_geo.pl -n 2 -l 80 -f -a -m cir -z 2 -Z 17 $(cat /var/lib/mod_tile/boundingBox.txt)'
docker exec -u renderer "$c" bash -c '/home/renderer/render_list_geo.pl/render_list_geo.pl -n 2 -l 80 -f -a -m lat -z 2 -Z 17 $(cat /var/lib/mod_tile/boundingBox.txt)'

5 mišljenja na „Prilagođen server za generisanje mapa“

  1. Pozdrav, komanda za pokretanje prereneder mapa nista ne radi. Render u stvarnom vremenu radi bez problema ali pokretanje prerendera nista ne radi. Da li je potrebno jos nesto podesiti kako bi proradilo ?
    Unapred zahvalan,
    Marko.

  2. Zdravo Marko,
    Kako si došao do zaključka da prerender ne radi? Da li je prijavio neku grešku?
    Prerender je specifičan jer on radi render (ili preciznije, deo rendera koji je vremenski zahtevniji) samo dok je računar slobodan, pa možda nije aktivan baš kada ti gledaš.

    Inače, da li je problem da premestimo komunikaciju na GitLab (https://gitlab.com/osm-serbia/openstreetmap-tile-server-serbian) da sve imamo na jednom mestu.

    1. Zdravo Predraze, hvala Vam na brzom odgovoru. Naravno, mozemo da prebacimo na GitLab. Pokretanjem prerender komande koristeci Perl skriptu render_list_geo.pl ne postize se nista, prerender u roku od par sekundi prolazi kroz sve zoom nivoe i zoom 18 zavrsava porukom da su svi tile-ovi prerenderovani, iako je to ne moguce za tako kratko vreme. Molim Vas ostavite ovde link od gitlaba gde ste prebacili issue.

Ostavite odgovor

Vaša adresa e-pošte neće biti objavljena.Neophodna polja su označena *