Most Generála Lišky
konfigurace sběru
Původní podklad zpřístupněný přímo na webu.
// Konfigurace sběru — body a území dle doprava/docs/zadani-sber-flow-d10.md
export interface Bod {
id: string;
lat: number;
lon: number;
}
// Dálnice D10, exit Stará Boleslav → napojení na D0 u Satalic (ověřeno 1. 8. 2026, vše FRC0)
export const BODY_D10: Bod[] = [
{ id: "D10_00_StBoleslav_exit", lat: 50.19667, lon: 14.69159 },
{ id: "D10_02", lat: 50.20261, lon: 14.69212 },
{ id: "D10_03", lat: 50.1928, lon: 14.69425 },
{ id: "D10_04", lat: 50.18371, lon: 14.69516 },
{ id: "D10_05_Zapy", lat: 50.17567, lon: 14.68406 },
{ id: "D10_06", lat: 50.16939, lon: 14.6735 },
{ id: "D10_07", lat: 50.16148, lon: 14.6654 },
{ id: "D10_08_Drevcice", lat: 50.15092, lon: 14.65706 },
{ id: "D10_09", lat: 50.14201, lon: 14.64857 },
{ id: "D10_10", lat: 50.13494, lon: 14.63869 },
{ id: "D10_11_Radonice", lat: 50.12923, lon: 14.62689 },
{ id: "D10_12", lat: 50.12511, lon: 14.61377 },
{ id: "D10_13", lat: 50.12206, lon: 14.5998 },
{ id: "D10_14_Satalice_D0", lat: 50.11855, lon: 14.58558 },
];
// Kontrolní profily ve městě — test hypotézy o odklonu z D10.
// Souřadnice revidovány 1. 8. 2026 proti OSM síti (původní body ze zadání
// ležely mimo ulice a TomTom je přichytával k jiným komunikacím);
// všechny ověřeny přes flowSegmentData se snapem do 11 m.
export const BODY_MESTO: Bod[] = [
{ id: "MOST_Labe", lat: 50.19391, lon: 14.67143 }, // most M. Švabinského
{ id: "CENTRUM_Masarykovo", lat: 50.18535, lon: 14.65976 },
{ id: "PRAZSKA_vyjezd", lat: 50.17373, lon: 14.6468 }, // II/610 směr Dřevčice/Praha
{ id: "BOLESLAVSKA_Melnicka", lat: 50.1964, lon: 14.67515 },
{ id: "ZAPY_krizovatka", lat: 50.17004, lon: 14.70766 }, // Hlavní (II/101) u křižovatky
// Nahrazuje bod BRANDYS_nadrazi (50.18357, 14.65528), který ležel 171 m od
// segmentu, na který ho TomTom přichytával — měřil tedy jinou komunikaci,
// než měl. Nová poloha je uzel Královická × Zápská ze sit.geojson;
// flowSegmentData se sem snapuje na 4 m a vrací rameno Královické (II/101)
// směrem k centru. Zápská (FRC4) ani Královická od Zápů se tímto bodem
// neměří — na ty by bylo potřeba přidat body zvlášť (ověřeno 1. 8. 2026).
{ id: "KRALOVICKA_ZAPSKA", lat: 50.18476, lon: 14.66564 },
];
// Doplňkové profily okolních tahů (přidáno 1. 8. 2026)
export const BODY_OKOLI: Bod[] = [
{ id: "KOSTELECKA_101", lat: 50.19098, lon: 14.64719 }, // II/101 směr Kostelec n. L.
{ id: "KRALOVICKA_101", lat: 50.17778, lon: 14.68881 }, // II/101 Brandýs → Zápy/D10
{ id: "TOUSENSKA_245", lat: 50.15788, lon: 14.74023 }, // II/245 Zápy → Lázně Toušeň
{ id: "STBOLESLAV_610_D10", lat: 50.20378, lon: 14.68889 }, // II/610 u exitu 14
];
export const BODY: Bod[] = [...BODY_D10, ...BODY_MESTO, ...BODY_OKOLI];
// Dojezdové trasy (Routing API, měřeno v obou směrech à 30 min v denní době).
// 7 tras × 2 směry × 34 cyklů/den ≈ 14,5 k volání/měsíc (limit 20 k zdarma).
export interface Trasa {
id: string;
nazev: string;
od: [number, number]; // lat, lon
cil: [number, number];
}
const DREVCICKA: [number, number] = [50.1719, 14.64918];
const ERBENOVA: [number, number] = [50.20122, 14.68339];
const MICHALOVICKA: [number, number] = [50.18677, 14.65908];
const PR_LETNANY: [number, number] = [50.12566, 14.51462];
const PR_CERNY_MOST: [number, number] = [50.10999, 14.57899];
const ZLATNICKA: [number, number] = [50.09093, 14.43204];
export const TRASY: Trasa[] = [
{ id: "DREV_LETNANY", nazev: "Dřevčická → P+R Letňany", od: DREVCICKA, cil: PR_LETNANY },
{ id: "DREV_CERNYMOST", nazev: "Dřevčická → P+R Černý Most", od: DREVCICKA, cil: PR_CERNY_MOST },
{ id: "ERBEN_DREV", nazev: "Erbenova → Dřevčická (přes město)", od: ERBENOVA, cil: DREVCICKA },
{ id: "ERBEN_LETNANY", nazev: "Erbenova → P+R Letňany", od: ERBENOVA, cil: PR_LETNANY },
{ id: "ERBEN_CERNYMOST", nazev: "Erbenova → P+R Černý Most", od: ERBENOVA, cil: PR_CERNY_MOST },
{ id: "MICH_LETNANY", nazev: "Michalovická → P+R Letňany", od: MICHALOVICKA, cil: PR_LETNANY },
{ id: "MICH_ZLATNICKA", nazev: "Michalovická → Zlatnická 12 (Praha 1)", od: MICHALOVICKA, cil: ZLATNICKA },
];
// Incidenty: koridor D10 (Satalice-Brandýsko), přivaděč Kbelská a hlavní tahy
// v okolí (minLon,minLat,maxLon,maxLat). Záměrně NEzahrnuje centrum Prahy -
// pravidlo "kolony a nehody kdekoli" by jinak zaplavilo živou vrstvu
// pražskými kolonami bez vztahu k Brandýsku.
export const BBOX_INCIDENTY = "14.50,50.08,14.90,50.32";
// Jádrové území Brandýska (bbox ze zadání) — v živé vrstvě se z něj ukazuje vše
export const BBOX_JADRO = { minLon: 14.55, minLat: 50.09, maxLon: 14.8, maxLat: 50.25 };
// Hlavní tahy: incidenty mimo jádro se v živé vrstvě ukazují jen na nich.
// TomTom vrací čísla bez třídy ("610", "101") a dálnice s prefixem ("D10", "D0").
export const HLAVNI_TAHY = new Set([
"D0", "D10", "D11", "E55", "E65", "E67",
"10", "9", "16", "101", "244", "245", "331", "610", "611",
]);
// Kategorie incidentů (iconCategory), které se v živé vrstvě ukazují vždy:
// 1 = nehoda, 6 = kolona
export const KATEGORIE_VZDY = new Set([1, 6]);
// Vektorové flow dlaždice: celoplošný záznam hlavních tahů širšího okolí.
// z11 nad tímto bboxem = 6 dlaždic × 2 styly = 12 requestů/cyklus.
// Pozor na limit 50 subrequestů/invokaci (free plán Workers) — při zvětšování
// bboxu nebo zoomu přepočítat: flow 24 + incidenty 1 + dlaždice 12 + ~5 R2 operací.
export const DLAZDICE = {
zoom: 11,
minLon: 14.45,
minLat: 50.08,
maxLon: 14.9,
maxLat: 50.28,
styly: ["absolute", "relative"] as const,
};