ImagineCup 2008 - City Traffic Designer

Tomáš Herceg       20.05.2008       C#, VB.NET, SQL, Silverlight, ASP.NET/IIS, Databáze, Grafika       12128 zobrazení

Jak již psal Tomáš Jecha na svém blogu, přihlásili jsme se s naším projektem City Traffic Designer do soutěže ImagineCup 2008 pořádanou společností Microsoft. Dostali jsme se až do celorepublikového kola pořádaného 15. května 2008, kde jsme získali 2. místo. Trochu nás mrzelo, že jsme to nevyhráli, bylo to jen o chlup, ale konkurence byla letos poměrně veliká. Tento ročník se soutěže zúčastnilo 550 lidí.

Na projektu jsme pracovali 4 - Tomáš Herceg, Tomáš Jecha, Tomáš Slavíček a Jan Šebetovský, zabralo nám to něco přes 2 měsíce poměrně intenzivního vývoje. Využili jsme mnoho různých techologií, hlavně Visual Studio 2008, .NET Framework 3.5, ASP.NET, Silverlight, SQL Server 2005 a mnoho dalšího.

 

Specifikace projektu City Traffic Designer

V dnešní době řeší většina velkých měst vážné problémy s dopravní situací. Automobilů neustále přibývá a kapacity silnic nestačí, takže se na mnoha místech tvoří kolony a dopravní zácpy, což má neblahý vliv na naše životní prostředí. To byl jeden z důvodů, proč jsme se rozhodli vytvořit projekt City Traffic Designer.

Jedná se o systém pro simulaci a plánování provozu silniční dopravy ve městech, jehož cílem je poskytnout snadno ovladatelný, ale dostatečně silný nástroj pro simulaci vytížení silnic, čekacích dob, ale i znečištění a hluku v okolí těchto pozemních komunikací. Tento systém může pomoci například navrhovat nové cesty (např. obchvaty), umožňuje sledovat změny dopravní situace při uzavření ulice či křižovatky atd.

Myšlenka projektu

Aby byl City Traffic Designer použitelný i v reálných scénářích, je zapotřebí robustnost a snadná rozšířitelnost. Proto jsme při vývoji nahlíželi na projekt těmito pohledy:

Využití projektu

Designér - klientská aplikace

Základem celého systému je klientská aplikace, ve které se jednak vytváří a upravuje mapa města, a ve které se poté provádí samotná simulace provozu. Editor map podporuje 2 režimy zobrazení – letecký pohled shora pro modelování silnic a interaktivní 3D zobrazení, ve kterém jsou vidět podrobně konkrétní místa a křižovatky.

Pro každou mapu lze nastavit podkladové snímky, přes které se silnice zobrazují, což usnadňuje orientaci v mapě. Lze použít i letecké snímky terénu, takže vše vypadá realisticky. Díky tomu je možné jednoduše a pro účely simulace dostatečně přesně pokládat silnice tak, aby odpovídaly skutečnosti.

Do mapy lze přidávat silnice s volitelným počtem pruhů v obou směrech, křižovatky s detailní specifikací jízdních pruhů a hlavní silnice, možností přidání semaforů a přesnému nastavování jejich časování, dále pak kruhové objezdy, nájezdy a sjezdy či přechody pro chodce. Každému segmentu silniční sítě je možno nastavit přesné parametry, aby byly pokryty veškeré běžné potřeby.

Editor map

Nastavování semaforů

Ovládání a uživatelské rozhraní klientské aplikace je intuitivní a příjemné na používání. Nejdůležitějším prvkem je bezesporu pás karet Ribbon známý ze sady Microsoft Office 2007, který velice zpříjemňuje a usnadňuje práci s aplikací. Kromě toho využíváme mnoho komponent, které vylepšují celkový vizuální dojem z uživatelského prostředí díky použití vlastních grafických stylů. GUI je ale navrženo tak, aby bylo nejen hezké na pohled, ale i snadno a kvalitně ovladatelné, a to i pomocí klávesnice, což zvyšuje produktivitu práce.

Vlastnosti mapy a podkladů

V klientské aplikaci se také provádí samotná simulace dopravy. Každé simulaci se dají přesně nastavit veškeré parametry, aby výsledky co nejvíce odpovídaly realitě. Samozřejmostí je možnost určení počtu aut na jednotlivých vjezdech a výjezdech z města, množství aut, které po městě jezdí náhodně (což simuluje jízdy obyvatel města například do práce či do supermarketů), množství lehké a těžké nákladní dopravy, počty aut v různých denních dobách atd. Po zadání denní doby, která se má simulovat, a nastavení všech parametrů, je možné simulaci spustit a sledovat její průběh.

Během simulace je možné v zadaných časových intervalech sbírat mezivýsledky (počet aut, která daným místem projela, čekací doby, hluk, znečištění atd.), aby byl zaznamenán průběh a vývoj hustoty provozu. Je samozřejmě možné měnit rychlost simulace, či simulaci úplně pozastavit a případně se podívat na konkrétní problémová místa a zobrazit si podrobné informace o každé křižovatce či silnici.

3D náhled simulace

Ve 3D náhledu jsou přesně vidět jednotlivé křižovatky včetně semaforů a dopravních značek. Jako podklady lze použít leteckou mapu a pokud se přidá i výšková mapa, je možné zobrazit i kopce a údolí přesně tak, jak vypadají ve skutečnosti. Během simulace je samozřejmě možné zobrazovat aktuální informace o různých místech, např. kolik aut na daném místě projelo od začátku simulace, jaká je v daném směru průměrná rychlost atd. Ve 3D je samozřejmě umožněno nastavovat přesně pozice kamery a sledovat situaci z různých vzdáleností a úhlů.

Simulace provozu

Vytváření mapy v editoru je velmi intuitivní. Pomocí kruhové nabídky, ve které se zobrazují nejběžnější úkoly, je možné vytvářet silnice, spojovat a rozpojovat je, připojovat křižovatky, měnit geometrii jednotlivých částí atd. Detaily lze nastavit v bočním panelu, zvláště možnosti nastavené křižovatek jsou velice rozsáhlé. Lze přesně měnit počty jízdních pruhů, které do křižovatky vcházejí a vycházejí, je samozřejmě možné specifikovat, ze kterého jízdního pruhu se kam může odbočit, a do detailu lze také připravit časový plán pro semafory, které pak provoz na křižovatce řídí.

Kruhové menu v editoru

Simulace provozu na kruhovém objezdu

Uživatel - webový portál

Po dokončení simulace se data mohou odeslat webové aplikaci, což je druhá část celého systému. Tato webová aplikace zobrazuje mapy oblastí a výsledky všech provedených simulací, přesné statistiky a grafy počtů vozidel na konkrétních místech, dále pak čekací doby, znečištění a hluk v okolí komunikací atd.

Je možné nechat si vygenerovat přesné mapy a grafy nejvytíženějších křižovatek, dále třeba míst, kde došlo k nejvyšší koncentraci emisí či hluku, a tyto výsledky je možné prezentovat do veřejné sekce, ke které budou mít přístup běžní uživatelé Internetu.

Pomocí technologie AJAX je možné zobrazovat aktuální informace o daném místě v mapě bez klikání – stačí kurzor myši podržet nad nějakým místem a za chvíli se objeví požadované informace o hustotě provozu, hluku a znečištění. Vše je snadno a jednoduše ovladatelné, ale zároveň produktivní. Pro zobrazování map využíváme technologii Silverlight, která umožňuje udělat uživatelsky přívětivější rozhraní.

Webové rozhraní

Webová aplikace je také centralizované úložiště map a výsledků simulací, díky čemuž je možné tyto mapy sdílet mezi více uživateli klientské aplikace. Není tedy nutné, aby si uživatelé mapy složitě předávali, vše se totiž ukládá a načítá buď přes webové služby API serveru, či přímo do databáze.

Administrátor - konfigurace modulů aplikace

Práce administrátora pak spočívá v naplánování a nasazení řešení (umístění SQL serveru, bezpečnost přenosů dat, protokol komunikace, webový server – všechny tyto komponenty jsou nastavitelné pomocí XML).

Konfigurační systém

Aby nebyla konfigurace tak složitá, je možné k sestavování aplikačních balíčků použít nástroj Solution Designer. Pomocí něj lze vizuálně vytvořit jak stand-alone aplikaci pro jeden počítač, tak i podnikové řešení pro intranetovou síť s několika servery.

Tento nástroj obsahuje implicitně jen dvě koncové aplikace (klientská aplikace a webový portál), ale vývojář jí může snadno rozšířit pomocí XML o svoje vlastní moduly a tak nabídnout administrátorovi, který nemusí mít programátorské znalosti, možnost nasadit další funkcionalitu.

Programátor - API a struktura systému

Vývojář má pak možnost využívat silného API s vestavěným simulačním, vykreslovacím a synchronizačním jádrem. Architektura systému je navržena co nejrobustněji a s ohledem na budoucí vývoj a rozšiřitelnost. Důkazem vysoké použitelnosti je i fakt, že nad API byla napsána kompletní klientská aplikace i webový portál.

Jádro aplikace 

Klientská část

  • Synchronizační jádro – dokáže odesílat provedené změny v mapách na server, automaticky slučovat změny, načítat seznamy a vůbec zajistit ukládání a načítání dat z databáze
  • Vykreslovací jádro – dokáže vykreslovat mapy a grafy z údajů načtených ze serveru
  • Simulační jádro – provádí nad mapou simulace, počítá statistiky a řídí auta na mapě
  • Server API – tato komponenta dokáže API rozdělit na klientskou a serverovou část a zajistit tak komunikaci přes síť i pro větší množství klientů. Využití server API lze aktivovat pomocí XML konfigurace, není nutný zásah do kódu.
  • Publikační jádro – slouží k publikování dat pro webový portál přímo ze simulací a map
  • Testovací framework – dává možnost snadno testovat napsané doplňky a přesně sledovat průběh jednotlivých simulačních kroků
  • Přihlašovací jádro – řeší přihlašování do systému, role a zabezpečení
  • Pomocné komponenty – zjednodušují vytváření složitějších křižovatek, silnic, simulačních nastavení atp.

Všechny tyto části jsou přehledně rozděleny do jmenných prostorů API knihovny a disponují XML komentáři.

Použité technologie

Pro vývoj systému City Traffic Designer jsme použili programovací jazyk C# verze 3.0. Pro renderování 3D scén se využívá zobrazování XNA Framework, pro vykreslování 2D pohledů využíváme rozhraní GDI+. Komunikační jádro API je založeno na technologii Windows Communication Foundation.

Webová aplikace je napsána v jazyce Visual Basic .NET a v ASP.NET (s AJAX rozšířeními). Hojně využívá i technologii Silverlight. Data se ukládají na SQL Server 2005. Ve všech částech využíváme také mnoho funkcí z nového .NET Frameworku 3.5, především Extension Methods a LINQ. Na několika místech používáme i technologii Windows Presentation Foundation. Pro větší komfort uživatele jsme implementovali funkce řady grafických GUI knihoven, včetně pásu karet Ribbon představeného v Office 2007.

Pro samotný vývoj využíváme Visual Studio 2008 a Team Foundation Server pro verzování zdrojových kódů a Microsoft Office Groove pro sdílení nejrůznějších dokumentů v rámci týmu.

Simulace provozu v městě Třebíči

Pro demonstrační a testovací účely jsme zpracovali mapu silnic v městě Třebíči. Na ní jsme celý simulační model otestovali a odladili. Do mapy jsme na každý vjezd a výjezd nastavili průměrný počet aut, která tudy projedou za den (statistické údaje nám poskytla Správa a údržba silnic Třebíč), a prováděli jsme simulaci. Místa, kde se v simulátoru tvořily dopravní zácpy ve špičce (mezi 14. a 15. hodinou), odpovídala skutečné situaci ve městě. Zvláště centrum města bývá ve špičce ucpané, tvoří se dlouhé řady aut před semafory. Další dopravní špička nastává mezi 16. a 17. hodinou, i v tuto dobu zácpy předpovídané simulátorem odpovídaly realitě.

Simulační mapa města Třebíče

Kde může simulátor pomoci?

Statistiky udávají, že za 25 let se zvýší počet aut přibližně 1,3krát. V mapě je možné samozřejmě nastavit počty aut 1,3x vyšší a tak se podívat, jak může situace vypadat za 25 let. Takových příkladů jsou stovky. Do mapy můžeme přidat obchvat města, který se teprve plánuje, a ihned vidíme, jestli opravdu pomůže zlepšit dopravní situaci v centru.

Je možné zjistit, kde budou vznikat zácpy, když se uspořádá rockový koncert, na který se sjedou tisíce lidí, dá se nasimulovat, co by se stalo, když bude nějaká křižovatka či ulice muset být uzavřena. Simulace může pomoci i při nastavení časování semaforů tak, aby byl průjezd městem plynulý a člověk nečekal na zelenou na každé křižovatce.

 3D náhled

Shrnutí

Snažili jsme se navrhnout systém, který by mohl pomoci odborníkům při plánování omezení provozu, řešení nových komunikací a obchvatů, ale zároveň by dokázal informovat širší veřejnost dostatečně srozumitelnou formou o problémech s tím spojených. Díky synchronizačnímu jádru může na jedné mapě pracovat více lidí najednou ve stejný čas a vytvořit tak podmínky pro práci i větších týmů.

Díky striktnímu rozdělení částí aplikace na uživatele / designéra / administrátora / vývojáře je možné realizovat často požadované řešení, kdy s programem pracuje řada lidí, administrátor se stará o samotný chod systému a vývojář může být externista, který administrátorovi předává hotové moduly.

Navíc v současné době jednáme s lidmi, kteří by v budoucnu mohli produkt využívat a snažíme se reagovat na jejich názory a postřehy. Naším cílem je, aby byl systém plně využitelný i mimo testovací a předváděcí rovinu.

City Traffic Designer má velký potenciál a je schopen dát relativně přesnou odpověď na mnoho různých otázek. Simulační model byl navržen tak, aby počítal s různým chováním řidičů, s různými rozměry a rychlostními možnostmi aut a samozřejmě s přesnými počty aut na jednotlivých trasách, takže výsledky dobře odpovídají realitě.

Na závěr bychom rádi uvedli několik firem a organizací, kteří nám s realizací pomohli:

  • FOSS Software – s touto zahraniční firmou jsme navázali kontakt a náš projekt se jim zdál natolik zajímavý, že nám poskytli zcela zdarma komponentu ElegantRibbon pro tvorbu pásů karet.
  • Český zeměměřičský úřad – ochotně nám poskytnuli mapové podklady a ortofotomapy.
  • Správa a údržba silnic Třebíč – poskytnutí statistik počtů aut jako přesný podklad pro simulaci provozu ve městě Třebíči.
  • T-mapy s.r.o. – poskytnutí výškové mapy města Třebíče a okolí.

 City Traffic Designer

 

hodnocení článku

0       Hodnotit mohou jen registrované uživatelé.

 

Nový příspěvek

 

Diskuse: ImagineCup 2008 - City Traffic Designer

teda jako obcasny programator vim ze vydat takovou vec zadarmo je nestesti, ale i tak lituju ze tu neni download. hrozne mne laka si s tim hrat.

co s tim jinak planujete? pripada mi to jako dost kvalitni software na to aby ste se tomu po soutezi uz nevenovali. nespolupracujete s nejakou spolecnosti na dodelani?

Kucir, fanth(a)email.cz

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: ImagineCup 2008 - City Traffic Designer

Dá se někde zjistit co bylo na prvním a na třetím místě a případně nějaké další informace o tom?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: ImagineCup 2008 - City Traffic Designer

Chtěl bych vám pogratulovat k druhému místu. Opravdu je vaše aplikace výborně zpracována a myslím, že má velký potenciál. Myslím, že města by takovéto aplikace přivítali. Vycházím ze situace u nás ve městě (České Budějovice). Údajně je to nejvíce problematické město (co se dopravy týče) po Praze. Vůbec se nedivím, autem se dostat přes město je porod, člověk jede v koloně. Navíc kvůli stavbě vlakového koridoru budou velká omezení v centru a doprava asi zkolabuje. Proto se chci zeptat, nebudete se snažit nabízet tuto aplikaci "na radnicích"?

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Vlastně jsme se o to už snažili. Program by potřeboval ale ještě intenzivní vývoj aby byl použitelný v reálném prostředí. Pořád tam chybí řada funkcí.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: ImagineCup 2008 - City Traffic Designer

Dle vaší recence to vypadá velice pěkně. Jenom bych se tak pro zajímavost pozeptal, když v závěru píšete o tom simulování skutečného chování řidičů - jaké procento řidičů jste nastavili, že nedodržují předepsanou rychlost (resp. nastavili jste tam taky nějaké, kteří ji dodržují?) a jaké procento řidičů jezdí na červenou? :-)

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Předepsaná rychlost se dodržuje, dá se nastavit, aby ji určité procento porušovalo. Na červenou se nejezdí.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Je tam určitě řada nedodělávek a vůbec spousta chybějícíh věcí, které by dokázaly simulaci přiblížit ještě blíže k realitě. Avšak jedná se jen o "platformu" pro vývoj dopravních simulací, která rozhodně neobsahuje vše co by měla.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ahoj :-) Rozhodne to vypada zajimavy projekt.

Co se prezentovani tyka, tak myslim, ze by bylo docela zajimavy prezentovat to na MFF vramci Programatorskych veceru. Urcite by se to tam hodilo, protoze tech zajimavych technologii to pouziva vic nez dost a ukazat jak to funguje dohromady se vzdycky hodi.

Tenhle semestr se to uz (asi :-)) nestihne, ale pristi skolni rok by to urcite stalo za to.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

(Dodatek k predchozimu - jak tu neni kolonka na jmeno tak jsem se zapomel podepsat :-) ).

Tomas Petricek

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No, odprezentovat by se to určitě dalo, zajímavé by to určitě bylo. Příští semestr se domluvíme.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: ImagineCup 2008 - City Traffic Designer

Ahoj, chystáš se to někde odprezentovat?

A co download, zvlášť tý třebíče, to by mě zajímalo? :)

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Prezentovali jsme na to na soutěži, ke stažení to zatím pravděpodobně nebude.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback