Прилагођен сервер за генерисање мапа

Једна од најважнијих вредности ОСМ-а је могућност коришћења унетих података сходно својим потребама уз минимална ограничења условљена лиценцом (нпр. навођење извора података). Како се показала потреба за генерисањам прилагођених мапа у односу на мапе које се подразумевано генеришу (https://www.openstreetmap.org) и у циљу олакшавања њиховог коришћења, урађенa је адаптација докера https://github.com/Overv/openstreetmap-tile-server.

Током досадашњег рада на прилагођавању докера датате су следеће функционалности:

  • Приказ границе са Косовом и Метохијом сходно уставу РС
  • Приликом иницијализације сервера дефинишу се државе за које треба да буду генерисане мапе
  • Урађено је постављање постојећих или пресловљених одговарајућих назива у циљу добијања ћириличне и латиничне мапе. Алгоритам дефинисања ћириличних/латиничних назива је у зависности од државе где се одређени ентитет налази
  • Дефинисано је коришћење фонта који садржи наша курзивна слова

Целокупни код за креирање докер слике је доступан на https://gitlab.com/osm-serbia/openstreetmap-tile-server-serbian, док се функционалност пресловљавања налази на https://gitlab.com/osm-serbia/JOSM_transliterator/-/tree/novoPrepakaivanjeTagovaName .

Да би се добио функционалан сервер потребно је прво извршити иницијализацију сервера, односно преузети потребне ОСМ податке и са њима попунити одговарајућу базу података. Цео наведени процес се постиже следећим командама:

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

Овде је неопходно напоменути да се списак држава које се приказују на мапи морају навести у параметру DRZAVE са називима како су оне дефинисане на сајту Geofabrik-а.

Само стартовање сервера се постиже командом:

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

Након ове команде на адреси http://localhost:8080/ биће доступна пробна/тестна страница са приказом мапа, односно на адреси http://localhost:8080/cir/{z}/{x}/{y}.png се налазе ћирилични tile-ови, а латинични на http://localhost:8080/lat/{z}/{x}/{y}.png . Овако подешен сервер ће аутоматски вршити ажурирање података у бази на минутном нивоу, а измене су видљиве на мапи са великим увеличањима већ после пар минута од њиховг уноса на ОСМ сервере.

У циљу оптимизације рада сервера могуће је извршити пререндер површине за коју су учитани подаци са командама:

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 мишљења на „Прилагођен сервер за генерисање мапа“

  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. Здраво Марко,
    Како си дошао до закључка да пререндер не ради? Да ли је пријавио неку грешку?
    Пререндер је специфичан јер он ради рендер (или прецизније, део рендера који је временски захтевнији) само док је рачунар слободан, па можда није активан баш када ти гледаш.

    Иначе, да ли је проблем да преместимо комуникацију на GitLab (https://gitlab.com/osm-serbia/openstreetmap-tile-server-serbian) да све имамо на једном месту.

    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.

Оставите одговор на Marko M. Одустани од одговора

Ваша адреса е-поште неће бити објављена. Неопходна поља су означена *