|
|
Realizace speciálních vizualizačních efektů pomocí rastrových operací v prostředí ESRI MapObjects
Martin ZárubaInstitut ekonomiky a systémů řízení VŠB – Technická univerzita Ostrava tř. 17. listopadu 708 33 Ostrava – Poruba AbstraktTato práce se zabývá realizací speciálních vizualizačních efektů pomocí rastrových operací s využitím prostředí ESRI MapObjects. Cílem bylo vytvořit několik různých vizualizačních efektů, implementovat různé možnosti zvýraznění obrazových záznamů z DPZ. ÚvodCílem této práce je rozšířit zobrazovací možnosti stávajícího programového vybavení používaného v GIS, s využitím komponenty ESRI MapObjects tak, aby poskytnuté grafické výstupy byly snáze vizuálně interpretovatelné. Toho bude docíleno vytvořením speciálních zobrazovacích funkcí, které jednotlivé tématické vrstvy vzájemně zobrazí podle uživatelem zvolených atributů zobrazení. Těmito atributy budou transparence a režim zobrazení vrstvy vzhledem k podkladu (vrstvám ležícím pod danou vrstvou). Vývojové prostředíJednotlivé funkce byly vyvíjeny ve vývojovém prostředí Borland Delphi 5.0 s využitím knihovny ESRI MapObjects 2.0. Vše bylo zabudováno do kostry komerční programové aplikace Gisel 2.0 firmy Sirion, aby se ověřilo využití implementovaných funkcí v praxi. Borland DelphiDelphi je vývojové prostředí pro vývoj 32bitových aplikací na platformě Microsoft Windows. Je založeno na objektové verzi programovacího jazyka Pascal (Object Pascal), knihovně vizuálních komponent (VCL, Visual Component Library) a běhové knihovně (RTL, Runtime Library). Aplikace je vyvíjena metodologií objektově orientovaného programování včetně všech jeho vlastností, jako je například zapouzdření, dědičnost a polymorfismus. Samozřejmostí je podpora komponent OCX a ActiveX. Delphi dále obsahuje výkonné funkce pro práci s databázemi prostřednictvím databázového stroje BDE (Borland Database Engine). Velice snadno lze také volat jednotlivé funkce MS Windows API. ESRI MapObjects Produkt MapObjects je tvořen skupinou programových komponent určených pro vývoj aplikací pro práci s geografickými daty. Je postaven na standardu OLE a pro vývoj je tedy možné použít běžná vývojová prostředí (Visual C++, Visual Basic, Delphi). Skupiny vizuálně reprezentuje ActiveX objekt nazvamý MapControl. MapObjects zobrazují data z jednotlivých zdrojů jako na sobě ležící, vzájemně se překrývající tématické vrstvy. Jednotlivé vrstvy jsou zobrazovány od nejnižší směrem nahoru k nejvyšší podle definovaných parametrů zobrazení. Programově je možné měnit pořadí a atributy zobrazení jednotlivých vrstev. Skupiny objektů MapObjects: Map Display Objects, Data Access Objects, Projection Objects, Address Matching Objects, Geometric Objects.Microsoft Windows API Operační systém je z pohledu programátora definován svým API (Application Programing Interface). API obsahuje všechna volání funkcí, které může programová aplikace žádat od operačního systému včetně definice souvisejících datových typů a struktur. Grafika je v systému Windows spravována především funkcemi rozhraní grafického zařízení GDI (Graphics Device Interface). To je část systému odpovědná za zobrazování grafiky na obrazovém displeji a na tiskárně. Grafické funkce jsou exportovány z dinamické knihovny GDI32.DLL. Tato dynamická knihovna volá rutiny v ovladačích zařízení obrazových displejů nebo tiskáren nainstalovaných v systému. Jedním ze základních cílů GDI je schopnost podpory grafiky nezávislé na zařízení. Veškeré potřebné funkce API lze v Delphi velice snadno volat. Ve své práci jsem potřeboval především funkce GDI umožňující přenost binárních bloků (bit-block transfer a odvozené). Gisel Gisel je moderní programová aplikace určená pro koncové uživatele GIS. Je produktem dynamicky se rozvíjející české firmy Sirion. Základním jádrem Giselu je mapová knihovna MapObjects. Aplikace umožňuje svému uživateli komplexně přistupovat ke geografickým i tabulkovým datům. Umožňuje jejich zobrazování, výběry, dotazy na ně a neméně důležitou prezentaci výsledků práce. Podporována je většina běžných datových formátů používaných v GIS. Komunikace uživatele s programem je vedena prostřednictvím jednoduchého a intuitivního vizuálního prostředí v češtině. Gisel má otevřenou architekturu, takže jeho možnosti mohou být (jsou) dále rozšiřovány prostřednictvím zásuvných modulů (plug-inů). Interaktivní zobrazeníZobrazení dat v mapovém okně je řízeno speciální a k tomuto účelu vytvořenou interaktivní legendou. Ta obsahuje přehledný seznam jednotlivých tématických vrstev (témat) zařazených do projektu. Témata mohou být dále sekupovány do tzv. sad (skupiny tématických vrstev). Pomocí technologie drag'n'drop (táhni a pusť) je možné myší snadno měnit pořadí jednotlivých témat a libovolně přesouvat a seskupovat tématické vrstvy v sadách a mezi nimi. Legenda je událostně svázána s mapovým oknem, takže se po zásahu uživatele do legendy způsobené změny ihned promítnou do zobrazení v mapovém okně. Implementace vizualizačních funkcí do aplikaceAby bylo možné zabudovat vizualizační funkce do této aplikace bylo nutné navrhnout a vytvořit určitý zobrazovací systém, který by pokryl všechny události a situace, které při vykreslování dat mohou nastat. Bylo definováno několik požadavků. Systém by měl splňovat následující požadavky:Po studiu a testování možností mapové knihovny MapObjects se ukázalo, že tato komponenta je určena převážně pro jednodušší aplikace a tudíž nemá exportovány prakticky žádné funkce, které by bylo možné pro naše účely použít. Z tohoto důvodu bylo nutné realizovat celý vizualizační systém v Delphi s využitím některých funkcí Windows API.Režimy zobrazeníJednotlivé vrstvy jsou vykreslovány postupně zdola nahoru. Vizualizační funkce se aplikují postupně na jednotlivé vrstvy, podle nastavených parametrů.Pro potřeby popisu principu jednotlivých režimů zobrazení (v dalším textu) zavedu následující pojmy: Výsledný obraz vznikne aplikací vizualizační funkce na jednotlivé vstupní pixely pracovního tématu a podkladu. Normální (Normal) Jedná se o základní režim zobrazení. Pracovní téma je vykresleno beze změn. Barevné složky pixelů výsledného obrazu jsou rovny barevným složkám pracovního tématu. Obrázek. Rozpustit (Dissolve) Barevné složky pixelů výsledného obrazu jsou náhodně rovny buď barevným složkám pracovního tématu nebo podkladu. Poměr přiřazení závisí na hodnotě parametru hustota, který je možné volit v rozsahu 0 až 100%. Při hodnotě hustota=0% bude výsledný obraz obsahovat pouze hodnoty pixelů z podkladu. Při hodnotě hustota=100% bude výsledný obraz obsahovat pracovní téma vykreslené beze změn. Při hodnotě hustota=80% bude výsledný obraz obsahovat 80% pixelů pracovního tématu a 20% pixelů podkladu. Obrázek. Násobit (Multiply) Barevné složky pixelů výsledného obrazu jsou rovny výsledku násobení barevných složek pracovního tématu a barevných složek pozadí. Výsledkem je vždy tmavší barva. Násobení černou barvou (0,0,0) vytváří černou barvu. Násobení bílou barvou (255,255,255) nechá barvu beze změny. Výsledný efekt je podobný malbě popisovači (fixy). Obrázek. Závoj (Screen) Barevné složky pixelů výsledného obrazu jsou rovny násobku inverzních hodnot barevných složek pracovního tématu a inverzních hodnot barevných složek pozadí. Výsledkem je vždy světlejší barva. Závoj s černou barvou (0,0,0) ponechá barvu beze změny. Závoj s bílou barvou (255,255,255) vytváří bílou barvu. Výsledný efekt je podobný, jako když promítáte více diapozitivů přes sebe. Obrázek. Rozdíl (Difference) Barevné složky pixelů výsledného obrazu jsou rovny absolutní hodnotě rozdílu barevných složek pixelů pozadí s barevnými složkami pixelů pracovního tématu. Pokud má jeden ze vstupních pixelů barvu bílou (255,255,255) invertuje barvu druhého vstupního pixelu. Pokud má jeden ze vstupních pixelů barvu černou (0,0,0) nevzniká žádná změna. Obrázek. Negativ (Negative) Barevné složky pixelů výsledného obrazu jsou rovny rozdílu maximální číselné hodnoty datového typu Byte (všech 8 bitů nastaveno) a barevných složek pixelů pracovního tématu. Obrázek. Lineární kombinace obrazů (alpha-blending)Další implementovanou funkcí je linéární kombinace obrazů (alpha-blending). Uživatel může snadno nastavit průhlednost vrstvy změnou parametru krytí v rozsahu 0 až 100%. Pomocí lineární kombinace můžeme realizovat různé přechody a přeměny mezi dvěma a více původními obrazy. Zvýraznění obrazuSystém má rovněž implementovánu možnost zvýraznění rastrových obrazových záznamů. Zvýraznění je prováděno na základě úpravy look-up tabulky obrazového záznamu. Systém umožňuje provádět prahování, hustotní řezy, lineární zvýraznění, lineární zvýraznění části histogramu. Barevná syntézaPro účely zobrazení barevých syntéz byl vytvořen speciální typ sady tzv. "RGB sada". Tato speciální sada obsahuje tři subsady. Rastrová témata zařazená do těchto subsad se zobrazují v jednotlivých barevných složkách modelu RGB. Aditivním složením těchto složek vznikne požadovaná barevná syntéza. Tento způsob byl zvolen pro snadnou možnost přesouvat vrstvy mezi sadami. Obrázek. ZávěrCílem této práce byla realizace speciálních vizualizačních efektu pomocí rastrových operací s využitím knihovny MapObjects. Pro realizaci a ověření praktického využití bylo nutné implementovat vytvořené funkce do skutečné programové aplikace. Při této implementaci se vyskytlo několik problémů. Tím zásadním byla a je skutečnost, že MapObjects neposkytují vývojáři potřebný přímý přístup k funkcím a strukturám řídícím proces zobrazení. Chybí rovněž přímý přístup k parametrům a pomocí funkcí i k datům zpracovávaných datových souborů. Tyto skutečnosti jsou ovšem dány filosofií celého produktu MapObjects, který je určen hlavně pro snadnou implementaci funkcí a možností GIS do aplikací. |