Pathfinding s využitím PostGIS Prezentuje : Jan Kolář
Téma prezentace Hledání nejkratší cesty s využitím PostgreSQL/PostGIS. Představení vytvořené JAVA knihovny pro řešení této úlohy.
Úvod Projekt byl zadán firmou CAD programy. Úkolem bylo navrhnout řešení hledání nejkratší cesty s využitím DBS PostgreSQL. Výstupem práce je knihovna poskytující funkce pro nalezení optimální cesty. Výsledky práce byly využity v systému eRDIS.
Charakteristika řešení Zaměření na Open source. Zaměření na rychlost. Umožňuje vyhledat trasu v závislosti na měnící se dopravní situaci.
Hledání nejkratší cesty Úloha nalezení nejvhodnější cesty dle zadaných kritérií z místa A do místa B. K řešení se využívají síťové analýzy grafů. Úlohu lze rozložit do 2 kroků: - generování grafu - nalezení cesty v grafu pomocí vhodného algoritmu Vstupní data: vektorová silniční síť. a b e c d f g h i j k l m
Uvedení do praxe Několik dílčích úloh: 1) Výběr vhodných dat => StreetNet? 2) Návrh databáze a import dat. 3) Napsání JAVA tříd pro generování grafu a nalezení cesty. 4) Sestavení aplikace pro testování.
Návrh databáze
Generování grafu Řeší vlastní Java třída (PostgreGraphMaker). Dva přístupy, oba využívají funkcí PostGIS: 1. Na základě tabulky hran - hrany vygenerovány v databázi pomocí vnitřní funkce - vytvoření grafu je rychlé (187 tis. hran =>10 sekund ) - problém: naplnění tabulky zabere pár hodin 2. Na základě tabulky komunikací - hrany vytvořeny až v JAVA aplikaci - vytvoření grafu za 27 sekund - není třeba předpříprava dat! - značné paměťové nároky
Nalezení cesty Navrženo základní grafické rozhraní. Použita implementace Dijsktrova algoritmu knihovny JGraphT. Nalezení cesty je velmi rychlé. Pro graf se 187 tisíci hranami asi 0.05 sekundy. Textový výpis cesty: idCesty: popis: Havlíčkova idCesty: popis: Havlíčkova idCesty: popis: Havlíčkova idCesty: popis: Vápenice idCesty: popis: Školní ………
Grafické rozhraní
Rekonstrukce cesty
JAVA knihovna pro hledání nejkratší cesty Výsledkem projektu je JAVA knihovna. Poskytuje třídy pro generování grafu a hledání cesty s využitím PostgreSQL/PostGIS. Lze použít s libovolnou vrstvou silniční sítě. Bezpečná při práci s vlákny (thread safe). Poskytuje funkce pro serializaci grafu. Umožňuje bezpečně odebrat z hledání určené hrany: - využití při uzavírkách, dopravních nehodách.
Aplikace pro tvorbu a správu dopravních informací. Výsledky byli využity k vytvoření komponent JAVA Bean pro generování grafu a hledání cesty, vystavených v aplikačním serveru.
Děkuji za pozornost
Zdroje JGraphT: About JGraphT. PostGIS: PostGIS Documentation. Berka Milan: Teorie grafů a úlohy na grafech. CEDA: Silniční a uliční sítě. Vlčinský, J. eRDIS. FUKS, Petr. Aplikace pro plánování rozvozu zboží. Diplomová práce. VŠB-TU Ostrava Ochodková Eliška: Grafové algoritmy. ČVUT: Jemný úvod do jazyka PL/pgSQL.