Popis třídy CCoordTrans

Podobné dokumenty
GEOGRAFICKÁ SLUŽBA ARMÁDY ČESKÉ REPUBLIKY

Transformace dat mezi různými datovými zdroji

Geodézie Přednáška. Souřadnicové systémy Souřadnice na referenčních plochách

Zobrazování zemského povrchu

Téma: Geografické a kartografické základy map

Jiří Cajthaml. ČVUT v Praze, katedra geomatiky. zimní semestr 2014/2015

System Projection Aplikace pro souřadnicové přepočty a základní geodetické úlohy (Uživatelský manuál) Jan Ježek, Radek Sklenička červen 2004

GEODETICKÉ VÝPOČTY I.

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Úvod do programovacích jazyků (Java)

Topografické mapy nové koncepce

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Vojenské mapy. Určování souřadnic na mapách. Encyklopedie vojenské geografie. Zpracovali: Ing. Libor Laža, Ing. Petr Janus. GeoSl AČR.

Jiří Cajthaml. ČVUT v Praze, katedra geomatiky. zimní semestr 2014/2015

8 Třídy, objekty, metody, předávání argumentů metod

Programování v jazyce C pro chemiky (C2160) 12. Specifické problémy při vývoji vědeckého softwaru

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

Úvod do programování - Java. Cvičení č.4

Souřadnicové systémy v geodatech resortu ČÚZK a jejich transformace

Souřadnicové systémy Souřadnice na referenčních plochách

Řešení sady 1. Úvod do programování 1 Tomáš Kühr

GIS a pozemkové úpravy. Data pro využití území (DPZ)

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

GEODETICKÉ VÝPOČTY I.

3 KTE / ZPE Informační technologie

BROB - Základy robotiky (2016) GPS navigace pro plovoucího robota třídy KAMbot (S.12) Jan Mazoch, Jakub Hadámek, Lukáš Hvizdák

OBSAH 1 Úvod Fyzikální charakteristiky Zem Referen ní plochy a soustavy... 21

1. Téma 03 - Rozhodování

Úvod do programování. Lekce 1

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

SPŠ STAVEBNÍ České Budějovice MAPOVÁNÍ. JS pro 3. ročník S3G

Výčtový typ strana 67

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

GPSnavigator. mija. Jednoduchý návod na postavení GPS navigátoru z MLAB modulů a GPS modulu LEADTEK LR9552

4. Matematická kartografie

UNIVERZITA OBRANY. Knihovna HLAGate. Programátorská dokumentace. Petr Františ

MODERNÍ GLOBÁLNÍ GEODETICKÝ REFERENČNÍ GEOCENTRICKÝ SYSTÉM

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

SPŠSTAVEBNÍČeskéBudějovice MAPOVÁNÍ. Gauss-Krügerovo zobrazení UTM

Jiří Cajthaml. ČVUT v Praze, katedra geomatiky. zimní semestr 2014/2015

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

GIS Geografické informační systémy

Matematické metody v kartografii

Cílem opatření bylo stanovení optimálního prostorového souřadnicového systému pro třídy objektů NaSaPO a zajištění transformačních služeb.

2 Datové typy v jazyce C

Strukturu lze funkci předat: (pole[i])+j. switch(výraz) velikost ukazatele

Souřadnicové systémy a stanovení magnetického severu. Luděk Krtička, Jan Langr

Přehled základních metod georeferencování starých map

PREPROCESOR POKRAČOVÁNÍ

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Bitové operátory a bitová pole. Úvod do programování 2 Tomáš Kühr

PŘETĚŽOVÁNÍ OPERÁTORŮ

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);

Vojenské topografické mapy bývalé koncepce (do konce roku 2005)

Paměť počítače. alg2 1

III. Diferenciál funkce a tečná rovina 8. Diferenciál funkce. Přírůstek funkce. a = (x 0, y 0 ), h = (h 1, h 2 ).

KTE / ZPE Informační technologie

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Telemetrický komunikační protokol JETI

SOUSTAVY LINEÁRNÍCH ROVNIC. Øe¹te soustavu lineárních rovnic. 2x y z =4; 3x+4y 2z =2; 3x 2y+4z =11: x+ (1+ i)y+ iz =1: (1 + i)x+ (1 i)y+(1 + i)z =1:

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

Ing. Jiří Fejfar, Ph.D. Souřadné systémy

R β α. Obrázek 1: Zadání - profil složený ze třech elementárních obrazců: 1 - rovnoramenný pravoúhlý trojúhelník, 2 - čtverec, 3 - kruhová díra

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

Souřadnicov. Cassini Soldnerovo zobrazení. Cassini-Soldnerovo. b) Evropský terestrický referenční systém m (ETRS), adnicové systémy

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

C# konzole Podíl dvou čísel, podmínka IF

13) 1. Číselné obory 1. 1, 3

Seminář Java II p.1/43

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

Základy jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr)

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

Algoritmizace a programování

Struktura programu v době běhu

Úvod do programování. Lekce 5

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

IAJCE Přednáška č. 6. logický celek, řešící dílčí část problému Příklad velmi špatného zápisu programu na výpočet obsahu obdélníku

SPŠS Č.Budějovice Obor Geodézie a Katastr nemovitostí 4.ročník SOUŘADNICOVÉ SOUSTAVY VE FOTOGRAMMETRII

Pro mapování na našem území bylo použito následujících souřadnicových systémů:

Matematické metody v kartografii. Jednoduchá azimutální zobrazení. Azimutální projekce. UPS. (10.)

Knihovna AstroLib TXV první vydání listopad 2010 změny vyhrazeny

Geodézie a pozemková evidence

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Gymnázium Jiřího Ortena, Kutná Hora

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Transkript:

Popis třídy CCoordTrans Dokumentace třídy CCoordTrans popisuje funkce pro převod souřadnic mezi zeměpisnou délkou a šířkou, geografickým souřadnicovým systémem UTM 1, hlásným systémem MGRS 2 a systémem ECEF 3. Zeměpisná délka a šířka UTM Převod mezi zeměpisnou délkou a šířkou a UTM, kde dochází k přepočtu úhlu v geocentrické soustavě na souřadnice podle standardu UTM. double lat zeměpisná šířka double lon zeměpisná délka double utmx x souřadnice UTM double utmy y souřadnice UTM int zone označení poledníkové zóny UTM char zonev označení rovnoběžné zóny UTM BOOL LatLonToUTMXY(double lat,double lon,double *utmx,double *utmy,int *zone,char *zonev); BOOL UTMXYToLatLon(double utmx,double utmy,int zone,char zonev,double *lat,double *lon); UTM MGRS Převod mezi UTM a MGRS je komplex podmínek pro transformaci velmi podobných souřadnic a zóny do standardizované souřadnice armádního souřadného referenčního systému. 1 UTM - Universal Transverse Mercator 2 MGRS - Military Grid Reference System 3 ECEF - Earth-Centered, Earth-Fixed

char[2] square identifikátor oblasti MGRS int easting východní souřadnice MGRS int northing severní souřadnice MGRS double utmx x souřadnice UTM double utmy y souřadnice UTM int zone označení poledníkové zóny UTM char zonev označení rovnoběžné zóny UTM BOOL UTMXYToMGRS(double utmx,double utmy,int zone,char zonev,char square[2],int *easting,int *northing); BOOL MGRSToUTMXY(int zone,char zonev,char square[2],int easting,int northing,double *utmx,double *utmy); Zeměpisná délka a šířka MGRS Převod mezi zeměpisnými souřadnicemi a MGRS. Funkce využívají transformace mezi zeměpisnými souřadnicemi, UTM (viz Chyba! Nenalezen zdroj odkazů.) a následně dochází k přepočtu na souřadnici MGRS (viz Chyba! Nenalezen zdroj odkazů.). int zone číselné označení zóny souřadnicové sítě MGRS char zonev znakové označení zóny souřadnicové sítě MGRS char[2] square identifikátor oblasti MGRS int easting východní souřadnice MGRS int northing severní souřadnice MGRS double lat zeměpisná šířka double lon zeměpisná délka BOOL LatLonToMGRS(double lat,double lon,int *zone,char *zonev,char square[2],int *easting,int *northing); BOOL MGRSToLatLon(int zone,char zonev,char square[2],int easting,int northing,double *lat,double *lon);

Zeměpisná délka a šířka ECEF Funkce přepočítávající souřadnice mezi geodetickým a geocentrickým systémem. double lat zeměpisná šířka double lon zeměpisná délka double heli eliptická výška double x x souřadnice ECEF double y y souřadnice ECEF double z z souřadnice ECEF void LatLonToECEF(double lat,double lon, double heli, double *x, double *y, double *z); void ECEFToLatLon(double x, double y, double z, double *lat,double *lon, double *heli); UTM ECEF Využita transformace přes zeměpisnou šířku a délku. double utmx x souřadnice UTM double utmy y souřadnice UTM int zone označení poledníkové zóny UTM char zonev označení rovnoběžné zóny UTM double heli eliptická výška double x x souřadnice ECEF double y y souřadnice ECEF double z z souřadnice ECEF void ECEFToUTMXY(double x, double y, double z, double *utmx,double *utmy,int *zone,char *zonev, double *heig); void UTMXYToECEF(double utmx,double utmy,int zone,char zonev, double heig, double *x, double *y, double *z);

MGRS ECEF Využita transformace přes zeměpisnou šířku a délku. int zone číselné označení zóny souřadnicové sítě MGRS char zonev znakové označení zóny souřadnicové sítě MGRS char[2] square identifikátor oblasti MGRS int easting východní souřadnice MGRS int northing severní souřadnice MGRS double heig eliptická výška double x x souřadnice ECEF double y y souřadnice ECEF double z z souřadnice ECEF void ECEFToMGRS(double x, double y, double z, int *zone,char *zonev,char square[2],int *easting,int *northing, double *heig) void MGRSToECEF(int zone,char zonev,char square[2],int easting,int northing, double heig, double *x, double *y, double *z) Funkce rozšiřující Pro jednoduché využívání byly naprogramovány podpůrné funkce popsané níže. Převod mezi stupni a radiány Funkce RadToDeg převádí proměnnou z radiánů do stupňů a funkce DegToRad řeší převod opačný. double rad y souřadnice ECEF double deg z souřadnice ECEF double RadToDeg(double rad); double DegToRad(double deg);

Převod mezi desetinným číslem úhlu ve stupních a stupni, minutami Funkce AngleToDegMinSec převádí úhel zadaný desetinným číslem do třech celočíselných proměnných. Opačný postup řeší funkce DegMinSecToAngle. double angle hodnota úhlu v desetinném tvaru int deg hodnota úhlu ve stupních int min hodnota úhlu v minutách int sec hodnota úhlu v sekundách void AngleToDegMinSec(double angle,int *deg,int *min,double *sec); double DegMinSecToAngle(int deg,int min,double sec); Zaokrouhlení při převodu z proměnné typu double na integer Funkce Round zaokrouhluje číslo v desetinném tvaru na celočíselný tvar. Řád je standardizovaný pro datový typ integer. Vstupní proměnné: double angle číslo v desetinném Návratová hodnota: int hodnota úhlu ve stupních int Round(double ndbl); Výpočet eliptické výšky v ECEF soustavě Funkce pro výpočet eliptické výšky je počítán ze vstupních proměnných popisující bod prostorové pravoúhlé soustavy ECEF a navrací proměnnou popisující výška nad elipsoidem. Vstupní proměnné:

double x x souřadnice ECEF double y y souřadnice ECEF double z z souřadnice ECEF Návratová hodnota: double výška nad elipsoidem [m] double GetHeight(double x, double y, double z); Výpočet vzdálenosti dvou bodů Výpočet vzdálenosti mezi dvěma body může být volán hned dvěma způsoby. Prvním je zadáním dvou bodů pomoci struktury PPoint nebo pomoci zeměpisné šířky a délky. Vstupní proměnné: PPoint A x,y,z souřadnice ECEF prvního bodu PPoint B x,y,z souřadnice ECEF druhého bodu double lat1 zeměpisná šířka prvního bodu double lon1 zeměpisná délka prvního bodu double lat2 zeměpisná šířka druhého bodu double lon2 zeměpisná délka druhého bodu Návratová hodnota: double vzdálenost mezi zadanými body [m] double GetDistance(PPoint A, PPoint B); double GetDistance(double lat1, double lon1, double lat2, double lon2); Příklad použití Hlavní kód programu obsahuje pouze volání funkcí třídy CCoordTrans a funkce pro výpis do okna konsole. V úvodu jsou deklarované proměnné, které jsou potřebné pro přenos hodnot mezi funkcemi. Následně navazuje definice dvou bodů A a B v třídimenzionální pravoúhlé soustavě. Důležitou částí jsou volané funkce. Pomocí komentářů je kód rozdělen do

bloků podle problematiky. V každém bloku je volána funkce pro získání výsledků, které jsou okamžitě vypisovány na obrazovku pomocí příkazu printf. Vypisované hodnoty jsou vždy vztahovány k severu a východu, proto budou ve výsledcích zobrazeny i záporné hodnoty. int main(array<system::string ^> ^args) { CCoordTrans Souradnice; double x, y, lon, lat, h, lat2, lon2, h2, cx, cy, cz; int z, n, ist; char zch, zone[2]; PPoint A, B; IPoint C, D; //body od severu k jihu A.x = -1147207.9742; A.y = -2676233.6104; A.z = 5655682.5014; B.x = 1414578.8616; B.y = 3953483.0702; B.z = -4784899.9226; //ECEF > Latitude Souradnice.ECEFToLatLon(A.x, A.y, A.z, &lat, &lon, &h); Souradnice.AngleToDegMinSec(Souradnice.RadToDeg(lat),&C.x,&C.y,&C.z ); Souradnice.AngleToDegMinSec(Souradnice.RadToDeg(lon),&D.x,&D.y,&D.z ); printf("lanlon A: N %d\"%d'%f, E %d\"%d'%f, %f\n", C.x, C.y, C.z, D.x, D.y, D.z, h); Souradnice.ECEFToLatLon(B.x, B.y, B.z, &lat2, &lon2, &h2); Souradnice.AngleToDegMinSec(Souradnice.RadToDeg(lat2),&C.x,&C.y, &C.z); Souradnice.AngleToDegMinSec(Souradnice.RadToDeg(lon2),&D.x,&D.y, &D.z); printf("lanlon B: N %d\"%d'%f, E %d\"%d'%f, %f\n\n", C.x, C.y, C.z, D.x, D.y, D.z, h); //Height from ECEF printf("height A: %f\n\n", Souradnice.GetHeight(A.x, A.y, A.z));

//Latitude > ECEF Souradnice.LatLonToECEF(lat, lon, h, &A.x, &A.y, &A.z); printf("latitude > ECEF A: %f, %f, %f\n", A.x, A.y, A.z); Souradnice.LatLonToECEF(lat2, lon2, h2, &B.x, &B.y, &B.z); printf("latitude > ECEF B: %f, %f, %f\n\n", B.x, B.y, B.z); //Latitude > UTM Souradnice.LatLonToUTMXY(lat, lon, &x, &y, &z, &zch); printf("latitude > UTM A: %f, %f %d %c\n", x, y, z, zch); Souradnice.LatLonToUTMXY(lat2, lon2, &x, &y, &z, &zch); printf("latitude > UTM B: %f, %f %d %c\n\n", x, y, z, zch); //Latitude > MGRS if(souradnice.latlontomgrs(lat2, lon2, &z, &zch, zone, &ist, &n)) printf("latitude > MGRS B: %d%c%2.2s%d%d\n\n", z, zch, zone, ist, n); //ECEF > MGRS Souradnice.ECEFToMGRS(B.x, B.y, B.z, &z, &zch, zone, &ist, &n, &h); printf("ecef > MGRS B: %d%c%2.2s%d%d, %f\n\n", z, zch, zone, ist, n, h); //MGRS > UTM if(souradnice.mgrstoutmxy(z, zch, zone, ist, n, &x, &y)) printf("mgrs > UTM B: %f, %f %d %c\n\n", x, y, z, zch); //MGRS > LanLon if(souradnice.mgrstolatlon(z, zch, zone, ist, n, &lat, &lon)) printf("mgrs > LanLon B: %f, %f\n\n", Souradnice.RadToDeg(lat), Souradnice.RadToDeg(lon)); //MGRS > ECEF Souradnice.MGRSToECEF(z, zch, zone, ist, n, h, &cx, &cy, &cz); printf("mgrs > ECEF B: %f, %f, %f\n\n", cx, cy, cz); //Distance double distance = Souradnice.GetDistance(A, B); printf("distance - Points: %f\n", distance); } return 0;