Všechny projekty

Pro klienta · 2025 – dosud Projekt 3 z 20

Miletínská dopravní

Nehody, uzávěry, zásahy hasičů a počasí v Královéhradeckém kraji na jedné mapě.

Otevřít web

Ověřený stav webu: Běží, odezva 37 ms,

Mapa Královéhradeckého kraje s barevnými body nehod, uzávěr a zásahů a vedle ní živý přehled výjezdů hasičů

Ve zkratce

Role
Návrh, vývoj a provoz
Období
2025 – dosud
Stav
V provozu
Technologie
9 technologií
Klient
Miletínská dopravní

Miletínská dopravní shromažďuje na jednom místě nehody, uzávěry, zásahy hasičů a počasí v Královéhradeckém kraji. Stojí na otevřených datech státu a OpenStreetMap a většina práce je schovaná pod mapou: v převodu souřadnic, v dohledávání polohy a v tom, jak web šetří cizí služby.

Proč je to technicky zajímavé

  • Jedna mapa z více zdrojů. Mapa (Leaflet nad OpenStreetMap) spojuje výjezdy z veřejného API Hasičského záchranného sboru s body přidanými v administraci a převádí je do jednoho tvaru, se kterým pracuje mapa i přehledy.
  • Kamery podle kilometrovníků. Dopravní kamery ÚAMK se na mapu umisťují podle silničních kilometrovníků z OpenStreetMap, které web dohledává přes Overpass API.
  • Počasí z nejbližší živé stanice. K vybrané obci web najde nejbližší automatickou stanici ČHMÚ, která právě posílá data, a ukáže poslední měření z OpenData ČHMÚ – přednostně desetiminutové, jinak hodinové.
  • Administrace jako jednostránková aplikace nad vlastním API: příspěvky s editorem, zdroje, reklamní plochy, sponzoři, uživatelé a role s oprávněními pro jednotlivé akce.

Překážky a jak jsem je vyřešil

  • Poledník o 17° 40′ vedle. Obce se importují z RÚIAN: skript proudově čte velký soubor VFR XML přes XMLReader a převádí souřadnice z S-JTSK (Křovákovo zobrazení) do WGS84. Převod nejdřív vracel zeměpisnou délku posunutou o rozdíl mezi ferrským a greenwichským poledníkem; oprava je popsaná přímo ve skriptu. Pořadí os navíc v datech není vždy stejné, proto skript zkusí obě varianty a vezme tu, která leží v Česku.
  • Výjezdy bez polohy. Část událostí z feedu hasičů souřadnice nemá. Web je nejdřív umístí do středu obce podle vlastní tabulky z RÚIAN – rychle a bez cizích limitů – a přesnější polohu přes Nominatim dohledává jen u několika nejnovějších událostí na jeden požadavek, s dlouhou mezipamětí. Souřadnice mimo Česko nebo s prohozenými osami zahodí.
  • Služby, které občas nestíhají. Overpass API při zátěži přiškrcuje provoz, proto se dotazy střídají mezi několika servery a prázdný výsledek se v mezipaměti drží jen krátce, aby výpadek nezůstal na mapě.
  • Nejednotná data. Feed hasičů posílá některá pole jako text a jiná jako objekty (třeba kraj nebo okres). Normalizace je převede na jeden tvar dřív, než se dostanou k mapě.

Co není vidět

  • Oprávnění u každé akce. Administrace kontroluje role a oprávnění u každého volání API, ne jen v menu, a každou změnu zapisuje do auditního záznamu.
  • Ověřené spojení. Spojení s API hasičů se ověřuje proti připnutému řetězci certifikátů.
  • Ohleduplnost k cizím službám. Nominatim, Overpass i ČHMÚ se volají přes mezipaměť, aby je web zbytečně nezatěžoval.

Technologie

  • Nette 3 a Latte na vlastní kostře Nette Web Skeleton.
  • MariaDB – příspěvky, události, uživatelé, role a auditní záznam.
  • Leaflet a OpenStreetMap, Overpass API a Nominatim – mapa, kilometrovníky a geokódování.
  • Otevřená data: RÚIAN, OpenData ČHMÚ a API HZS Královéhradeckého kraje.
  • Quill – editor příspěvků.

Postaveno na

  • PHP 8.2
  • Nette
  • MariaDB
  • Leaflet
  • OpenStreetMap
  • Overpass API
  • RÚIAN
  • ČHMÚ OpenData
  • Quill

Klávesové zkratky.

Klávesové zkratky webu. Při psaní do formuláře nereagují.

Web

?
Tahle nápověda
g
Mřížka 12 sloupců, komponenty a měření stránky
d
Vzhled: podle systému, světlý, tmavý, Linkin Park
Ctrl P
Vytisknout CV místo webu
Esc
Zavřít dialog nebo mřížku

Modrou tečku za jménem v úvodu jde chytit a hodit.

Linkin Park

l setlist lp
Setlist, skladby po albech
papercut
Přes stránku se roztrhne papír
numb
Web na pár vteřin otupí
faint
Stránka omdlí a zase se probere
meteora
Meteorický roj a přímý zásah do tečky za jménem
fromzero emily
Web zhasne do nuly a znovu se zrodí, s díky pro Emily Armstrong
concert koncert
Koncert: web projede barvy všech alb
castleofglass
Stránka zesklovatí, praskne a sklo se sesype
iridescent
Nadpisy a tečky se na chvíli přelijí duhou
breakingthehabit
Co je vidět, se rozsype a zase složí
intheend
Závěrečné titulky jako v kině
victim morethevictim
Web se rozpadne v glitchi a zůstane rozladěný (do obnovení, dalšího slova nebo Esc)
finalmasquerade
Škraboška přes celý web, kamera proletí okem
lost
Odchod na stránku 404

Slova napište kdekoli mimo formulář, velikost písmen ani mezery nevadí. S omezeným pohybem přijde jen krátké oznámení.

Na telefonu otevře setlist pět ťuknutí na modrou tečku za jménem.