Využití MapObjects v Informačním systému Geologického pavilonu

Jan Růžička
Institut ekonomiky a systémů řízení
VŠB - Technická univerzita Ostrava
tř. 17. listopadu
708 33 Ostrava - Poruba
E - mail:
jan.ruzicka.hgf@vsb.cz

Abstract

Geological pavilion in Ostrava represents unique collection of minerals and rocks from Czech Republic and from all of The World.. Information system of Geological pavilion should be able to present information about minerals and rocks, also about deposits. That's why it should be able to work with geographic objects, which are placed in space. Information system of Geological pavilion should be able to present space-based representation of these objects. The target of this project was implementation of some GIS elements into this information system. MapObjects realized this implementation

Abstrakt

Geologický pavilon představuje jedinečnou sbírku minerálů a hornin z České republiky i celého světa. Informační systém Geologického pavilonu by měl poskytovat informace o minerálech, horninách, ale také o ložiscích nerostných surovin. Také z tohoto důvodu by měl pracovat s geografickými objekty, které mají svou reprezentaci v prostoru. Informační systém by měl umožňovat prezentaci jejich prostorové složky popisu. Cílem tohoto projektu byla implementace některých prvků GIS do tohoto informačního systému. Tato implementace byla realizována prostřednictvím MapObjects.

Úvod

          Geologický pavilon představuje místo, které využívají především pracovníci a studenti Hornicko - geologické fakulty. Je zde soustředěno obrovské množství exponátů, které představují unikátní sbírku nerostů a hornin z různých ložisek České republiky i světa.

Účelem informačního systému Geologického pavilonu je poskytovat informace o ložiscích nerosných surovin a sbírkách Geologického pavilonu nejen pracovníkům a studentům VŠB-TU, ale i jiným návštěvníkům Geologického pavilonu, kteří mají zájem o studium geologie a zajistit evidenci a správu geologických sbírek.

IS Geologického pavilonu (ISGP)

ISGP by měl na jedné straně umožnit správu a evidenci sbírek, kterou by se zabýval příslušný správce. Na druhé straně by měl umožnit lepší informovanost návštěvníků, především svou interaktivností.

          Návrh projektu IS GP byl zpracován Ing. Horákem v rámci jeho doktorandské práce. Ing. Horák se dále zaměřil na zpracování pilotního prototypu tohoto IS.

          V tom nejjednodušším úhlu pohledu je možno říci, že IS GP by měl pracovat s objekty, které mohou mít geografickou i atributovou složku popisu. Bylo by tedy vhodné k jejich popisu využívat oba dva tyto typy popisu objektů.

          IS by tedy měl sestávat ze dvou částí :

          Pro pilotní etapu byl vybrán MS Access, který umožňuje velmi pružnou práci s daty. Pro samotný IS by bylo vhodnější využít některého ze silnějších databázových systémů typu klient/server jako je např. Oracle.

          Cílem této práce bylo zpracování a prezentace prostorových informací s vazbou na informace popisné a tedy do pilotního prototypu zavést některé prvky GIS. Úkolem bylo vytvoření ucelené funkční části pilotního prototypu, která byla nazvána "Mapovou (geografickou) částí". Podstatně rozsáhlejší databázová (tabulková) část byla zpracována Ing. Horákem.

Mapová část

Hlavními úkoly mapové části pilotního prototypu byly:

Použité geografické datové množiny

Mapová část by nemohla být vytvořena bez příslušných datových množin.

           Zdrojem dat pro zobrazovaný topografický podklad byly využity datové množiny sídla, vodstvo, železnice a okresy ČR z kolekce datových množin, která je nazvána ArcČR500. Byly zakoupeny od společnosti ArcData Praha..

          Zdrojem dat pro zobrazovanou geologickou situaci se stala datová množina litostratigrafických jednotek ČR. Tato datová množina byla pořízena Českým geologickým ústavem.

           Hlavními datovými množinami byly centroidy a hranice ložisek nerostných surovin. Zdrojem dat o ložiscích nerostných surovin se stal Informační systém Geofondu ČR.

Tvorba mapové části

Mapová část byla stejně jako tabulková část vytvářena v prostředí MS Access. Pro práci s geografickými datovými množinami byly zvoleny programové mapové komponenty zvané MapObjects od společnosti ESRI, Inc.

          MapObjects umožňují práci s polohovou i atributovou složkou popisu geografických objektů. Umožňují např. zobrazení geometrické reprezentace objektů a mají spoustu dalších funkcí. Hlavním prvkem MapObjects je ActiveX objekt MapControl, který se opírá o skupinu DLL knihoven. Tento ovládací prvek je implementovatelný ve standardních programovacích prostředích jako je např. Visual Basic, Visual C++, Visual J++, Delhpi a také v prostředí MS Access (lze jej implementovat i v prostředí MS Word - nicméně tato implementace může být velmi problematická).

          Tvorba mapové části sestávala z tvorby objektů MS Access, a to modulů třídy (Class modulů), které v Accessu mají i grafickou část zvanou Formulář a několika pomocných tabulek. Tvorba těchto objektů byla tedy rozdělena do dvou částí. První část (grafická) byla tvořena prostředky MS Access pro tvorbu formulářů. Druhá část (programový kód) byl tvořen pomocí Visual Basicu for Applications (VBA), který je součástí MS Access.

Problémy s využitím MapObjects v prostředí MS Access

Během tvorby mapové části docházelo k problémům s využitím MapObjects v prostředí MS Access. Tyto problémy vedly dokonce až k dočasnému opuštění prostředí MS Access a tvorbě této mapové části v prostředí Visual Basicu v. 5.0 (VB). V prostředí VB k těmto problémům nedocházelo a podařilo se aplikaci rozvinout do uspokojivé podoby. Po dohodě s vedoucím této práce došlo k návratu do prostředí MS Access. Problémy byly nakonec vyřešeny nicméně v mnoha případech nepříliš vhodně.

          Mezi hlavní problémy, které se v tomto prostředí vyskytly, patří problémy s událostmi SomeMap_AfterLayerDraw a SomeMap_BeforeLayerDraw. Jedním z úkolů mapové části aplikace byl výběr objektů v mapě (polygonem, obdélníkem a kruhem). Výběr byl realizován v rámci události SomeMap_MouseDown. V rámci této události bylo použito několik metod (např. pro vytvoření MapObjects.Recordset, zapsání do tabulky MS Access). Následně měla být použita metoda SomeMap.Refresh nebo SomeMap.TrackingLayer.Refresh, aby došlo k obnovení mapy a došlo tak k výše zmiňovaným událostem SomeMap_AfterLayerDraw resp. SomeMap_AfterTrackingLayerDraw. V těchto událostech mělo dojít k vykreslení vybraných objektů zvýrazňující barvou. Po použití metod SomeMap.Refresh resp. SomeMap.TrackingLayer.Refresh v rámci události SomeMap_MouseDown však k těmto událostem nedocházelo. Vybrané objekty tedy nebyly zvýrazněny automaticky po jejich vybrání. Toto zvýraznění pak bylo řešeno nepříliš v souladu s představou autora. Do nástrojové lišty bylo přidáno tlačítko pro zvýraznění vybraných objektů. Po stisku tohoto tlačítka je invokována událost, ve které je použita metoda SomeMap.TrackingLayer.Refresh. V tomto případě již k příslušným událostem dojde a nastane tak zvýraznění vybraných objektů.

          Během vývoje docházelo k jiným menším nepříjemnostem , které se v případě tvorby v prostředí VB nevyskytovaly. Všechny pak byly nějakým způsobem vyřešeny, nicméně tato řešení nebyla v mnoha případech příliš vhodná.

          Kritický okamžik nastal při spojování obou částí pilotního prototypu. Tato kritická část se netýkala především problémů s MapObjects, ale celkově problémů s ActiveX komponentami. Obě části byly vytvářeny na jiných počítačích a spojovány rovněž na jiném počítači. Výsledkem toho bylo, že u veškerých objektů, které nepatřily do třídy Access se musely nastavovat vlastnosti znovu a některé z nich se ani obnovit nepovedlo.

Závěr

Závěrem lze říci, že byla vytvořena plně funkční část pilotního prototypu ISGP s využitím programových mapových komponent zvaných MapObjects. A rovněž tak byly vyzkoušena možnost využití MapObjects v prostředí MS Access. Využití MapObjects v MS Access sebou nese jisté problémy, nicméně tyto problémy jsou překonatelné. Přes tyto skutečnosti (nebo právě kvůli nim) by autor rád doporučil používat MapObjects v MS Access pouze omezeně a raději využíval standardní vývojová prostředí.