MÉRŐÁLLOMÁSSAL MÉRT POLÁRIS MÉRÉSEK FELDOLGOZÁSA

Hasonló dokumentumok
KIEGYENLÍTŐ SZÁMÍTÁSOK, ILLESZTÉSEK ALAPJAI

D X F F Á J L K É S Z Í T É S E M A T L A B B A L

Geodézia terepgyakorlat számítási feladatok ismertetése 1.

Mérési vázlat készítése Geoprofi 1.6 részletpont jegyzőköny felhasználásával

FÖLDMÉRÉS ISMERETEK EMELT SZINTŰ ÍRÁSBELI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ A MINTAFELADATOKHOZ

3. óra: Digitális térkép készítése mérőállomással. II.

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Azonosító jel: ÉRETTSÉGI VIZSGA május 17. FÖLDMÉRÉS ISMERETEK EMELT SZINTŰ ÍRÁSBELI VIZSGA május 17. 8:00. Időtartam: 60 perc

% % MATLAB alapozó % % , Földváry Lóránt % Laky Piroska (kiegészítés)

Matematikai geodéziai számítások 7.

10. gyakorlat Struktúrák, uniók, típusdefiníciók

GeoCalc 3 Bemutatása

Poláris részletmérés mérőállomással

1. Olvassuk be két pont koordinátáit: (x1, y1) és (x2, y2). Határozzuk meg a két pont távolságát és nyomtassuk ki.

Gyakran Ismétlődő Kérdések

MATLAB. 9. gyakorlat. Cellatömbök, struktúrák, fájlműveletek

ÁGAZATI SZAKMAI ÉRETTSÉGI VIZSGA FÖLDMÉRÉS ISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ A MINTAFELADATOKHOZ

BASH SCRIPT SHELL JEGYZETEK

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Geodéziai számítások

A számok kiíratásának formátuma

A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei. Atomerőművek üzemtana

AWK programozás, minták, vezérlési szerkezetek

MATLAB alapismeretek II.

FÖLDMÉRÉS ISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Mivel a földrészleteket a térképen ábrázoljuk és a térkép adataival tartjuk nyilván, a területet is a térkép síkjára vonatkoztatjuk.

Baran Ágnes. Gyakorlat Függvények, Matlab alapok

Paksi Atomerőmű II. blokk lokalizációs torony deformáció mérése

FÖLDMÉRÉS ISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

Függvények ábrázolása

3. ZH-ban a minimum pontszám 15

A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei

7. gyakorlat. Fájlkezelés IO haladó Függvények haladó

GeoEasy lépésről lépésre

Matematikai geodéziai számítások 9.

Matlab alapok. Baran Ágnes. Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

BASH script programozás II. Vezérlési szerkezetek

S z á m í t ó g é p e s a l a p i s m e r e t e k

AWK programozás, minták, vezérlési szerkezetek

M A T L A B A D A T O K B E O L V A S Á S A / K I Í R Á S A

Matematikai geodéziai számítások 9.

Baran Ágnes. Gyakorlat Komplex számok. Baran Ágnes Matematika Mérnököknek Gyakorlat 1 / 33

Vízszintes kitűzések gyakorlat: Vízszintes kitűzések

length (s): Az s karaklerlánc hossza, substr(s,m,n): Az s mezőben levő karakterláncnak az m-edik karakterétől kezdődő, n darab karaktert vágja ki.

MATLAB. 3. gyakorlat. Mátrixműveletek, címzések

QGIS Gyakorló. 1. kép: Koordináta levétel plugin bekapcsolása.

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

ÉRETTSÉGI VIZSGA május 17. FÖLDMÉRÉS ISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI VIZSGA május 17. 8:00. Időtartam: 180 perc

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

AWK programozás Bevezetés

Gyakorló feladatok az 1. nagy zárthelyire

2. Készítsen awk szkriptet, amely kiírja az aktuális könyvtár összes alkönyvtárának nevét, amely februári keltezésű (bármely év).

Matlab alapok. Vektorok. Baran Ágnes

Baran Ágnes. Gyakorlat Komplex számok. Baran Ágnes Matematika Mérnököknek Gyakorlat 1 / 16

Numerikus matematika

1. Írjunk programot mely beolvas két egész számot és kinyomtatja az összegüket.

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Egészítsük ki a Drupal-t. Drupal modul fejlesztés

Geodézia 6. A vízszintes mérések alapműveletei

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

Operációs rendszerek gyak.

Forgalomtechnikai helyszínrajz

2018, Funkcionális programozás

Fényerősség. EV3 programleírás. Használt rövidítések. A program működésének összegzése

FÖLDMÉRÉS ISMERETEK EMELT SZINTŰ ÍRÁSBELI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

9. Trigonometria. I. Nulladik ZH-ban láttuk: 1. Tegye nagyság szerint növekvő sorrendbe az alábbi értékeket! Megoldás:

Matematikai programok

Regresszió számítás. Tartalomjegyzék: GeoEasy V2.05+ Geodéziai Kommunikációs Program

Azonosító jel: ÉRETTSÉGI VIZSGA május 16. FÖLDMÉRÉS ISMERETEK EMELT SZINTŰ ÍRÁSBELI VIZSGA május 16. 8:00. Időtartam: 60 perc

TANTÁRGYI ADATLAP I. TANTÁRGYLEÍRÁS

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Trigonometria II.

INFORMATIKAI ALAPISMERETEK

Baran Ágnes. Gyakorlat Halmazok, függvények, Matlab alapok. Baran Ágnes Matematika Mérnököknek Gyakorlat 1 / 34

RTCM alapú VITEL transzformáció felhasználó oldali beállítása Trimble Survey Controller szoftver használata esetén

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

KIEGYENLÍTŐ SZÁMÍTÁSOK II.

Matematikai geodéziai számítások 5.

Delphi programozás I.

Mechatronika segédlet 11. gyakorlat

Matematikai programok

FÖLDMÉRÉS ISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

Informatika terméktervezőknek

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

A kivitelezés geodéziai munkái II. Magasépítés

QGIS domborzat modellezés

Szöveges fájl kezelése (a Caesar-kód feltörése) A kód feltörésének statisztikai háttere

7. Laboratóriumi gyakorlat, 1. rész : Vezérlési szerkezetek II.

ÉRETTSÉGI VIZSGA május 16. FÖLDMÉRÉS ISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI VIZSGA május 16. 8:00. Időtartam: 180 perc

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

1. Előadás Matlab lényeges vonásai,

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

INFORMATIKAI ALAPISMERETEK

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

MATLAB gyakorlat. Fájlműveletek folytatás, gyakorlás

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Webprogramozás szakkör

Átírás:

Készítette: Laky Piroska, BME Általános és Felsőgeodézia Tanszék Frissítve: 2014.04.14. MÉRŐÁLLOMÁSSAL MÉRT POLÁRIS MÉRÉSEK FELDOLGOZÁSA POLÁRIS PONT SZÁMÍTÁSÁHOZ SZÜKSÉGES FÜGGVÉNYEK Mérőállomással egyszerre tudjuk mérni a ferde távolságot, a vízszintes és a magassági vagy zenitszöget. Ezekből a mérési eredményekből meghatározhatóak a részletpontok koordinátái, feltéve, hogy tudjuk az álláspont koordinátáit és a tájékozási szöget. Nézzük meg, hogy milyen függvények szükségesek ezek kiszámításához. FOK-PERC-MÁSODPERC FÜGGVÉNY BŐVÍTÉSE (FFF.PPMM ALAKKAL) Az egyik fontos tudnivaló, ha Matlab/Octave segítségével szeretnénk szögfüggvényeket használni, hogy vagy radiánban használjuk a szögeket (pl. sin, cos, tan, atan, atan2 függvények) vagy tizedfokban (ekkor sind, cosd, tand függvények). Fok-perc-másodpercet alapból nem kezel a se a Matlab, se az Octave (igaz a Matlab Mapping toolboxában vannak ilyen függvények is). Az első kiegyenlítő számítások gyakorlaton már előkerült ez a probléma, ahol írtunk is egy függvényt, ami fok-perc-másodpercből átszámol tizedfokba, akár vesszővel vannak elválasztva az értékek, akár vektorban(mátrixban) vannak tárolva. Van azonban egy másik gyakori megadási mód, amikor fff.ppmm formában adják meg az értékeket, áldecimális értékként, ahol a tizedespont előtt van a fok, az első két tizedes a perc, a második két tizedes értéke pedig a másodperc értéke. Pl: 312.0456 jelentése 312 fok 04 perc 56 másodperc. Egészítsük ki a korábbi függvényünket, hogy ilyen bemenetet is értelmezni tudjon. Ehhez egy plusz feltételt kell beiktatni, ha egy bemenet van, annak egy vagy 3 oszlopa van-e (size(f,2))? Ha egy, akkor áldecimálisként adott a fok-perc-másodperc, ha 3, akkor vektorként. function [fok rad]= fpm(f,p,m) % A fuggveny fok-perc-masodperc ertekekbol tizedfokot és radiant szamol. % A bemenet lehet vesszovel elvalasztva fok,perc, masodperc vagy % lehet vektorban megadva [fok perc másodperc] alakban is, vagy % aldecimalis fok ertekben fff.ppmm alakban. % Matrixban/vektorban adott bemenetet is elfogad a fuggveny. % 1. kimenet: tizedfok (skalar vagy vektor bemenettol fuggoen) % 2. kimenet: a szog erteke radianban switch nargin case 3 fok = f + p/60 + m/3600; rad = fok * pi / 180; case 1 if size(f,2)==1 fok = fix(f); f = (f-fok)*100; perc = fix(f); f = (f-perc)*100; mp = fix(f); fok = fok + perc/60 + mp/3600; rad = fok * pi / 180; if size(f,2)==3 fok = f(:,1) + f(:,2)/60 + f(:,3)/3600; rad = fok *pi / 180;

MEGJELENÍTÉS FFF-PP-MM FORMÁTUMBAN Másik hasznos program lehet, ha az eredményt meg tudjuk jeleníteni a geodéziában szokásos fff-pp-mm formában. Ehhez alakítsuk át a szintén korábban megírt függvényünket, ami tizedfokból fok-perc-másodpercbe alakított át. Most a kimenet egy formázott string lesz. function str = fok2fpmstr(x); % A fuggveny tizedfokbol fok-perc-masodperc ertekekbe szamol at. % A kimenet egy formázott string: fff-pp-mm alakban f = fix(x); p = fix((x-f) * 60); m = fix(((x-f)*60-p)*60); str = sprintf('%03d-%02d-%02d', f, p, m); A poláris pontok számításához szükség lesz a tájékozási szög ismeretére, ehhez írjunk egy külön függvényt. A tájékozáshoz szükséges irányszöget számítani a második geodéziai főfeladattal, ezt célszerű külön függvényben megírni. Két kimenete legyen mindkét függvénynek, az irányszög és a távolság. Középtájékozási szögeknél a távolság ismerete is szükséges. IRÁNYSZÖG, TÁVOLSÁG SZÁMÍTÁS Az irányszög számításához használhatjuk a hagyományos atan, vagyis arcus tangens függvényt, ekkor figyelni kell a különböző szögnegyedeket, vagy használhatjuk az atan2 függvényt, ami már figyelembe veszi a szögnegyedeket, és az eredményt π és +π között adja vissza radiánban. Geodéziában a 0-360 fok (vagyis 0-2π ) között tartományban dolgozunk, ezért ha negatív az eredmény, adjunk hozzá 2π-t, majd váltsuk át tizedfokba. A függvénynek két bemenete lesz, P 1 (y 1,x 1 ) és P 2 (y 2,x 2 ) pont és két kimenete d - irányszög, t - távolság. function [d t] = iranyszog(p1,p2) % 2. geodéziai főfeladat, az irányszöget tizedfokban kapjuk y1 = P1(1); x1 = P1(2); y2 = P2(1); x2 = P2(2); dy = y2 - y1; dx = x2 - x1; d = atan2(dy,dx); if sign(d)==-1 d = d + 2*pi; d = d * 180 / pi; t = sqrt(dy^2+dx^2); 2

TÁJÉKOZÁS A tájékozáshoz szükségesek az álláspont koordinátái (A), a tájékozó irány koordinátái (T) és a leolvasott irányérték a tájékozó irányra (l). Kimenet a tájékozási szög (z) és a távolság(t). function [z t] = tajekozas(a, T, l) % tajekozas szamitasa % bemenet: % A - allaspont koordinatai % T - tajekozoirany koordinatai % l - iranyertek (tizedfokban) % kimenet: % z - tajekozasi szog % t - tavolsag sulyozashoz [d t] = iranyszog(a,t); z = d - l; if sign(z)==-1 z = z + 360; POLÁRIS PONT SZÁMÍTÁSA A poláris pont számításához szükséges az álláspont koordinátáinak ismerete, vízszintes távolság és irányszög ismerete. Ezekből megkaphatjuk a P pont koordinátáit (y P,x P ) function P = polaris(a,t,d) ya = A(1); xa = A(2); dy = t * sind(d); dx = t * cosd(d); P(1) = ya + dy; P(2) = xa + dx; TRIMBLE M3 MÉRŐÁLLOMÁS ADATAINAK FELDOLGOZÁSA A fenti függvények általános függvények, bármilyen formátumú mérések feldolgozásához használhatóak. Nézzük meg, hogy például a tanszéken általánosan használt Trimble M3 műszerből hogyan tudjuk kinyerni a mérési adatokat és feldolgozni! Először a műszer fromátumát kell megismerni. Ehhez használhatjuk az interneten fellelhető leírásokat. A műszer egyik kimeneti formátuma az M5 formátum. most ezzel fogunk kicsit ismerkedni, beolvasni, feldolgozni. 3

TRIMBLE M5 FORMÁTUM A Trimble M5 formátum leírása benne van a Trimble M3 műszer angol nyelvű használati utasításban. Az idevágó részt feltettem a tárgy honlapjára, onnan le lehet tölteni. Íme egy példa egy részletre egy M5 formátumú fájlból: For M5 Adr 00080 TI KN STAT For M5 Adr 00081 PI1 A 107 Y 576676.580 m X 190128.530 m Z 187.285 m For M5 Adr 00082 PI1 A 107 Hz 217.0159 DMS V1 88.5541 DMS For M5 Adr 00083 TI Om 119.4651 DMS For M5 Adr 00084 PI1 S 3 Y 577210.871 m X 188881.092 m Z 179.471 m For M5 Adr 00085 TI INPUT th 1.500 m ih 1.485 m For M5 Adr 00086 TI INPUT th 2.000 m ih 1.485 m For M5 Adr 00087 TI ST-OUT For M5 Adr 00088 PI1! 550 Y 577188.620 m X 188926.115 m For M5 Adr 00089 PI1 550 SD 50.218 m Hz 333.4248 DMS V1 90.0951 DMS For M5 Adr 00090 PI1 550 dl 0.003 m dc -0.011 m dr 0.012 m For M5 Adr 00091 PI1 550 dy -0.011 m dx -0.002 m For M5 Adr 00092 TI INPUT th 1.600 m For M5 Adr 00093 TI POLAR For M5 Adr 00094 PI1 951 SD 26.349 m Hz 229.3221 DMS V1 112.0856 DMS For M5 Adr 00095 PI1 951 Y 577192.302 m X 188865.255 m Z 169.422 m karakter példa szöveges típusra példa pont típusra típus 18-20 TI PI1 info 22-48 KN STAT, POLAR, ST OUT, INPUT pontkód, pontszám 1. blokk típusa 50-51 th Y, SD 1. blokk értéke 53-66 2.000 577060.939, 24.659 2. blokk típusa 73-74 ih X, Hz 2. blokk értéke 76-89 1.485 188805.047, 349.3453 3. blokk típusa 96-97 Z, V1 3. blokk értéke 99-112 143.709, 94.0623 4

Látszik, hogy oszlopok szerint vannak az adatok (egy sor 121 karakter), a leírásban pontosan meg van határozva, hogy egy sorban hányadik karaktertől hányadik karakterig mi található. A fontosabb részek vonallal vannak elválasztva, így 6 oszlopot különböztethetünk meg. A fájl beolvasásánál használhatjuk ezeket az elválasztókat pl. textscan paranccsal: fid = fopen('reszletm.m5'); s=textscan(fid,'%s%s%s%s%s%s','delimiter',' '); fclose(fid); Vagy használhatjuk a megadott karaktereket a sorok beolvasásánál. Nézzük meg részletesebben ez utóbbit! MÉRÉSEK BEOLVASÁSA Nézzünk egy olyan sort, ahol mérések vannak tárolva (lásd például előző oldalon az utolsó előtti, For M5 Adr 00094 -es sort! Itt a típusnál (18-21. karakter) PI1 szerepel (point identification), utána az infóban pontszám (951), majd az első blokkban ferde távolság (SD slope distance), a következő blokkban vízszintes szög (áldecimális fff.ppmm alakban), majd az utolsó blokkban zenitszög (szintén fff.ppmm alakban). Írjunk egy függvényt, ami ebből a sorból kiveszi a szükséges mérési eredményeket, számmá alakítja őket és a szögeket pedig fok-pec-másodperc értékből tizedfokká! Hogy tesztelni tudjuk töltsük le a tárgy oldaláról az M5 mérési állományt. Kezdjünk el egy új m fájlt és egy s1 stringbe másoljunk be egy olyan sort, amiben csak mérések vannak! Egy s2 stringbe pedig egy méréseket tartalmazó sort egy ismert álláspont megadásából KN STAT, ahol a pontszámon kívül pontkód is van! clc; clear all; page_screen_output(0); s1 = 'For M5 Adr 00205 PI1 1005 SD 20.121 m Hz 204.1534 DMS V1 103.5359 DMS ' s2 = 'For M5 Adr 00082 PI1 A 107 Hz 217.0159 DMS V1 88.5541 DMS ' Írjuk meg, vagy töltsük le az általános dokumentumok közül a kiegészített fpm.m függvényt (fok-perc-másodpercből tizedfok és radián) és a fok2fpmstr.m fájlt, tizedfokból fok-perc-másodperc függvény megjelenítéshez (string)! Ezután írhatjuk a függvényt, figyelembe véve a dokumentációban megadott karakterszámokat! Figyeljünk, hogy nincs mindig minden blokk kitöltve! Ahol nincs érték, ott a függvény NaN-t ad vissza (Not a Number). Az ismert álláspontnál tájékozást végeztünk, itt például nincs távolságmérés, de van a pontszám előtt egy pontkód (A). A strtrim paranccsal levághatjuk egy string elejéről és végéről a felesleges nullákat, a strtok paranccsal két részre vághatjuk a szóközöknél a szöveget. A str2num szöveget számmá alakít. Az isempty eldönti, hogy egy változó üres-e vagy sem, ezt használhatjuk arra, hogy megnézzük a pontszámon kívül pontkód is tartozik-e az adott ponthoz a strtok használatával. A strcmp összehasonlít két szöveget, hogy egyezik-e, ezzel tudjuk megnézni, hogy van-e ferde távolság, vízszintes szög, zenitszög rögzítve. 5

function [SD Hz V psz] = meresek(l) SD=NaN; Hz=NaN; V=NaN; pid=nan; type = l(18:20); psz = strtrim(l(22:48)); [a b] = strtok(psz); if isempty(b) psz = str2num(a); else psz = str2num(b); type1 = l(50:51); type2 = l(73:74); type3 = l(96:97); if strcmp(type1,'sd') SD=str2num(l(53:66)); if strcmp(type2,'hz') n = str2num(l(76:89)); Hz = fpm(n); if strcmp(type3,'v1') n = str2num(l(99:112)); V = fpm(n); Teszteljük az eredményt! [SD Hz V psz] = meresek(s1) [SD Hz V psz] = meresek(s2) Az eredmény: SD = 20.120999999999999 Hz = 2.042594444444445e+002 V = 1.038994444444445e+002 psz = 1005 SD = NaN Hz = 2.170327777777778e+002 V = 88.928055555555559 psz = 107 KOORDINÁTÁK BEOLVASÁSA Most olvassunk be koordinátákat. A teszteléshez most is vegyünk ki két sort, amiben koordináták szerepelnek, legyen olyan, amiben van pontkód és olyan, amiben nincs! s3 = 'For M5 Adr 00088 PI1! 550 Y 577188.620 m X 188926.115 m ' s4 = 'For M5 Adr 00095 PI1 951 Y 577192.302 m X 188865.255 m Z 169.422 m ' 6

A függvény: function [yxz psz] = koord(l) y=nan; x=nan; z=nan; psz = strtrim(l(22:48)); [a b] = strtok(psz); if isempty(b) psz = str2num(a); else psz = str2num(b); type1 = l(50:51); type2 = l(73:74); type3 = l(96:97); if strcmp(type1,'y ') y = str2num(l(53:66)); if strcmp(type2,'x ') x = str2num(l(76:89)); if strcmp(type3,'z ') z = str2num(l(99:112)); yxz = [y x z]; Teszteljük az eredményt! [yxz psz] = koord(s3) [yxz psz] = koord(s4) Az eredmény: yxz = 1.0e+005 * 5.771886200000000 1.889261150000000 NaN psz = 550 yxz = 1.0e+005 * 5.771923020000000 1.888652550000000 0.001694220000000 psz = 951 A MÉRÉSI ÁLLOMÁNY BEOLVASÁSA ÉS A FELDOLGOZÁS Most egy olyan mérési állományt fogunk beolvasni, ahol csak egy álláspontból történtek mérések. Egy ismert álláspont lesz ( KN STAT ) és utána a mérések ( POLAR ). Közben figyelni kell, hogy változik-e a jelmagasság ( INPUT, th )! Ha több álláspontunk lenne, akkor értelemszerűen folyamatosan figyelnünk kell, hogy mikor van új álláspont rekord, új mérések. Az álláspont rekord beolvasása után számítsunk tájékozást! A Trimble M3 műszer egyébként számolja és rögzíti is a tájékozást ( 0m ), de más műszerek nem. Most legalább lehetőségünk van ellenőrizni is a számításainkat. 7

A Trimble műszer másik érdekessége, hogy álláspont rekord után nem a sima irányértékeket rögzíti, hanem a tájékozott irányértékeket, ezért nincs szükség arra, hogy hozzáadjuk a tájékozási szöget az irányértékekhez, lehet rögtön a Hz -ben tárolt értékeket felhasználni a poláris pont számításához. A ferde távolságokat viszont ne felejtsük el vízszintesre redukálni! A műszer egyébként rögzíti a koordinátákat is, így elvileg nem is kellene nekünk semmit számítani, de a gyakorlatban előfordulhat, hogy utólag jövünk rá, hogy rossz prizmaállandó volt beállítva, rossz jelmagasság, és akkor vissza kell nyúlnunk a mérésekig, hogy ki tudjuk javítani a hibát. így most a rögzített koordinátákat szintén csak ellenőrzésre használjuk, hogy jó-e a számításunk. clc; clear all; close all; fid = fopen('meres.m5'); page_screen_output(0); %% Álláspont % Megkeressük az első álláspont rekordot while feof(fid)==0 l=fgetl(fid); tipus = l(18:20); info = strtrim(l(22:48)); if strcmp(tipus,'ti ') && strcmp(info,'kn STAT') break % beolvasunk 4 sort, amiben az álláspont rekordot tárolják l1 = fgetl(fid); % tájékozó irány koordinátái l2 = fgetl(fid); % mérések a tájékozó irányra l3 = fgetl(fid); % tájékozási szög l4 = fgetl(fid); % álláspont koordinátái [T T_psz] = koord(l1); [SD Hz V psz] = meresek(l2); [A A_psz] = koord(l4); z = tajekozas(a,t,hz); fprintf('\ntajekozas\n'); fprintf('allaspont: %d (Y=%.2f; X=%.2f)\n', A_psz, A(1), A(2)); fprintf('tajekozo irany: %d (Y=%.2f; X=%.2f)\n', T_psz, T(1), T(2)); fprintf('iranyertek: %s\n', fok2fpmstr(hz)); fprintf('iranyszog: %s\n', fok2fpmstr(iranyszog(a,t))); fprintf('tajekozasi szog: %s\n', fok2fpmstr(z)); %% Mérések % Közben jelmagasság, műszermagasság változás figyelembe vétele % Megkeressük, hogy hol kezdődnek a mérések, közben ha van beállítjuk a % jelmagasságot (th), műszermagasságot(ih) th=nan; ih=nan; pontok = []; while feof(fid)==0 l=fgetl(fid); tipus = l(18:20); info = strtrim(l(22:48)); if strcmp(tipus,'ti ') && strcmp(info,'polar') break if strcmp(tipus,'ti ') && strcmp(info,'input') 8

type1 = l(50:51); type2 = l(73:74); if strcmp(type1,'th') th = str2num(l(53:66)); if strcmp(type2,'ih') ih = str2num(l(76:89)); fprintf('muszermagassag: %.2f; jelmagassag: %.2f\n', ih, th) while feof(fid)==0 l=fgetl(fid); tipus = l(18:20); info = strtrim(l(22:48)); type1 = l(50:51); type2 = l(73:74); if strcmp(tipus,'ti ') && strcmp(info,'input') if strcmp(type1,'th') th = str2num(l(53:66)); if strcmp(type2,'ih') ih = str2num(l(76:89)); if strcmp(tipus,'pi1') && strcmp(type1,'sd') [SD Hz V psz] = meresek(l); % A tajekozasi szoget Trimble M3 esetében nem kell hozzaadni az % iranyertekekhez, mert mar eleve tajekozott iranyertekeket tarol % (ha volt elotte Ismert allaspont program) HD = SD * sind(v); P = polaris(a,hd,hz); Z = A(3) + ih + SD*cosd(V) - th; pont = [psz P Z]; pontok = [pontok; pont]; % Eredmenyek kiiratasa fprintf('\nreszletpontok\n'); fprintf(' P Y X Z\n'); fprintf('%8d %9.2f %9.2f %6.2f\n', pontok'); % Plottolas figure(1); hold off; plot3(pontok(:,2), pontok(:,3), pontok(:,4), 'b+'); fclose(fid); % Fajlba iras fid = fopen('koord_m5.txt','w'); fprintf(fid, ' P Y X Z \r\n'); fprintf(fid, '%5d %9.2f %9.2f %6.2f\r\n', pontok'); fclose(fid); 9