Pozor! wiki.freemap.sk je archivovaná a už do nej nie je možné prispievať. Užitočné stránky budú premigrované na oficiálne wiki stránky slovenskej OpenStreetMap komunity.

Revision [4996]

This is an old revision of Renderovanie made by MiMiNo on 2015-08-28 20:07:17.

 

Popis renderovania na freemap.sk

Renderovanie dát je rozdelené na dve oblati:

1. denné renderovanie

Každé ráno sa vykonáva postupnosť krokov, ktoré zabezpečia spracovanie cca 99% OSM dát (t.j. všetky, ktoré nespracovávajú neskôr).
Ak sa proces spustí napr. o 6:00, tak "+10min" znamená čas 6:10, "+1h30min" znamená 7:30, atď.
Časový posunnázov procesu: jeho popis
+0minosmparser: Stiahnutie zmien z OSM.org servera za prechádzajúci deň, orezanie dát na BBOX Slovenska
+10minosmparser: Naimportovanie súboru so zmenami do databázy
+20minosmparser: Spracovanie relácií (turistických, cyklistických, MHD, ...)
+35minosmparser: Export nových/zmenených dát z databázy do súboru vo formáte pre TRAPI
+40mintrapi/trapilow: TRAPI+LowTRAPI nachádza vo svojom vstupnom adresári nový subor a začína s jeho importom
+45minosmparser: Výpočet z/x/y koordinátov zmenených tiles a ich označenie (ako "dirty") na prerenderovanie DiSK klientmi
+1h10minosmparser: Ukončenie procesu
+1h0min až +1h30mintrapi/trapilow: Ukončenie procesu
+1h45mindisk: Začatie renderovania DiSK klientmi.
+4h až +12hdisk: Ukončenie renderovania, závisí od počtu tiles, ich komplexnosti a počte/výkone renderujúcich DiSK klientov

Na serveri bežia nepretržite nasledujúce procesy/služby:
  1. disk upload - po uploade vyrenderovaných obrázkov DiSK klientom, sú tieto rozbalené do preddefinovaného adresára
  2. postprocessing - vyrenderované obrázky sú porovnané s existujúcimi na serveri, a ak sa líšia, sú posunuté na ďalšie spracovanie
  3. prerendering - proces LayerAllInOne AllInOne načíta všetky potrebné vrstvy (podkladový tile, reliéf, vrstevnice, názvy, turistické/cyklistické trasy, ...) a vygeneruje finálny tile pre A+C+T vrstvy.
Priorita spracovania tiles:
z8-z14: najprv sa spracovávajú tiles na z8, potom z9 ... až nakoniec z14. Pre každú vrstvu sa začína na najmenšej súradnici X (západna strana mapy), pre ktorú sa prechádza od najmenšej súradnice Y (sever) až po maximálnu súradnicu Y (juh). Následne sa nájde ďalšia súradnica X (kde sú zmenené tiles) a postup sa opakuje. Na jednu iteráciu sa spracuje 32 tiles. Ak počas spracovania týchto tiles napr. na z14, pribudnú do fronty prioritnejšie tiles (z13 a menej), tak v ďalšej iterácii sa proces vráti späť a spracuje ich prednostne. Príklad SQL príkazu by mohol byť:
SELECT z, x, y FROM tiles WHERE state="needs_merge" ORDER BY z, x, y LIMIT 0,32;

z15+z16: pre každý zoom beží separátny proces (pre z16 až dva procesy), ktorý postupne spracuje tiles od západu na východ a až po dosiahnutí východnej hranice mapy sa vráti späť na západnú hranicu a postup opakuje (ak medzitým pribudli nejaké nové tiles do fronty). Týmto je zabezpečené rovnomerné spracovanie mapy aj pri vačšom počte tiles pre každý zoom (na z15 je 150 tisíc tiles, na z16 až 600 tisíc, kým na z8 až z14 je dokopy len 51 tisíc tiles).
  1. packaging - proces TileDistribution DPC načíta 128 tiles, spraví balíček, ten rozdistribuuje na cieľové servery a/b/c/d.freemap, kde sa rozbalí. Ak nemá vo fronte k dispozícii 128 tiles, tak sa zastaví na 15 minút.

2. občasné renderovanie

Do tejto oblasti spadá renderovanie názvov obcí/lokalít/rázcestníkov/... a POI, pri ktorých treba zabezpečiť, aby sa neprekrývali na jednolivých zoom-och a taktiež neboli príliš blízko pri sebe. Vzhľadom na veľkú časovú náročnosť výpočtu (kde pre niekoľko stoviek tisíc bodov je potrebné vypočítať vzájomné prekrytie), sa tento proces spúšťa len raz za mesiac.
  1. POI placement - optimalizuje rozmiestnenie a viditeľnosť POI ikony
  2. label placement - optimalizuje rozmiestnenie a viditeľnosť názvov
Príklad náročnosti výpočtu label placement pre Autoatlas, podobné je to aj s výpočtom pre Turistickú a Cyklo mapu
zoomLabels celkovoViditelných LabelsČas výpočtu
882553s
940428213s
10676724613m20s
1129195549017m47s
12427231192327m3s
13780852105970m52s
1414930579361308m35s
15150954102921412m17s
16151573118584493m26s

There are no comments on this page.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki