Tomáš Skopal Tomas.Skopal@vsb.cz GIS řízený toky dat Tomáš Skopal Tomas.Skopal@vsb.cz
Toky dat zdůraznění toků dat v IS koncept DFD (data flow diagrams) dekompozice systému: orientovaný graf elementy (uzly) a toky (hrany) monolitický systém
Příklad – internetový obchod Informační systém – internetové knihkupectví subIS3 – systém skladu subIS1 – objednávkový systém subIS2 – účtovací systém element 1 element 2 element 4 element 6 element 3 element 5 uživatel výstup do nekompatibilních IS
Pipe – definice Pipe: trojice (I, O, S) Formalizace elementu a souvisejících toků dat jako jeden objekt Pipe. Pipe: trojice (I, O, S) posloupnost vstupů I (vstupní toky dat) posloupnost výstupů O (výstupní toky dat) posloupnost sémantických funkcí S (pro každý výstup jedna funkce – transformace dat ze vstupů na výstup) Pipe black-box vstup #1 vstup #2 vstup #3 výstup #1 výstup #2
Elementární příklady – Pipe S1: O2 I1 – I2 5 3 2
Elementární příklady – Pipe S1: O1 slova “a*” S2: O2 slova “*b*” automat, bota, abonent automat, abonent bota,
Konfigurace sítě Pipes Konfiguruje klientská aplikace: a) vytvoření instancí Pipes (lokálně, vzdáleně) b) vytvoření topologie (propojení Pipes do sítě) c) nastavení lokálních stavů Pipes
Prostředky konfigurace Rozhraní pro konfiguraci (lokální nastavení) Komunikační protokol (sdílené rozhraní) a) prostředky k propojení Pipes b) prostředky k analýze (dotazy na stav) ISharedProtocol pipe B ICfg2 pipe A ICfg1
Příklad – konfig. sítě Pipes Instance Pipes Propojení Lokální nastavení automat, bota, abonent bota, abonent Filter pipe File pipe Print pipe Soubor „slova.txt“ Tiskárna „HP LaserJet“ slova: „a*“, „*b*“
Dotazy na obsah Pipe a) klient položí Pipe (resp. jejímu výstupu) v síti požadavek na vrácení stavu b) Pipe zpracuje data na svých vstupech a výsledek poskytne na výstup c) pokud nejsou data na vstupech připravena, dotaz se vyvolá na vstupující Pipes (směrem ke kořenům sítě) A C B D E 1 3 4 5 2 6
Události změny obsahu Pipe v Pipe proběhne z nějakého důvodu změna stavu (vnější změna, změna vyvolaná po vstupech) Pipe vyhodnotí vliv změny na obsah svých výstupů a v případě změny vyšle událost změny (sérii událostí) po dotčených výstupech níže do závislých Pipes C B D E 1 2 5 6 3 4
Propagace modifikací do Pipe se pošle požadavek na vložení/modifikaci dat Pipe vyhodnotí relevanci tohoto požadavku a přepošle požadavek do příslušných vstupujících Pipes kořenové Pipes aktualizují (změní) svůj obsah a následně vyšlou sérii událostí změny obsahu A C B D E 2 3 1
Aplikace pro GIS (PG.NET) Specifikace PG.NET – (Piped GIS) a implementace katalogu Pipes pro GIS, na platformě MS .NET Mezi Pipes „tečou“ geografické entity (features) Feature: atributy (alespoň ID) a geometrie Např.: silnice, potrubí, parcela, strom Class=1 ID=2 Class=7 ID=1 Class=3 ID=1
Katalog Pipes (PG.NET) Prvky z ADO databáze „Brána“ do sítě Pipes ADOStorePipe ADO databáze Prvky z ADO databáze „Brána“ do sítě Pipes UnionPipe Skládá více „toků“ do jediného Slučuje zdroje dat
Katalog Pipes (PG.NET) AttributeFilterPipe class=1 class=2 class=3 Filtruje vstupní tok podle atributů na více výstupů Separuje „toky“ podle atributových kritérií IntersectFilterPipe Propouští ty prvky, které se dotýkají jiných
Katalog Pipes (PG.NET) Vytváří nové prvky z geometrií vstupních prvků BufferZonePipe Vytváří nové prvky z geometrií vstupních prvků Obálky geometrií Koncová Pipe (klient) zároveň GUI kontrol n vstupů = n vrstev v mapě
Příklad – marketing kabel. TV O1 cond: class=„kabely“ O2 cond: class=„budovy“ AttributeFilterPipe BufferZonePipe IntersectFilterPipe „report client“ kabely budovy dotčené budovy obálky okolí = 10 metrů (nemá lokální stav) Ad1) soubor „results.txt“ Ad2) ConnectionString do DB Ad3) mapa v okně
Příklad – marketing VB klient Dim mAttrPipe As New AttributeFilterPipe Dim mBufferPipe As New BufferZonePipe Dim mIntersectPipe As New IntersectFilterPipe Dim mReportPipe As New <custom pipe class>
Příklad – marketing VB klient Dim mAttrPipe As New AttributeFilterPipe Dim mBufferPipe As New BufferZonePipe Dim mIntersectPipe As New IntersectFilterPipe Dim mReportPipe As New <custom pipe class> Set mAttrPipe.Input = <any source pipe output> mAttrPipe.AddCondition(“class=‘kabely’”): mAttrPipe.AddCondition(“class=‘budovy’”)
Příklad – marketing VB klient Dim mAttrPipe As New AttributeFilterPipe Dim mBufferPipe As New BufferZonePipe Dim mIntersectPipe As New IntersectFilterPipe Dim mReportPipe As New <custom pipe class> Set mAttrPipe.Input = <any source pipe output> mAttrPipe.AddCondition(“class=‘kabely’”): mAttrPipe.AddCondition(“class=‘budovy’”) Set mBufferPipe.Input = mAttrPipe.Output(1): mBufferPipe.Tolerance = 10
Příklad – marketing VB klient Dim mAttrPipe As New AttributeFilterPipe Dim mBufferPipe As New BufferZonePipe Dim mIntersectPipe As New IntersectFilterPipe Dim mReportPipe As New <custom pipe class> Set mAttrPipe.Input = <any source pipe output> mAttrPipe.AddCondition(“class=‘kabely’”): mAttrPipe.AddCondition(“class=‘budovy’”) Set mBufferPipe.Input = mAttrPipe.Output(1): mBufferPipe.Tolerance = 10 Set mIntersectPipe.Input(1) = mBufferPipe.Output Set mIntersectPipe.Input(2) = mAttrPipe.Output(2)
Příklad – marketing VB klient Dim mAttrPipe As New AttributeFilterPipe Dim mBufferPipe As New BufferZonePipe Dim mIntersectPipe As New IntersectFilterPipe Dim mReportPipe As New <custom pipe class> Set mAttrPipe.Input = <any source pipe output> mAttrPipe.AddCondition(“class=‘kabely’”): mAttrPipe.AddCondition(“class=‘budovy’”) Set mBufferPipe.Input = mAttrPipe.Output(1): mBufferPipe.Tolerance = 10 Set mIntersectPipe.Input(1) = mBufferPipe.Output Set mIntersectPipe.Input(2) = mAttrPipe.Output(2) Set mReportPipe.Input = mIntersectPipe.Output mReportPipe.<cfg method call>
Příklad – marketing VB klient Dim mAttrPipe As New AttributeFilterPipe Dim mBufferPipe As New BufferZonePipe Dim mIntersectPipe As New IntersectFilterPipe Dim mReportPipe As New <custom pipe class> Set mAttrPipe.Input = <any source pipe output> mAttrPipe.AddCondition(“class=‘kabely’”): mAttrPipe.AddCondition(“class=‘budovy’”) Set mBufferPipe.Input = mAttrPipe.Output(1): mBufferPipe.Tolerance = 10 Set mIntersectPipe.Input(1) = mBufferPipe.Output Set mIntersectPipe.Input(2) = mAttrPipe.Output(2) Set mReportPipe.Input = mIntersectPipe.Output mReportPipe.<cfg method call> mReportPipe.GetData
Odkazy Katedra mat. informatiky, UP Olomouc http://www.inf.upol.cz Katedra informatiky, VŠB-TU Ostrava http://www.cs.vsb.cz/skopal E-mail: Tomas.Skopal@vsb.cz