GNU Gama - package for adjustment of geodetic free network (Projekt vyrovnání geodetických sítí GNU Gama)

Jan Pytel, Aleš Čepek
Katedra mapování a kartografie, Stavební fakulta ČVUT
Thákurova 7,
166 29 Praha6
E - mail: pytel@gama.fsv.cvut.cz, cepek@fsv.cvut.cz

Abstract

The article is aimed to introduce briefly project GNU Gama and data structures which are used in this project. The article is divided into four parts. First part contains basic informations about project GNU Gama. Second part is introduced into GNU Gama data structures, third part explain using of XML in the project. Last part is involved into project Rocinante.

Abstrakt

Příspěvek se zabývá projektem GNU Gama a datovými strukturami v tomto projektu použitými. Je rozdělen do čtyř částí. První část obsahuje základní informace o projektu GNU Gama. Ve druhé části jsou představeny datové struktury, třetí část se zabývá použitím formátu XML v projektu. Poslední část je věnována projektu Rocinante.

Projekt GNU Gama

Projekt GNU Gama je věnován vyrovnávání geodetických sítí, jde o GNU projekt a je proto volně šiřitelný, včetně zdrojových kódů, pod licencí GNU General Public Licence (GPL)

http://www.gnu.org/software/gama.

Začátky projektu GNU Gama se datují rokem 1998 a u zrodu stál Aleš Čepek z Katedry mapování a kartografie FSV ČVUT. Hlavní motivací pro vytvoření tohoto projektu byla snaha demonstrovat sílu a možnosti objektového programování. Počátky projektu jsou silně ovlivněny prací Františka Charamzy, zejména jeho výzkum na poli Gram-Schmidtovy ortogonalizace jako univerzální metody pro řešení úloh vyrovnávacího počtu.

V listopadu 2001 získal projekt GNU Gama oficiální statut GNU software

http://www.gnu.org,

v oboru geodézie jde o první případ udělení statutu GNU pro aplikační software. Projekt je založen na C++ knihovně tříd pro vyrovnání a organizaci geodetických měření (maximální důraz je kladen na přenositelnost zdrojového kódu), součástí projektu je též C++ knihovna gmatvec pro práci s maticemi a vektory.

GNU Gama poskytuje kromě "klasického" vyrovnání sítí i řadu informací pro analýzu vyrovnané sítě. Vyrovnání měření řeší projekt GNU Gama přímým řešením rovnic oprav (ortogonalizační algoritmy SVD anebo GSO), tj. bez nutnosti sestavování tzv. normálních rovnic. Jako základní numerické metody pro řešení soustavy rovnic oprav se využívají algoritmy singulárního rozkladu (SVD), k dispozici je i Gram-Schmidtova ortogonalizace. Samozřejmostí je automatický výpočet přibližných souřadnic a iterativní zpřesnění výsledků vyrovnání (pokud je potřeba).

Projekt je rozdělen na dvě vývojové větve: stabilní a vývojovou.

Stabilní větev projektu GNU Gama

Stabilní větev projektu je zaměřena na vyrovnání geodetických sítí v lokální soustavě (vzorem byl systém Geodet/PC vyvinutý ve VÚGTK Zdiby Ing. Františkem Charamzou, CSc.). V této větvi jsou podporovány následující typy měření: vodorovné směry a délky, vodorovné úhly, šikmé délky a zenitové úhly, výškové rozdíly, měřené souřadnice (souřadnice s kovarianční maticí) a měřené souřadnicové rozdíly (vektory).

Stabilní větev projektu GNU Gama je reprezentována konzolovým programem gama-local pro vyrovnání lokálních geodetických prostorových sítí. K dispozici je i platformově nezávislé grafické uživatelské rozhraní (GUI) rocinante, viz. dále.

Zdrojové kódy stabilní větve jsou přístupné přes CVS

cvs -d:pserver:anoncvs@subversions.gnu.org:/cvsroot/gama login 
cvs -z3 -d:pserver:anoncvs@subversions.gnu.org:/cvsroot/gama co -rgama-1-6 gama

Vývojová větev projektu GNU Gama

Zatímco změny ve stabilní větvi projektu jsou zapříčiněny převážně opravami chyb, či malými úpravami, ve vývojové větvi se "aktivně pracuje".

Vývojová větev projektu je zaměřena na vyrovnání sítí v geocentrickém souřadnicovém systému (model vyrovnání na elipsoidu) a je reprezentována programem gama-g3 pro vyrovnání v globálním souřadnicovém systému na elipsoidu.

Zdrojové kódy vývojové větve jsou opět přístupné přes CVS

cvs -d:pserver:anoncvs@subversions.gnu.org:/cvsroot/gama login 
cvs -z3 -d:pserver:anoncvs@subversions.gnu.org:/cvsroot/gama co gama

Datové struktury a algoritmy

Nosnou částí návrhu projektu GNU Gama je objektová realizace observačních dat vybudovaná na konceptu tzv. clusterů (z anglického slova cluster - hrozen). Koncept clusterů umožňuje spravovat (vyrovnávat) libovolné kombinace korelovaných (a samozřejmě též nekorelovaných) měření.

Pokud popíšeme cluster C++ terminologií, pak cluster je objekt obsahující seznam ukazatelů na objekty měření (směry, délky, úhly) a obsahující jednu kovarianční matici odpovídající daným měřením.

Vztah clusterů s ostatními objekty je znázorněn na obr. 1.

Obr č. 1 Datové struktury - použití koncepce clusterů

Váhy byly odstraněny z observací (bázová třída Observation) a nahrazeny ukazatelem na cluster ke kterému náleží. Všechny clustery jsou seskupeny v objektu ObservationData a každý cluster obsahuje ukazatel na tento objekt.

Observační datové struktury byly navrženy tak, aby umožňovaly jednoduchou implementaci nových observačních typů. Pokud chceme implementovat nový observační typ, je nutné pouze odvodit novou třídu z bázové třídy Observation a definovat několik virtuálních funkcí (např. virtuální funkci pro linearizaci), případně ještě odvodit vhodnou třídu z třídy Cluster. V současné době jsou podporovány následující typy měření:

Vývojová větev též nově obsahuje objektové schéma "Acyclic visitor", více informací o metodě "Acyclic visitor" viz. příspěvek Jana Pytla.

Použití formátu XML v projektu GNU Gama

Vstupní data pro projekt GNU Gama jsou definována v souladu se standardem metajazyka Extended Markup Language (XML) pro popis strukturovaných dat

http://www.w3.org/TR/REC-xml.

Data jsou popsána (podobně jako HTML) množinou uživatelem definovaných značek (párové značky <xxx> a </xxx> a nepárové značky <yyy />). XML dokument je tedy klasický textový soubor doplněný o tagy a pro jeho vytváření a následnou editaci je možno využít libovolný textový editor (autoři tohoto textu s oblibou používají [nejen] pro editaci XML dat editor GNU Emacs). Strukturu vstupních dat definuje formálně DTD (Document Type Definition), poskytující formální sadu pravidel pro definici strukturovaných dat. DTD pro projekt GNU Gama je přístupný na adrese

http://www.gnu.org/software/gama/gama-xml.dtd.

Pro analýzu XML vstupních dat je v projektu GNU Gama využit parser expat, napsaný Jamesem Clarkem

http://www.jclark.com/xml/expat.html.

Ve stabilní verzi věnované vyrovnání lokálních sítí bylo XML využito pouze pro popis vstupních dat, v nové verzi je plánováno využití XML i pro popis výstupních informací, tak by bylo možno snadno propojit vyrovnání poskytované projektem GNU Gama i pro jiné systémy.

Ukázka jednoduché sítě:

<?xml version="1.0" ?>
<!DOCTYPE gama-xml SYSTEM "gama-xml.dtd">

<gama-xml version="2.0">
<network>

<description>
Frantisek Charamza: GEODET/PC, Prirucka uzivatele, Zdiby 1990
-------------------------------------------------------------------
priklad: stdev. 238, dodateb B

varianta: trojuhelnik - pb / ob / ub 
          jedna osnova o dvou smerech nahrazena uhlem
</description>

<parameters
   txt="trojuhelnik-2.txt"
   sigma-apr ="10"
   conf-pr="0.95"
   tol-abs="1000"
   sigma-act ="aposteriori"
/>

<points-observations>

<point id=  "1" y="644498.590"  x="1054980.484" fix="xy" />
<point id=  "2" y="643654.101"  x="1054933.801" adj="XY" />
<point id="407" y="644025.978"  x="1054821.167" adj="xy" />

<obs from="1">
   <direction to="2" val="0.0000" stdev="10.0" />
   <direction to="407" val="382.8182" stdev="10.0" />
   <distance to="2" val="845.777" stdev="5.0" />
   <distance to="407" val="498.750" stdev="5.0" />
</obs>

<obs from="2">
   <direction to="1" val="0.0000" stdev="10.0" />
   <direction to="407" val="22.2376" stdev="10.0" />
   <distance to="407" val="388.562" stdev="5.0" />
</obs>

<obs from="407">
   <angle to="1" rs="2" val="239.4204" stdev="14.142"/>
</obs>

</points-observations>

</network>
</gama-xml>

Projekt Rocinante

Při tvorbě vstupních dat pro projekt GNU Gama je nutná znalost metajazyka XML a vstupní dávky projektu GNU Gama, což je pro řadu potencionálních uživatelů problém. Právě tato skutečnost byla hlavním impulzem pro zahájení vývoje projektu Rocinante. Vývoj projektu Rocinante zahájil v létě 2001 student Jan Pytel a první beta verse byla k dispozici v prosinci téhož roku.

Projekt Rocinante je platformově nezávislé grafické uživatelské rozhraní (GUI) pro program gama-local, které je sířeno pod licencí GNU General Public Licence. Projekt Rocinante je napsán v programovacím jazyku C++ s využitím grafické knihovny Qt

http://www.trolltech.com/products/qt/index.html.

Domovská stránka projektu se nachází na adrese

http://sourceforge.net/projects/roci.

Na domovské stránce projektu se nachází zkompilovaný projekt ("binárky") pro platformy MS Windows a GNU/Linux. Zdrojové kódy aktuální verse projektu přístupné pouze přes CVS:

cvs -d:pserver:anonymous@cvs.roci.sourceforge.net:/cvsroot/roci login
cvs -z3 -d:pserver:anonymous@cvs.roci.sourceforge.net:/cvsroot/roci co modulname

Práce v programu Rocinante je snadná a intuitivní. Veškeré operace s body či měřeními jsou uskutečňovány pomocí přehledných dialogových oken. Ukázka projektu Rocinante, viz. obrázek 2.

Obr č. 2 Ukázka projektu Rocinante

Základní rysy projektu Rocinante:

Více o projektu Rocinante viz. [4].

Závěr

Projekt GNU Gama je používán ve výuce vybraných předmětů na studijním oboru geodézie a kartografie stavební fakulty ČVUT v Praze, probíhá též spolupráce se Západočeskou univerzitou v Plzni. Další vývoj projektu GNU Gama je v současnosti podporován tříletým grantem GA ČR. Projekt byl mezinárodní geodetické veřejnosti prezentován z rámci mezinárodní organizace zeměměřičů FIG (http://www.fig.net/).

Literatura

  1. Čepek, A. - Pytel, J.: A note on numerical solutions of Least Squares adjustment in GNU project Gama, StatGIS 2003, Sept. 29-Oct. 1, Portschach, Austria
  2. Čepek, A.: The GNU Gama project-Adjustment of Geodetic Networks, Acta Polytechnica Vol. 42, No. 3, 2002, pp. 26-30
  3. Čepek, A. - Pytel, J.: Free Software - an Inspiration for Virtual Academy, FIG XXII International Congress, Washington, D.C. USA, April 19-26 2002
  4. Pytel, J.: Diplomová práce - Objektové uživatelské grafické rozhraní pro vyrovnání geodetických sítí, ČVUT, 2001

Tento článek vznikl za podpory Grantové agentury České republiky při řešení projektu Vyrovnání a analýza geodetických měření, registrovaného pod číslem 205/03/0017 GA ČR.