ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta stavební
DIPLOMOVÁ PRÁCE
2007
Tomáš Mikšovský
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta stavební Katedra geodézie a pozemkových úprav
Diplomová práce
Řešení geodetických úloh v e-formulářích (MS Excel)
Praha, prosinec 2007
Tomáš Mikšovský
Čestné prohlášení: Místopřísežně prohlašuji, že diplomovou práci jsem vypracoval samostatně s použitím literatury uvedené v seznamu. V Praze dne 3.12.2007
Tomáš Mikšovský
Anotace Diplomová práce: Řešení geodetických úloh v e-formulářích (MS Excel) V této diplomové práci byl vytvořeno několik elektronických formulářů, které řeší vybrané základní geodetické úlohy. Jako nástroj byl použit program MS Excel a jeho vestavěný editor jazyka Visual Basic for Aplication.
Klíčová slova Geodetická úloha, formulář, MS Excel, VBA
Abstrakt Diploma project: Solution of Geodetic Problems in E-forms (MS Excel) In this diploma project was created some e-forms to solve selected basic geodetic problems. For creating e-forms was used MS Excel and in-built editor of Visual Basic for Aplication.
Keywords Geodetic Problems, form, MS Excel, VBA
Obsah Úvod............................................................................................................................. 3 MS Excel – obecný popis ............................................................................................ 4
2
1.1
MS Excel a jeho struktura....................................................................................... 4
1.2
Přehled nejčastěji použitých funkcí v sešitech MS Excel v diplomové práci......... 5
1.3
Visual Basic for Aplications (VBA)....................................................................... 7
1.3.1
Typy proměnných ................................................................................ 8
1.3.2
Syntaxe deklarace proměnné ............................................................... 8
1.3.3
Přehled nejčastěji použitých příkazů ve VBA ..................................... 8
1.3.4
Ukázky jednoduchých programů ve VBA......................................... 11
Základní souřadnicové výpočty v geodézii ....................................................... 14 2.1
Výpočet směrníku a délky ze souřadnic ............................................................... 14
2.2
Výpočet polární metody (rajón)............................................................................ 15
2.2.1
3
Matematická redukce délek ............................................................... 15
2.3
Orientace osnovy vodorovných směrů ................................................................. 17
2.4
Transformace souřadnic v rovině ......................................................................... 20
2.5
Protínání vpřed z délek ......................................................................................... 21
2.6
Protínání vpřed z úhlů........................................................................................... 22
2.7
Protínání vpřed z orientovaných směrů ................................................................ 23
2.8
Protínání zpět........................................................................................................ 24
2.9
Polygonový pořad................................................................................................. 25
2.9.1
Přibližné řešení .................................................................................. 25
2.9.2
Vyrovnání MNČ ................................................................................ 27
2.10
Zápisník měřených vodorovných směrů............................................................... 30
2.11
Helmertova transformace...................................................................................... 31
Návody............................................................................................................... 33 3.1
Oboustranně připojený a oboustranně orientovaný polygonový pořad ................ 33
3.2
Oboustranně připojený a oboustranně orientovaný polygonový pořad s právě
jednou orientací na počátku a na konci.............................................................................. 34 3.3
Helmertova transformace...................................................................................... 35
3.4
Protínání vpřed z úhlů........................................................................................... 36
3.5
Protínání vpřed z orientovaných směrů ................................................................ 36
3.6
Protínání vpřed z délek ......................................................................................... 36
3.7
Protínání zpět........................................................................................................ 36
1
4
3.8
Polární metoda ...................................................................................................... 37
3.9
Zápisník měřených vodorovných směrů............................................................... 37
Ukázky práce s formuláři................................................................................... 38 4.1
Observace ............................................................................................................. 38
4.2
Helmertova transformace...................................................................................... 41
4.3
Polygonový pořad................................................................................................. 44
5
Závěr .................................................................................................................. 47
6
Literatura............................................................................................................ 49
Příloha 1 – Obsah přiloženého CD ............................................................................ 50
2
Úvod Cílem této diplomové práce bylo vytvořit v programu MS Excel několik elektronických formulářů řešících vybrané základní geodetické úlohy. V diplomové práci chceme ukázat, že kvůli těmto výpočtům není zapotřebí si pořizovat specializovaný a často velmi drahý software (Geus, Groma, Kokeš), ale lze použít běžně rozšířenou kancelářskou sadu. Výhoda programu MS Excel je také v tom, že ho uživatelé většinou znají a mohou se v něm lehce orientovat. Formuláře řeší zatím pouze úlohy v rovině a jsou určeny především jako pomůcka studentům oboru geodézie a kartografie a dalším zájemcům z řad praxe. Předpokladem úspěšného užívání formulářů jsou určité teoretické znalosti oboru geodézie. Součástí každého sešitu MS Excel je list s návodem na obsluhu formuláře, ale představu o tom co formulář konkrétně řeší by měl mít uživatel sám. Většina formulářů obsahuje výpočetní vzorce a jsou obrazem původních papírových formulářů. Zhotovené formuláře jsou pouze uzamčené bez hesla jako ochrana proti náhodnému smazání nebo přepsání vložených vzorců. Kdokoli si může sešity odemknout a pokračovat v jejich úpravě a dalším rozšiřování.
3
MS Excel – obecný popis MS Excel je tabulkový procesor od společnosti Microsoft a je součástí kancelářské sady Microsoft Office. Slouží ke zpracování dat v tabulkách, statistickým a jednoduchým matematickým analýzám, případně k tvorbě grafů. Soubory na disku vytvořené v MS Excel mají koncovku xls. 1.1
MS Excel a jeho struktura
Každý soubor vytvořený v programu MS Excel se zároveň označuje jako sešit. Jeden sešit v sobě může obsahovat více listů, mezi kterými se lze přepínat, dají se vkládat, mazat a přejmenovávat. List obsahuje jednotlivé buňky, které jsou uspořádány do řádků a sloupců viz. obr.1.1. Buňka je tudíž základní prvek, do kterého se zapisují konkrétní informace – čísla, text, případně výpočetní vzorce. panel se vzorci
aktivní buňka
výběr listů Obr.1.1 Sešit excelu
4
jednotlivé buňky
1.2
Přehled nejčastěji použitých funkcí v sešitech MS Excel v diplomové práci
ACRTG2(x;y) – vypočte arcustangens výrazu y/x v intervalu (-π , π) ZAOKROUHLIT(x;y) – zaokrouhlí číslo x na y platných číslic SUMA(hodnota1;hodnota2…) – vypočte součet argumentů SUMA.ČTVERCŮ(hodnota1;hodnota2…) – vypočte sumu čtverců argumentů POWER(x;y) – umocní číslo x na mocninu y PI() – vypočte hodnotu čísla π na 15 platných cifer ODMOCNINA(x) – vypočte druhou odmocninu čísla x COS(x) – vypočte cosinus úhlu x SIN(x) – vypočte sinus úhlu x POČET(oblast) – vypočte počet čísel v dané oblasti USEKNOUT(x;n) – usekne číslo x za n-tou číslicí po desetinné čárce ZPRAVA(x;n) – vrátí posledních n znaků v řetězci x Logické funkce KDYŽ(podmínka;ano;ne) – rozhodovací krok, vrací dvě různé hodnoty podle toho jestli výsledek podmínky je pravdivý či nepravdivý
5
A(loghod1;loghod2…) – vrátí hodnotu PRAVDA pokud jsou splněny všechny argumenty mají hodnotu PRAVDA NEBO(loghod1;loghod2…) – vrátí hodnotu PRAVDA pokud alespoň jeden z argumentů má hodnotu PRAVDA JE.ČÍSLO(x) – vrátí hodnotu PRAVDA pokud argument je číslo
6
1.3
Visual Basic for Aplications (VBA) Součástí aplikace MS Excel je editor jazyka Visual Basic. Je to objektově
orientovaný nástroj pro tvorbu složitějších aplikací. Do editoru se dostaneme klávesovou zkratkou ALT+F11 viz. obr. 1.2. Zde si vybereme modul a můžeme začít psát makro. Makro je posloupnost příkazů a může se jednat buď o funkci nebo o proceduru. Liší se pouze v tom jak se spouští. Zatímco procedura se spouští samostatně přímo z editoru nebo jiným nástrojem v listě (nejčastěji asi tlačítkem), funkce se zařadí do seznamu ostatních excelovských funkcí do kategorie vlastní. Spouští se pak jako ostatní funkce přímo z buňky volbou VložitFunkce. Další možností vytvoření makra je jeho záznam. Učiní se tak pomocí volby Nástroje-Makro-Záznam nového makra. Tím se až do zastavení zaznamenají veškeré provedené operace v sešitu do nového modulu v jazyce VBA. Tento způsob je vhodný zvláště z výukových důvodů, kdy přesně nevíme jak se daná operace zapisuje v jazyce VBA. Seznam
otevřených
sešitů,
v nich
Seznam všech vlastních funkcí a procedur
obsažených listů a všech modulů
Vlastnosti modulu Zdrojový kód
Obr. 1.2 Editor VBA
7
1.3.1 Typy proměnných Boolean - logická hodnota Integer - celé číslo Long - long integer-dlouhé celé číslo Single - single-precision floating-point, reálné číslo 4 Byte Double - double-precision floating-point, reálné číslo 8 Byte Currency - finanční hodnota Date - datum Object - nějaký objekt String - řetězec Variant - numerická proměnná nebo text Proměnné dělíme na globální, deklarují se na začátku programu a lokální deklarují se v jednotlivých procedurách a funkcích. 1.3.2 Syntaxe deklarace proměnné Dim jméno proměnné As typ Příklad: Dim pocet As Integer 1.3.3 Přehled nejčastěji použitých příkazů ve VBA Cells - buňka Sheets - list Rows - řádek Columns - sloupec "" - symbol značení prázdné buňky ‘ - poznámka – to co je na řádku za ní nevstupuje do kompilace sqr( n ) – vypočítá odmocninu zadaného čísla n round(m, n) – zaokrouhlí číslo m na n platných cifer
8
right(retezec, n) – vybere zprava n znaků z daného řetězce Sheets("vstup").Cells(r, s) - adresování buňky pomocí indexu řádku a sloupce Sheets("zápisník").Range("AY10") – adresování buňky pomocí jejího jména v listu X = InputBox("vloz cislo") – zadání hodnoty proměnné přes dialogové okno MsgBox ("prvni hodnota je " & dpole(3)) – vyskakující textové okno Podmínky Podmínka IF Rozhodovací krok, kde se provede sekvence příkazů po splnění zadaných podmínek. If (podmínka1) Then příkazy po splnění podmínky 1 ElseIf (podmínka2) Then příkazy po splnění podmínky 2 . . Else příkazy po nesplnění žádné z podmínek End If Podmínka CASE Rozhodovací krok, kde jsou přesně definovány reakce na situace, které mohou nastat. Select Case X Case Is > 10: MsgBox ("byla zadana hodnota vetsi nez 10") Case 0 To 10: MsgBox ("zadana hodnota je v intervalu 0 az 10") Case Is < 0: MsgBox ("byla zadana hodnota mensi nez 0") End Select
9
Cykly Cyklus DO Cyklus probíhá stále pokud je splněna počáteční podmínka Do
' Outer loop.
Do While Counter < 20
' Inner loop.
Counter = Counter + 1 ' Increment Counter. If Counter = 10 Then
' If condition is True.
Check = False ' Set value of flag to False. Exit Do
' Exit inner loop.
End If Loop Loop Until Check = False ' Exit outer loop immediately.
While Counter < 20
' Test value of Counter.
Counter = Counter + 1 Wend
' Increment Counter.
' End While loop when Counter > 19.
Cyklus FOR Cyklus má přesně daný počet opakování definováním spodní a horní mezí otevřeného intervalu měnící se proměnné. Proměnná může mít také definovaný krok s jakým se bude měnit, bez definice je tento krok +1. For i = 2 To 20 Step 2 If (Abs(Cells(i, 24)) > 10) Then Cells(i, 24).Font.Color = vbRed End If Next Tento cyklus prochází své tělo s proměnou i od 2 do 20 s krokem 2. Všechny buňky v definované oblasti, pro které bude index i větší než 10 obarví načerveno.
10
1.3.4 Ukázky jednoduchých programů ve VBA Příklad 1: Je potřeba vypočítat průměr z čísla c a poslední hodnoty jednorozměrného pole (vektoru) vn
Vstupní hodnoty:
⎛ v1 ⎞ ⎜ ⎟ ⎜ . ⎟ pole v = ⎜ ⎟ , reálné číslo c . ⎜ ⎟ ⎜v ⎟ ⎝ n⎠
Výstup:
1 (c + v n ) 2
Funkce by také měla řešit případy, když nejsou k dispozici obě hodnoty nebo dokonce ani jedna. Public Function spec_pr2(c)
…deklarace funkce, vstupuje hodnota c
Dim pocet As Integer
…deklarace celočíselné proměnné pocet
pocet = 0 Dim a As Double
…deklarace proměnné a …for cyklus procházející zadanou oblast a hledající index posledního prvku
For i = 16 To 27 If (Sheets("vstup").Cells(i, 1).Formula = "") Then Exit For
hledající index
posledního prvku pocet = pocet + 1 Next a = Sheets("vstup").Cells(15 + pocet, 5).Value …načtení poslední hodnoty dané oblasti do proměnné a If (a <> 0 And c <> "") Then
…aritmetický průměr hodnot a,c se všemi variantami pokud některá nebo obě hodnoty chybějí
spec_pr2 = (a + c) / 2
…pokud jsou k dispozici obě hodnoty
End If If (a <> 0 And c = "") Then
…pokud chybí hodnota c
11
spec_pr2 = a End If If (a = 0 And c <> "") Then
…pokud chybí hodnota a
spec_pr2 = c End If If (a = 0 And c = "") Then
…pokud chybějí obě hodnoty
spec_pr2 = "vloz aspon jednu delku" End If End Function
…ukončení funkce
Příklad 2: VBA je sice přímou součástí aplikace MS Excel, ovšem v komunikaci mezi nimi se občas objevují problémy. Příkladem toho je, že MS Excel používá desetinou čárku, zatímco VBA desetinnou tečku. Pokud chceme z VBA vložit do buňky přímo vzorec s proměnou z VBA, funkce se nevypočítá správně, protože se do listu vloží číslo s desetinnou tečkou a s tím si MS Excel neporadí. Řešením může být to, že všechny výpočty provedeme na úrovni VBA a do listů MS Excel vložíme až výsledné hodnoty. Nebo pokud chceme mít kontrolu nad tím jak se hodnoty počítaly, musíme si vyrobit funkci na záměnu desetinné čárky desetinnou tečkou.
Public Function zamena(a As String)
…deklarace funkce, vstupuje řetězec a
'nahrazuje desetinou carku desetinou teckou
…komentář
' napr fce round(promena) se nezobrazi spravne, protoze promena ma vnitrne 'desetinou carku ale vba tam chce tecku..... divny co Dim pozice As Integer
…deklarace celočíselné proměnné pozice
Dim leva As String
…deklarace řetězce leva
Dim prava As String
…deklarace řetězce prava
pozice = InStr(a, ",")
…zjištění na kterém místě v řetězci a se nachází
12
desetinná čárka a uložení indexu po proměnné pozice If pozice <> 0 Then leva = Left(a, pozice - 1) …načtení části řetězce a před desetinnou čárkou do proměnné leva prava = Right(a, (Len(a) - (pozice + 1))) …načtení části řetězce a před desetinnou čárkou do proměnné prava zamena = leva & "." & prava …složení řetězce leva, desetinné tečky a řetězce prava Else zamena = a
…pokud řetězec a neobsahoval desetinnou čárku, funkce vrátí původní řetězec
End If End Function
…ukončení funkce
13
2
Základní souřadnicové výpočty v geodézii V této kapitole bude popsána geodetická teorie potřebná k tvorbě formulářů.
Úkolem této diplomové práce není odvozovat tyto základní geodetické úlohy, proto budou ve většině případů pouze uvedeny pouze názorné obrázky a výsledné vzorce.
2.1
Výpočet směrníku a délky ze souřadnic
Jedná se zároveň o převod pravoúhlých souřadnic na polární R→P. Dáno: Souřadnice bodů 1, 2 (viz obr.2.1). 0 Y
1 s12 2
σ12 ∆X12 = X2 –X1
∆Y12 = Y2 –Y1 X
Obr. 2.1 Směrník a délka
σ 12 = arctg
Y2 − Y1 X 2 − X1
s12 = (X 2 − X1 ) + (Y2 − Y1 ) 2
14
. 2
(2.1)
2.2
Výpočet polární metody (rajón)
Geometrický význam: Průsečík orientované polopřímky s kružnicí (viz obr. 2.2). Dáno: Souřadnice bodu a dalších bodů pro orientaci (alespoň 1). Měřeno: Délka s12, orientovaný úhel σ12 (viz. Kap. 2.3 Orientace osnovy vodorovných směrů).
0 2
Y
σ12 1
s12
X
Obr. 2.2 Rajón
Y2 = Y1 + s12 sin σ 12
.
(2.2)
1− k / 2 SD 2 sin V cos V , R
(2.3)
X 2 = X 1 + s12 cos σ 12
2.2.1 Matematická redukce délek Převod šikmé délky SD na vodorovnou HD
HD = SD sin V −
kde V je zenitový úhel k je refrakční koeficient.
15
Redukce z nadmořské výšky
S = HD − HD
H [ m] . R[m]
(2.4)
Jsou-li známy nadmořské výšky obou koncových bodů A, B lze měřenou šikmou délku převést do nulového horizontu přímo S=
SD 2 − ( H A − H B ) 2 . ⎛ H A ⎞⎛ H B ⎞ ⎟ ⎟⎜1 + ⎜1 + R ⎠⎝ R ⎠ ⎝
(2.5)
Redukce do zobrazovací roviny S-JTSK (zobrazovací rovina Křovákova zobrazení)
s =mS ,
(2.6)
kde pro délky do 6km se měřítko zobrazení vypočte jako průměr z měřítek na koncových bodech m=
1 (m A + m B ) . 2
(2.7)
Poznámka: Postup výpočtu měřítka zobrazení m ρ = x2 + y2
je délka průvodiče
⎡ ⎛ ⎛ ρ ⎞β Š = 2 ⋅ ⎢arctg ⎜α ⋅ ⎜⎜ 0 ⎟⎟ ⎜ ⎝ ρ ⎠ ⎢⎣ ⎝
m=
γ ⋅ρ cos Š
⎤ ⎞ ⎟ − 45 o ⎥ ⎟ ⎥⎦ ⎠
(2.8)
je kartografická šířka
je měřítko zobrazení.
(2.9)
(2.10)
16
Konstanty použité pro matematickou redukci délek k = 0,13 R = 6380703,6105 m
ρ0 = 1298039,0046 m α = 9,93100876732582 β = 1,02048656930936 γ = 1, 535 762 769 18 ⋅ 10-7.
2.3
Orientace osnovy vodorovných směrů
Dáno: Souřadnice stanoviska A, souřadnice známých bodů 1,2,3. Měřeno: Osnova vodorovných směrů na bodě A (viz obr. 2.3).
2 P
αAPψAP 1
ψA1 σA1
ψA2 σA2 A σA3 ψ A3
Hz0
3
Οσ
X Obr. 2.3 Orientace osnovy vodorovných směrů
17
Z obrázku 2.3 je vidět, že orientační úhel Οσ nebo též směrník počátku osnovy vodorovných směrů lze vypočítat takto:
Oσ
∑ =
t i =1
(σ Ai − ψ Ai ) t
,
(2.11)
kde ψAi jsou měřené vodorovné směry
αA2 jsou směrníky vypočtené ze souřadnic t je počet orientací a výsledný směrník určovaného bodu pak získáme ze vzorce:
α AP = Oσ +ψ AP .
(2.12)
Tento vzorec se ale při programování příliš neosvědčil. Selhává při průměrování úhlů blízkých nule (například při průměru úhlů v prvním a čtvrtém kvadrantu). Použil jsem proto vztah, který slouží pro výpočet polárních souřadnic těžiště bodů zobrazených na jednotkové kružnici.
∑ Oσ = arctg ∑
t
i =1 t
sin(σ Ai −ψ Ai )
cos(σ Ai −ψ Ai ) i =1
α1
+Y 1 [cos α1, sin α1, ]
.
0 α2
αΤ T
2 [cos α2, sin α2, ] +X
Obr. 2.4 Jednotková kružnice
18
Souřadnice těžiště se obecně vypočítají podle vzorců: YT
∑ =
t i =1
Yi
t
XT
∑ =
t
∑
sin(α i )
i =1
Xi
t
.
(2.13)
V tomto případě podle obrázku 2.4 platí
sin α1 + sin α 2 = YT = 2 XT =
t i =1
t
∑i=1 cos(α i ) t
cos α1 + cos α 2 = 2
.
(2.14)
t
Převodem pravoúhlých souřadnic na polární dostaneme
α T = arctg
YT , XT
(2.15)
což je zároveň směrník těžiště a dosazením rovnic (2.14) do rovnice (2.15) získáme výsledný vztah, který nám zároveň poslouží jako obecný průměr úhlů
∑ = arctg ∑
t
Oσ
i =1 t
sin(σ Ai − ψ Ai )
cos(σ Ai − ψ Ai ) i =1
.
K vypočteným směrníkům je možno také vypočítat střední chyby: )
σ0 =
∑ vv t −1
je odhad střední chyby jednotkové z oprav a představuje střední chybu měřeného směru,
)
σo = )
σα =
∑ vv
t (t − 1)
je odhad střední chyby orientačního úhlu (posunu) ,
t +1 ) σ 0 je střední chyba směrníku vypočteného z orientace, t
kde vi = (σ i −ψ i ) − Oσ .
19
(2.16)
2.4
Transformace souřadnic v rovině
Geometrický význam: Přechod od jedné soustavy souřadnic k jiné soustavě souřadnic souhlasně orientované. Dáno: Souřadnice identických bodů v soustavě I a II. 0I +Y
+y y cosω
ω
y sinω
ω P
X0 0II
x ω y
Y0
x cosω y sinω
ω
||
+X
+x Obr. 2.5 Transformace souřadnic
Transformační rovnice – viz obr. 2.5 X = X 0 + q x cos ω − q ysin ω Y = Y0 + q x sin ω + q ycos ω
,
kde q je měřítko transformace (též délkový modul) ω je směrník kladné části osy X soustavy II v soustavě I.
Jiné odvození transformačních rovnic lze nalézt v [1].
20
(2.17)
2.5
Protínání vpřed z délek
Geometrický význam: Průsečík dvou kružnic. Dáno: souřadnice bodů A , B (viz obr. 2.6). Měřeno: délky sAP, sBP .
0 +Y
P
+y
sAP
sBP
+X
k +x
A
n
m
B
Obr. 2.6 Protínání vpřed z délek
m=
2
2
2
2
2
2
s AB + s AP − s BP , 2s AB
s + s BP − s AP n = AB , 2s AB
2
2
k = s AP − m 2 = s BP − n 2 , k > 0 .
Aplikací rovnic shodnostní transformace dostaneme vzorce pro výsledné souřadnice YP = YB +
k ∆X AB + n ∆YAB s AB
n ∆X AB − k ∆YAB XP = XB + s AB
21
.
(2.18)
2.6
Protínání vpřed z úhlů
Geometrický význam: Průsečík 2 polopřímek Dáno: Souřadnice bodů A , B (viz obr. 2.7). Měřeno: Směry ψAP, ψAB, ψBP, ψBA.
0 +Y
P
+y
Hz0
ψAP
k β
α
+x
A ψAB
n
m Hz0
+X
ψBP
ψBA
B
Obr. 2.7 Protínání vpřed z úhlů
α = ψ AB −ψ AP β = ψ BP −ψ BA
k=
s AB cotgα + cotgβ
m=
s AB cotgα cotgα + cotgβ
n=
s AB cotgβ . cotgα + cotgβ
Po aplikaci shodnostní transformace dostaneme výsledné vzorce ∆X AB + ∆YAB cotgβ cotgα + cotgβ . − ∆YAB + ∆X AB cotgβ XP = XB + cotgα + cotgβ
YP = YB +
22
(2.19)
2.7
Protínání vpřed z orientovaných směrů
Geometrický význam: Průsečík 2 polopřímek. Dáno: souřadnice bodů A , B (viz obr.2.8), orientované směry αAP, αBP. (viz. Kap. 2.3 Orientace osnovy vodorovných směrů).
0 +Y
P
αAP
A
B
αBP
+X
Obr. 2.8 Protínání vpřed z orientovaných směrů
Úloha se řeší jako průsečík dvou přímek a = cotgα AP b = cotgα BP J = a−b ∆X AB − a ∆Y AB Q= J
YP = YB + Q XP = XB + b Q
23
.
(2.20)
2.8
Protínání zpět
Dáno: souřadnice bodů 1, 2, 3 (viz obr. 2.9). Měřeno: směry ψP1, ψP2, ψP3 .
2 1
α β
ψP2
ψP1 P
ψP3
3
Hz0
Obr. 2.9 Protínání zpět
Vzorce pro výpočet protínání zpět vycházejí z Cassiniho řešení
α = ψ P 2 −ψ P1 β = ψ P 3 −ψ P 2 ∆YBT = −∆Y AB + ∆X AB cotgα ∆X BT = − ∆X AB − ∆Y AB cotgα p = − ∆YBT − ∆YBC − ∆X BC cotgβ q = ∆X BT + ∆X BC + ∆YBC cotgβ
p q K =− q p J =K+L
L=−
m=
∆YBT + L ∆X BT
J
YP = YB + K m XP = XB + m
24
.
(2.21)
2.9
Polygonový pořad
Geometrický význam: Lomená čára, měřicky spojená pomocí měřených délek a levostranných úhlů. Postupně na sebe navazující rajóny. Dáno: souřadnice počátečního a koncového bodu P, K, souřadnice orientačních bodů A, B. Měřeno: levostranné úhly ωi, délky si,i+1 .
B A
ω2 ω1(=ωP)
s12 σPA
P(=1)
2
ω4(=ωK) ω3
s23 3
s34
σKB
K(=4)
||X ||X
Obr. 2.10 Polygonový pořad
2.9.1 Přibližné řešení Přibližné řešení znamená vyrovnání polygonového pořadu rovnoměrným rozdělením úhlové odchylky na jednotlivé vrcholy pořadu a rozdělení odchylek souřadnic úměrně absolutním hodnotám souřadnicových rozdílů. Úhlové vyrovnání
α12 = σ PA + ω P
25
α i ,i +1 = α i −1,i + ωi ± 200 [ gon] Oω = σ KB − (σ PA + ∑ ωi − (k − 1) ⋅ 200 [ gon]) je úhlová odchylka, která se rozděluje
rovnoměrně na všechny body polygonového pořadu
δω =
Oω …oprava vrcholového úhlu k
Výpočet směrníků
α12 = σ PA + (ω P + δ ω ) α i ,i +1 = α i −1,i + (ωi + δ ω ) − 200 [ gon] . Výpočet přibližných souřadnicových rozdílů 0 ∆YPK = ∑ si ,i +1 sin α i ,i +1
∆Yi ,0i +1 = si ,i +1 sin α i ,i +1
0 ∆X PK = ∑ si ,i +1 cos α i ,i +1
∆X i0,i +1 = si ,i +1 cos α i ,i +1
.
Výpočet souřadnicových odchylek OY a OX ( podle pravidla „má býti“ – „jest“) OY = (YK − YP ) − ∑ si ,i +1 sinα i ,i +1
OX = ( X K − X P ) − ∑ si ,i +1 cosα i ,i +1
OP = OY2 + OX2
je polohová odchylka.
Podélná a příčná odchylka se vypočtou podle vzorců
Ol = OX cosσ PK + OY sinσ PK Oq = −OX sinσ PK + OY cosσ PK
.
Odchylky OY a OX se rozdělí úměrně absolutním hodnotám souřadnicových rozdílů
δYi ,i +1 =
OY ∆Yi ,0i +1 0 ∑ ∆Yi,i+1
OX δX i ,i +1 = ∆X i0,i +1 0 ∑ ∆X i,i +1
.
26
Výpočet vyrovnaných souřadnic
Yi = Yi −1 + 0∆Yi −1,i + δYi −1,i X i = X i −1 + 0∆X i −1,i + δX i −1,i
.
(2.22)
2.9.2 Vyrovnání MNČ Obecný nelineární matematický model měření je
F( L ) = 0 …. m rovnic o n neznámých, kde
L je vektor bezchybných řešení. Pro model podmínkových měření platí
F( L ) = 0
měření jsou vázána matematickými podmínkami.
Model podmínkových měření musí být splněn i pro vyrovnané hodnoty měření
F (L + v ) = 0 ,
(2.23)
kde L je vektor měřených veličin
v je vektor oprav měření Linearizovaný model je D v + U = 0 ..přetvořené podmínkové rovnice, ( m , n ) ( n ,1)
( m,n )
kde
U je vektor uzávěrů F(L) = U
∂F1 ⎛ ∂F1 ⎞ (L), L (L ) ⎟ ⎜ ∂Ln ⎜ ∂L1 ⎟ ∂F = M M M ⎜ ⎟ , D = T (L) . D ∂L ( m ,n ) ∂Fm ⎜ ∂Fm ⎟ ( ), ( ) L L L ⎜ ∂L ⎟ ∂Ln ⎝ 1 ⎠
27
(2.24)
v T Pv = min. a opravy musí též splnit lineární model
Kritérium MNČ je
D v+U = 0.
Řešení: pomocí Lagrangeovy metody neurčitých koeficientů (korelát)
ϕ ( v ) = v T Pv − 2k T (Dv + U) = min . ∂ϕ = 2P v − 2 D T k = 0 T ∂v
v = P −1DTk .
(2.25)
Dosazením oprav do rovnice (2.24) (DP −1DT ) k + U = 0 k = −(DP −1DT ) −1 U
.
(2.26)
Sloučením rovnic (2.25) a (2.26) dostaneme výsledné opravy měření v = −P −1DT (DP −1DT ) −1 U .
Vyrovnaná měření jsou ) L = L+ v.
(2.27)
Aposteriorní střední chyba jednotková )
σ0 =
vTP v U T (DP −1DT ) −1 U = . m m
Pro konkrétní polygon (viz obr. 2.10) platí měřených úhlů: k měřených délek: k - 1
počet souřadnic určovaných bodů: 2( k – 2 ) = 2k - 4 počet podmínek: ( 2k – 1 ) – (2k – 4 ) = 3.
celkem měření: 2k - 1
28
Sestavení podmínkových rovnic ∆X 12 + ∆X 23 + ∆X 34 − ( X K − X P ) = 0
U1 = −OX
∆Y12 + ∆Y23 + ∆Y34 − (YK − YP ) = 0
uzávěry
σ PA + ∑ ω − σ KB − (n − 1) ⋅ 200 [ gon] = 0
U 2 = −OY . U 3 = −Oω
Rozepsáním podmínkových rovnic pro tento příklad dostaneme s12 cos(σ PA + ω1 ) + s23 cos(σ PA + ω1 + ω2 ) + s34 cos(σ PA + ω1 + ω2 + ω3 ) − ( X K − X P ) = 0 s12 sin(σ PA + ω1 ) + s23 sin(σ PA + ω1 + ω2 ) + s34 sin(σ PA + ω1 + ω2 + ω3 ) − (YK − YP ) = 0
σ PA + ω1 + ω2 + ω3 − σ KB − (k − 1) ⋅ 200 [ gon] = 0. Sestavení matice D ⎛ cos α12 ⎜ D = ⎜ sin α12 ( 3, n ) ⎜ 0 ⎝
cos α 23
cos α 34
− ∆Y140
− ∆Y240
− ∆Y340
sin α 23 0
sin α 34 0
∆X 1
∆X 1
∆X 1
0 14
0 24
0 34
0⎞ ⎟ 0⎟ . 1 ⎟⎠
Vektor uzávěrů
U = (U1 ,U 2 ,U 3 )T . Matice vah je diagonální P = diag(σ s212 , σ s223 , σ s234 , σ ω21 , σ ω22 , σ ω23 , σ ω24 ).
Jelikož VBA neobsahuje knihovnu pro práci s maticemi, bylo potřeba vyřešit problém výpočtu inverze matice. V tomto případě, kdy máme právě 3 nadbytečná měření a tedy právě 3 podmínkové rovnice, budeme provádět inverzi matice 3×3. Ta může být řešena numericky takto: ⎛ a, d , ⎜ A = ⎜ d , b, ⎜ e, f , ⎝
29
e⎞ ⎟ f ⎟, c ⎟⎠
⎛ bc − f 2 , ef − cd , df − be ⎞ ⎟ 1 ⎜ A −1 = ⎜ ef − cd , ac − e 2 , de − af ⎟ , det A ⎜ 2⎟ ⎝ df − be, de − af , ab − d ⎠ kde det A = abc + 2def - (be 2 + af 2 + cd 2 ) .
2.10 Zápisník měřených vodorovných směrů Odvození výpočtu zápisníku vodorovných směrů ze nebude uvedeno, protože je značně dlouhé a vede ke známé skutečnosti, že výsledný směr je aritmetickým průměrem redukovaných směrů z jednotlivých skupin. Podrobné odvození je uvedeno například v [2]. Předpokládá se, že směry jsou měřeny v obou polohách dalekohledu a počátek je na konci osnovy směrů změřen opakovaně. V rámci výpočtu směrů se počítají také střední chyby: Střední chyba řádkového průměru s
sψ =
∑w i =1
2 i
s ( s − 1)
a jejich kvadratický průměr n
∑ sψ
σψ =
i=2
2 i
k −1
,
aposteriorní odhad jednotkové střední chyby z vyrovnání
2 ⎛ k 2 1⎛ k ⎞ ⎜ w − ⎜ w ⎞⎟ ⎟ ∑ ⎜ ∑ ij k ⎝ ∑ ij i =2 ⎠ ⎟⎠ ) 2 j =1 ⎝ i = 2 σ0 = , ( s − 1)(k − 1) s
30
kde s je počet skupin k je počet směrů w je oprava redukovaného směru, která se vypočte jako rozdíl výsledného směru a směru redukovaného ve skupině. Důležité je to, že součet oprav redukovaných směrů v řádcích je nula, ale ve sloupcích nikoliv.
2.11 Helmertova transformace
Helmertova transformace je podobnostní transformace při nadbytečném počtu identických bodů. Transformační klíč se řeší metodou nejmenších čtverců – vyrovnáním měření zprostředkujících. Pro výpočet ve formuláři byla zvolena redukce souřadnic identických bodů k těžišti, při které není potřeba provádět maticové výpočty a během výpočtů lze provádět průběžné kontroly výpočtu konstant transformačních rovnic a je zaručena numerická stabilita výpočtu. Dáno: souřadnice identických bodů v soustavě I a II. Výpočet transformačních koeficientů
λ1 λ2
∑ (ξ X = ∑ (ξ ∑ (ξ Y = ∑ (ξ
R
+ ηY R )
2
+η 2 )
R
−η X R )
2
.
+η 2 )
Výpočet transformovaných souřadnic ) X = X T + λ1ξ − λ2η , ) Y = YT + λ2ξ + λ1η
31
kde
η,ξ jsou souřadnice v soustavě II redukované k těžišti YR, XR jsou souřadnice v soustavě I (S-JTSK) redukované k těžišti ) ) X , Y jsou transformované souřadnice YT, XT jsou souřadnice těžiště v soustavě I. Pro každý identický bod se dále vypočte pokles součtu čtverců oprav po vypuštění jednoho identického bodu z výpočtu Helmertovy transformace, který slouží k identifikaci chybného identického bodu. Vypočte se podle vzorce
δ vv = i
v y2 + v x2 s 'i2 n −1 − n ∑ s'i2
,
kde ) ) vy, vx jsou souřadnicové rozdíly (opravy) identických bodů, v y = Y − Y , v x = X − X
s'i je vzdálenost vyloučeného bodu od těžiště soustavy II (těžiště se počítá pouze z identických bodů)
∑ s'
i
je součet vzdáleností všech bodů od těžiště
n je počet identických bodů.
32
3
Návody Většina elektronických formulářů vychází ze známých papírových výpočetních
formulářů pro řešení základních geodetických úloh a jejich vyplňování a čtení by mělo být uživateli povědomé. 3.1
Oboustranně připojený a oboustranně orientovaný polygonový pořad
Formulář řeší oboustranně připojený oboustranně orientovaný polygonový pořad. Na počátku a na konci je možno měřit na více známých bodů a provést tak orientaci osnovy vodorovných směrů. Formulář je sestaven tak, že výsledný orientační směr je orientovaný počátek osnovy vodorovných směrů na počátku a na konci. Maximální počet určovaných bodů polygonového pořadu je 12. Výpočet lze provádět dvěma způsoby 1. Oddělené úhlové a souřadnicové vyrovnání, kdy se souřadnicový uzávěr rozdělí úměrně absolutním hodnotám souřadnicových rozdílů 2. Současné úhlové a souřadnicové vyrovnání metodou nejmenších čtverců.
Obecně lze říci, že se vyplňují pouze barevně podbarvené buňky v listech pocatek, konec a vstup. Jako první se vyplní v listu vstup číslo a souřadnice počátečního bodu polygonového pořadu. Dále se vyplní měřené orientační směry na počátku - čísla bodů, souřadnice a vodorovné směry a to včetně prvního určovaného bodu polygonového pořadu. U něj se samozřejmě nevyplňují souřadnice. Směry je možno zadávat v libovolném pořadí, jen je třeba první určovaný bod polygonu uvést v seznamu na prvním místě. Velmi podobně se vyplní měření na posledním bodě polygonového pořadu v listu konec, jen se do seznamu orientací na první místo uvede číslo a směr posledního určovaného bodu polygonového pořadu. K měřeným veličinám na koncových bodech polygonového pořadu je ještě třeba doplnit v listu vstup měřené délky - délku vpřed na počátku a délku zpět na konci. Dále se v tabulce určované body vyplní měřené veličiny na určovaných bodech číslo bodu, směr zpět, směr vpřed, délku zpět a délku vpřed (na prvním určovaném
33
bodě měření zpět znamená měření na počátek a měření vpřed měření na druhý určovaný bod atd.). Pokud se délky neměřily dvakrát (např. se neměřilo zpět), nechá se příslušná buňka prázdná a bude se počítat jen s tou měřenou, jinak se jako výsledek bere jejich průměr. Pokud jsou k dispozici přímo měřené úhly, do směru zpět se zadá 0 a do směru vpřed měřený úhel. Pro druhý způsob výpočtu MNČ je potřeba kvůli volbě vah ještě vyplnit informace o přesnostech měřených veličin. Výpočet se spouští tlačítky v listu vstup a výsledný formulář se generuje v listu zápisník. V listu zápisník je také tlačítko vymaž formulář, které vymaže danou oblast listu a nechá tam pouze prázdný zápisník. Toto je vhodné provádět před každým výpočtem, aby se náhodou nestalo, že tam zůstanou nějaká dřívější data, v nově vypočteném zápisníku nebudou přepsána a budou tam jen mást uživatele. 3.2
Oboustranně připojený a oboustranně orientovaný polygonový pořad s právě jednou orientací na počátku a na konci
Formulář řeší oboustranně připojený oboustranně orientovaný polygonový pořad. Na počátku a na konci je možno měřit na více známých bodů a provést tak orientaci osnovy vodorovných směrů. Formulář je sestaven tak, že výsledný orientační směr je orientovaný počátek osnovy vodorovných směrů na počátku a na konci. Maximální počet určovaných bodů polygonového pořadu je 12. Výpočet lze provádět dvěma způsoby 1. Oddělené úhlové a souřadnicové vyrovnání, kdy se souřadnicový uzávěr rozdělí úměrně absolutním hodnotám souřadnicových rozdílů 2. Současné úhlové a souřadnicové vyrovnání metodou nejmenších čtverců. Vyplňují se pouze barevně podbarvené buňky v listu vstup, přičemž oranžově podbarvené buňky jsou povinné údaje. Nejprve se vyplní povinné údaje, tedy čísla a souřadnice počátečního a koncového bodu polygonového pořadu a obou orientačních bodů. Dále se v tabulce určované body vyplní měřené veličiny na určovaných bodech - číslo bodu, směr zpět, směr vpřed, délku zpět a délku vpřed (na prvním určovaném bodě měření zpět znamená měření na počátek a měření vpřed měření na druhý určovaný bod atd.). Pokud se délky neměřily dvakrát, nechá se příslušná buňka
34
prázdná a bude se počítat jen s tou měřenou, jinak je jako výsledek brán jejich průměr. Pokud jsou k dispozici přímo měřené úhly, do směru zpět se zapíše 0 a do směru vpřed měřený úhel. Měřená délka vpřed na počátečním bodě, měřená délka zpět na koncovém bodě a měřené směry na počátečním a koncovém bodě se zapisují do vyznačených buněk vedle souřadnic počátečního a koncového bodu. Pro druhý způsob výpočtu metodou nejmenších čtverců je potřeba kvůli volbě vah ještě vyplnit informace o přesnostech měřených veličin. Výpočet se spouští tlačítky v listu vstup a výsledný formulář se generuje v listu zápisník. V listu zápisník je také tlačítko vymaž formulář, které vymaže danou oblast listu a nechá tam pouze prázdný zápisník. Toto je vhodné provádět před každým výpočtem, aby se náhodou nestalo, že tam zůstanou nějaká dřívější data, v nově vypočteném zápisníku nebudou přepsána a budou tam jen mást uživatele. 3.3
Helmertova transformace
Vyplňují se pouze žlutě podbarvená políčka - tedy čísla bodů, souřadnice všech bodů s soustavě (II) a u identických bodů navíc souřadnice v soustavě (I). Konečným výsledkem jsou souřadnice určovaných bodů v soustavě (I). K posouzení přesnosti transformace slouží tlačítka Seřaď a Vyluč podezřelý bod. Tlačítko Seřaď seřadí vzestupně identické body podle hodnoty δvv a tím posune bod s největším poklesem .... na konec seznamu. Tlačítko Vyluč podezřelý bod spouští makro, které vytvoří nový list s tím, že vypustí ze seznamu identických bodů ten bod, který si zvolíme.V seznamu po něm zůstane jen jeho číslo, abych bylo vidět který bod se vylučoval. Pro správný běh cyklů je potřeba, aby v názvech bodů byly pouze čísla a ne písmena. Tlačítko Vyluč podezřelý bod vytváří nové listy, které je poté nutno mazat ručně (pravým tlačítkem na jméno listu a Odstranit), když se rozhodnu, že vyloučený bod chci zachovat nebo při novém výpočtu. Excel bohužel neumožňuje uzamknout jeden konkrétní list proti smazání. Proto je potřeba dát pozor a nesmazat si původní list Helmert, ze kterého vycházejí další výpočty.
35
3.4
Protínání vpřed z úhlů
Ve formuláři se vyplňují pouze čísla bodů, souřadnice bodů A a B a úhly α a β ve formátu g, c, cc podle obrázku. Výpočet se spustí zadáním desetitisícin (vteřin) u úhlu β. Vypočtené souřadnice lze považovat za správné až po vyplnění všech potřebných údajů. 3.5
Protínání vpřed z orientovaných směrů
Ve formuláři se vyplňují pouze čísla bodů, souřadnice bodů A a B a směrníky σAP a σBP ve formátu g, c, cc podle obrázku. Výpočet se spustí zadáním desetitisícin (vteřin) u směrníky σBP. Vypočtené souřadnice lze považovat za správné až po vyplnění všech potřebných údajů.
3.6
Protínání vpřed z délek
Ve formuláři se vyplňují pouze čísla bodů, souřadnice bodů A a B a délky sAB a sBP podle obrázku. Výpočet se spustí zadáním délky sBP. Vypočtené souřadnice lze považovat za správné až po vyplnění všech potřebných údajů. 3.7
Protínání zpět
Ve formuláři se vyplňují pouze čísla bodů, souřadnice bodů A, B, C a směry ψ1, ψ2, ψ3 ve formátu g, c, cc podle obrázku. Výpočet se spustí zadáním desetitisícin (vteřin) u směru ψ3. Vypočtené souřadnice lze považovat za správné až po vyplnění všech potřebných údajů. Pro správnost výpočtu je potřeba, aby platila relace ψ1 < ψ2 < ψ3.
36
3.8
Polární metoda
Formulář kombinuje výpočet osnovy vodorovných směrů s výpočtem polární metody. Vyplňují se pouze barevně podbarvená políčka v listu mereni. Nejprve se vyplní údaje o stanovisku - číslo bodu, souřadnice a výška. Poté se vyplňují údaje o měřených veličinách - čísla bodů, vodorovné směry, u známých bodů jejich souřadnice a u určovaných bodů také buď zenitový úhel a měřená šikmá délka nebo pokud je známa, tak nadmořská výška. Délky budou opraveny o matematické redukce až do roviny Křovákova zobrazení a u určovaných bodů se vypočtou jejich souřadnice. Pokud jsou k dispozici přímo měřené vodorovné délky, zapíší se do kolonky šikmých délek a zenitový úhel se zadá 100g. Zároveň se v listu zapisnik vygeneruje zápisník osnovy orientovaných směrů. V něm jsou vidět vypočtené orientované směry a jednotlivé opravy směrníku počátku osnovy vodorovných směrů pro každý známý bod. Podle ní je případně možno vyloučit odlehlý bod.
3.9
Zápisník měřených vodorovných směrů
Ve formuláři se vyplňuje hlavička, čísla bodů a měřené směry ve formátu g, c, cc. Zápisník je stavěn tak, že je možno měřit jen ve dvou skupinách nebo pouze minutovým přístrojem. Součástí formuláře je také výpočet řádkových středních chyb a odhad jednotkové střední chyby. Vypočtené vyrovnané směry lze považovat za správné až po vyplnění všech potřebných údajů. Formulář nekontroluje správnost zadávaných hodnot např. jestli rozdíl mezi polohami je 200g, toto si musí ohlídat sám uživatel. V tomto případě lze ovšem chybu odhalit podle střední chyby řádkového průměru.
37
4
Ukázky práce s formuláři V této kapitole budou předvedeny praktické ukázky prací s formuláři. Potřebná
měření byla převzata od vedoucího diplomové práce. Jedná se o měření, která pochází z měření v rámci výuky geodézie v terénu. Výsledné souřadnice byly několikrát nezávisle zkontrolovány jak ručním výpočtem tak v programu Groma. 4.1
Observace
Úkol: Určit souřadnice bodu 102.2: 1. rajónem z excentrického stanoviska 2. protínáním z orientovaných směrů z bodů 4001 a 104.1 Osnova měřených vodorovných směrů na excentrickém stanovisku 102.2 ex
38
Výpočet souřadnic excentrického stanoviska protínáním zpět ze dvou kombinací
Orientace osnovy vodorovných směrů na excentrickém stanovisku 102.2ex
39
Výpočet souřadnic bodu 102.2 polární metodou (rajónem)
Výpočet souřadnic bodu 102.2 protínáním z orientovaných směrů
40
4.2
Helmertova transformace
Úkol: Byla zaměřena síť bodů (viz obr. 4.1). Vypočtěte protínáním vpřed z úhlů a délek souřadnice všech bodů v soustavě II. Helmertovou transformací vypočtěte pomocí identických bodů souřadnice všech určovaných bodů v soustavě I (SJTSK).
Obr. 4.1 Měřická síť
Počátek pomocné soustavy (II.) byl vložen do bodu 505 a kladná část osy X směřuje do bodu 504.
41
42
Bod 11 byl identifikován jako podezřelý, byl z výpočtu vypuštěn a celá transformace přepočítána bez něj.
43
4.3
Polygonový pořad
Úkol: Vypočtěte souřadnice bodů polygonového pořadu (viz. obr 4.2) přibližným výpočtem a poté metodou nejmenších čtverců.
Obr. 4.2 Polygonový pořad
44
Vstupní hodnoty
Přibližný výpočet
45
Vyrovnání metodou nejmenších čtverců
Nebyly shledány rozdíly mezi výsledky z elektronických formulářů a výsledky, které byly získány od vedoucího diplomové práce.
46
5
Závěr Cílem diplomové práce bylo vytvoření několika elektronických formulářů v programu MS Excel řešících vybrané základní geodetické úlohy v rovině. Vybrány byly tyto formuláře: Směrník a délka, Zápisník měřených vodorovných směrů, Orientace osnovy, Polární metoda, Protínání z délek, Protínání vpřed z úhlů, Protínání vpřed z orientovaných směrů, Protínání zpět, Helmertova transformace, Polygonový pořad (oboustranně připojený a oboustranně orientovaný). Teoretická část práce je popsána v kapitole 2 a vychází z dostupné literatury. V jednom případě bylo potřeba k výpočtům vlastní odvození (vzorec na průměrování úhlů). K praktické části bylo nutné se nejprve seznámit s programováním ve VBA, který je součástí aplikace MS Excel a ve kterém byly prováděny složitější operace. Jelikož se nikde na oboru geodézie a kartografie programování ve VBA nevyučuje, byl velkým přínosem pro moji diplomovou práci kurz Tabulkové procesory 2, který pořádá výpočetní a informační centrum na fakultě. Tato diplomová práce měla experimentální charakter a jejím cílem bylo také vyzkoušet možnosti programu MS Excel při tvorbě elektronických formulářů, které se běžně používají v geodézii. Samotná tvorba formulářů a programování ve VBA se mi dělalo celkem bez problémů, velmi se mi líbily možnosti vstupů a výstupů. VBA pracuje jako ostatní jazyky s vnitřními proměnnými, ale během výpočtu se může mimo jiné odkazovat kamkoliv do sešitu a tam načítat nebo vkládat data do buněk. Toto považuji při tvorbě formulářů za velkou výhodu. Jako nevýhodu bych naopak viděl, že VBA v sobě neobsahuje knihovny pro práci s maticemi a nikde jsem je ani nenašel. Tento problém se dá vyřešit například tím, že maticové operace se mohou provádět na úrovni listů MS Excel, i když to pro programování není úplně ideální. Další komplikace nastala při komunikaci mezi MS Excel a VBA – jeden používá desetinné čárky, druhý desetinné tečky a v určitých situacích to může dělat potíže. Problém i jeho řešení byl popsán v kapitole 1.3.4. Celkově lze říci, že pro tuto diplomovou práci byly MS Excel i VBA vhodné nástroje, práce v nich byla srozumitelná a výsledkem jsou přehledné formuláře, které řeší zadání diplomové práce. Nevýhodou je
47
potom nemožnost znázorňovat výsledky geodetických výpočtů graficky a již zmiňovaná absence maticových knihoven. V tomto případě bylo u vyrovnání polygonového pořadu metodou nejmenších čtverců pro násobení matic využito cyklů. Inverze matice se prováděla pouze v jednom případě u matice 3×3 a to obecně pomocí Cramerova pravidla. Formuláře jistě naleznou v praxi své uplatnění, i kdyby zatím jen pro studijní potřeby či výpočty menšího rozsahu. Zápisník měřených vodorovných směrů již používali studenti druhého ročníku při řešení svých úloh. Formuláře byly testovány i v open-source programu OpenOffice.org Calc, který je součástí freewareové kancelářské sady OpenOffice.org a fungují v něm všechny formuláře, které se nepočítají pomocí maker ve VBA. Sada OpenOffice.org defaultně podporuje formát MS Office, ale pro programování maker používá jiné jazyky. Formuláře by šly jistě dále rozšiřovat, například vůbec nejsou řešeny výpočty výšek a myslím si, že by bylo možné vytvořit celý ucelený software pro potřeby například inženýrské geodézie nebo katastru nemovitostí. Vytvořené zdrojové kódy nebyly vytištěny jako příloha diplomové práce, ale jsou součástí vytvořených formulářů na přiloženém CD.
48
6
Literatura
[1]
RATIBORSKÝ, J.: Geodézie 10. Praha, ČVUT 2000.
[2]
SKOŘEPA, Z.: Geodézie 40. Praha, ČVUT 2002.
[3]
SKOŘEPA, Z - VOBOŘILOVÁ, P.: Geodézie 1, 2 (Návody na cvičení). Praha, ČVUT 2004.
[4]
BUBENÍK, F. - PULTAR, M. - PULTAROVÁ, I.: Matematické vzorce a metody. Praha, ČVUT 2001.
[5]
VLASÁK, J. DUŠEK Z.: Geodézie 40 Příklady a návody na cvičení. Praha, ČVUT 2000.
[6]
RADOUCH, V. - HAMPACHER, M.: Teorie chyb a vyrovnávací počet 20, Praha , ČVUT 2000.
[7]
BARTSCH, H.-J.: Matematické vzorce. Praha, SNTL 1965.
49
Příloha 1 – Obsah přiloženého CD Obsah přiloženého CD Adresář: /Text diplomová práce ve formátu pdf /Formuláře vytvořené nevyplněné formuláře /Ukázky vytvořené formuláře s vyplněnými vzorovými úlohami
50