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

Једна од најважнијих вредности ОСМ-а је могућност коришћења унетих података сходно својим потребама уз минимална ограничења условљена лиценцом (нпр. навођење извора података). Како се показала потреба за генерисањам прилагођених мапа у односу на мапе које се подразумевано генеришу (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)'

Оставите одговор

Ваша адреса е-поште неће бити објављена.