Geo Coordinate Converter http://geocoordinateconverter.tk
For English version of this file see README.md.
gk-slo je konverter med geografskimi kartezičnimi koordinatami (Gauss-Krueger/D48, Transverzalni Merkator/D96) in geodetskimi koordinatami (širina/dolžina na ETRS89/WGS84) za Slovenijo. Lahko se ga uporabi kot nadomestilo za uradni program za konverzijo SiTra (s Helmertovimi parametri za vso Slovenijo, brez regionalnih parametrov) ali natančnejši, če se uporabi vgrajena afina/trikotniška transformacija z referenčnimi virtualnimi veznimi točkami v3.0 (za natančen opis glej AFT.md), kar je podobno kot pri uradnem programu za konverzijo 3Tra.
Program lahko bere datoteke v formatu SiTraNet (ASCII XYZ), LIDAR (ASCII XYZ s podpičjem, .asc) ali ESRI shapefile (ArcGIS .shp format, uporabi gk-shp).
Na razpolago so naslednje transformacije (v obe smeri):
- xy (D96/TM) ⇔ φλ (ETRS89)
- xy (D48/GK) ⇔ xy (D96/TM) Helmertova transformacija
- xy (D48/GK) ⇔ φλ (ETRS89) Helmertova transformacija
- xy (D48/GK) ⇔ xy (D96/TM) Afina transformacija
- xy (D48/GK) ⇔ φλ (ETRS89) Afina transformacija
Pri računanju višin s pomočjo modela geoida sta na razpolago dva absolutna modela geoida za Slovenijo: Slo2000 in EGM2008.
Napisan je v jeziku C in se ga da prevesti in uporabljati na vseh pomembnejših operacijskih sistemih. Podprogrami za konverzijo koordinat se lahko enostavno priredijo za uporabo tudi na drugih lokacijah, ne samo v Sloveniji (preko definicij elipsoida ter projekcijskih in Helmertovih parametrov).
Natančnejši opis podprogramov za konverzijo koordinat in njihov API (v modulu "geo.c") je v datoteki geo_api.md.
Spisek uporabljene literature (s povezavami do dokumentov) je v datoteki literature.md.
Prevedeno verzijo gk-slo/gk-shp za Windows (32-bitna, prevedena z MinGW) lahko dobite na gk-slo-9.07.zip.
Kartezične koordinate | Geodetske koordinate |
---|---|
x = easting | fi = phi (φ), širina (S/J) |
y = northing | la = lambda (λ), dolžina (V/Z) |
H = ortometrična/nadmorska višina | h = elipsoidna višina |
Ng = geoidna višina |
- common.h
Datoteka s skupnimi definicijami za okolji Windows in Unix - util.c
Zbirka skupnih funkcij za uporabo v ostalih delih programa - geoid_slo.h
Absolutni model geoida za Slovenijo iz GURS (Slo2000) - geoid_egm.h
Absolutni model geoida za Slovenijo iz EGM2008 - aft_gktm.h, aft_tmgk.h
Vnaprej izračunane tabele za trikotniško transformacijo za Slovenijo - geo.h
Datoteka z definicijami za podprograme za konverzijo koordinat - geo.c
Zbirka podprogramov za konverzijo koordinat - gk-slo.c
Glavni program za konverzijo koordinat iz XYZ datotek - gk-shp.c
Glavni program za konverzijo koordinat iz shapefile datotek - shapelib
Datoteke iz Shapefile C Library, potrebne za branje in pisanje ESRI Shapefile datotek
$ cc -O2 -Wall -msse2 -mfpmath=sse gk-slo.c util.c geo.c -o gk-slo -lm -lrt
$ cc -O2 -Wall -msse2 -mfpmath=sse -Ishapelib gk-shp.c util.c geo.c \
shapelib\shpopen.c shapelib\dbfopen.c shapelib\safileio.c shapelib\shptree.c -o gk-shp -lm -rt
ali
$ make -f Makefile.unix
$ gcc -O2 -Wall -msse2 -mfpmath=sse -D_WCHAR gk-slo.c util.c geo.c -o gk-slo.exe
$ gcc -O2 -Wall -msse2 -mfpmath=sse -Ishapelib gk-shp.c util.c geo.c \
shapelib\shpopen.c shapelib\dbfopen.c shapelib\safileio.c shapelib\shptree.c -o gk-shp.exe
ali
$ make -f Makefile.mingw
$ cl /O2 /Wall -D_WCHAR gk-slo.c util.c geo.c
$ cl /O2 /Wall /Ishapelib gk-shp.c util.c geo.c \
shapelib\shpopen.c shapelib\dbfopen.c shapelib\safileio.c shapelib\shptree.c
ali
$ nmake -f Makefile.msc
$ make -f Makefile.macos gk-slo gk-shp
Opciji -msse2 -mfpmath=sse
sta potrebni, ker drugače dobimo različne
rezultate na različnih sistemih (za podrobnejšo razlago glej StackOverflow).
$ gk-slo [<opcije>] [<vhodime> ...] -d omogoči debug izpis -ht izračunaj izhodno višino s 7-param. Helmertovo trans. -hc kopiraj vhodno višino nespremenjeno na izhod -hg izračunaj izhodno višino s pomočjo modela geoida (privzeto) -g slo|egm izberi model geoida (Slo2000 ali EGM2008) privzeto: Slo2000 -dms prikaži fila v SMS formatu za višino -t <n> izberi transformacijo: 1: xy (d96tm) --> fila (etrs89), hg?, privzeto 2: fila (etrs89) --> xy (d96tm), hg 3: xy (d48gk) --> fila (etrs89), ht 4: fila (etrs89) --> xy (d48gk), hg 5: xy (d48gk) --> xy (d96tm), hg(hc) 6: xy (d96tm) --> xy (d48gk), ht(hc) 7: xy (d48gk) --> xy (d96tm), hc, affine trans. 8: xy (d96tm) --> xy (d48gk), hc, affine trans. 9: xy (d48gk) --> fila (etrs89), hg, affine trans. 10: fila (etrs89) --> xy (d48gk), hg, affine trans. -r obrni vrstni red branja xy/fila (opozorilo se izpiše če je y < 200000 ali la > 17.0) <vhodime> preberi in konvertiraj vhodne podatke iz datoteke <vhodime> <vhodime> "-" pomeni stdin, prej uporabi "--" -o -|=|<izhodime> zapiši izhodne podatke na: -: stdout (privzeto) =: prilepi ".out" k imenu vsake datoteke <vhodime> in zapiši izhodne podatke na te ločene datoteke <izhodime>: zapiši vse izhodne podatke na eno datoteko <izhodime> Tipični format vhodnih podatkov (SiTra .xyz ali LIDAR .asc): [<oznaka> ]<fi|x> <la|y> <h|H> [<oznaka>;]<fi|x>;<la|y>;<h|H>
Nov program gk-shp, ki lahko bere ESRI shapefile (ArcGIS .shp format), ima podobno sintakso:
$ gk-shp [<options>] <vhodime> <izhodime> -d omogoči podrobnejši izpis -ht izračunaj izhodno višino s 7-param. Helmertovo trans. -hc kopiraj vhodno višino nespremenjeno na izhod -hg izračunaj izhodno višino s pomočjo modela geoida (privzeto) -g slo|egm izberi model geoida (Slo2000 ali EGM2008) privzeto: Slo2000 -t <n> izberi transformacijo: 1: xy (d96tm) --> fila (etrs89), hg?, privzeto 2: fila (etrs89) --> xy (d96tm), hg 3: xy (d48gk) --> fila (etrs89), ht 4: fila (etrs89) --> xy (d48gk), hg 5: xy (d48gk) --> xy (d96tm), hg(hc) 6: xy (d96tm) --> xy (d48gk), ht(hc) 7: xy (d48gk) --> xy (d96tm), hc, afina trans. 8: xy (d96tm) --> xy (d48gk), hc, afina trans. 9: xy (d48gk) --> fila (etrs89), hg, afina trans. 10: fila (etrs89) --> xy (d48gk), hg, afina trans. -r obrni vrstni red branja xy/fila (opozorilo se izpiše če je y < 200000 oz. la > 17.0) <vhodime> preberi in konvertiraj vhodne podatke iz datoteke <vhodime> <izhodime> zapiši izhodne podatke na datoteko <izhodime> Format vhodnih podatkov: ESRI Shapefile (ArcGIS)
Vhodna datoteka VTG2225.XYZ (DMV, v formatu SiTraNet, Gauss-Krueger/D48):
0000001 509000.000 76000.000 343.30 0000002 509005.000 76000.000 342.80 0000003 509010.000 76000.000 342.30
Konvertiraj v nov koordinatni sistem (Transverzalni Merkator/D96); višine se kopirajo, ne preračunavajo:
$ gk-slo -t 5 -hc VTG2225.XYZ VTG2225.XYZ: possibly reversed x/y 0000001 509487.490 575640.546 343.300 0000002 509492.490 575640.546 342.800 0000003 509497.490 575640.546 342.300
Če dobiš opozorilo "possibly reversed x/y", uporabi opcijo "-r" da dobiš pravilno konverzijo:
$ gk-slo -t 5 -hc -r VTG2225.XYZ 0000001 76484.893 508628.990 343.300 0000002 76484.893 508633.991 342.800 0000003 76484.893 508638.991 342.300
Konvertiraj isto datoteko v ETRS89/WGS84 koordinate. Tokrat se bo višina preračunala z uporabo Helmertove transformacije (privzeto):
$ gk-slo -t 3 -r VTG2225.XYZ 0000001 45.8281655853 15.1110624092 389.063 0000002 45.8281655218 15.1111267639 388.563 0000003 45.8281654582 15.1111911187 388.063
Za bolj razumljiv izpis lahko dodaš opcijo "-dms":
$ gk-slo -t 3 -r -dms VTG2225.XYZ 0000001 45.8281655853 15.1110624092 389.063 45 49 41.39611 15 6 39.82467 0000002 45.8281655218 15.1111267639 388.563 45 49 41.39588 15 6 40.05635 0000003 45.8281654582 15.1111911187 388.063 45 49 41.39565 15 6 40.28803
Shrani rezultate v datoteko:
$ gk-slo -t 3 -r VTG2225.XYZ -o VTG2225.flh (ustvari datoteko VTG2225.flh)
Vhodna datoteka VTC0512.XYZ (DMV, v formatu SiTraNet, Transverzalni Merkator/D96):
0000001 412250 97000 606.2 0000002 412250 96995 606.9 0000003 412250 96990 607.9
Konvertiraj v ETRS89/WGS84 koordinate, višine se bodo preračunale s pomočjo modela geoida Slo2000 (privzeto):
$ gk-slo -t 1 -r VTC0512.XYZ 0000001 46.0071929697 13.8669428837 652.772 0000002 46.0071479903 13.8669438021 653.472 0000003 46.0071030110 13.8669447206 654.472
Če želiš uporabiti model geoida EGM2008, uporabi opcijo "-g egm":
$ gk-slo -t 1 -r -g egm VTC0512.XYZ 0000001 46.0071929697 13.8669428837 652.660 0000002 46.0071479903 13.8669438021 653.359 0000003 46.0071030110 13.8669447206 654.359
Konvertiraj ETRS89/WGS84 koordinate v Transverzalne Merkatorjeve/D96 preko tipkovnice (ignorirajoč višino, uporabi "--" da preprečiš nadaljnjo analizo opcij):
$ gk-slo -t 2 -- - 46.0071929697 13.8669428837 0 <Enter> 97000.000 412250.000 -46.572
Konvertiraj datoteko VTG2225.flh (z ETRS89/WGS84 koordinatami, glej Primer 1) v Gauss-Krueger/D48:
$ gk-slo -t 4 VTG2225.flh 0000001 76000.000 509000.000 342.896 0000002 76000.000 509005.000 342.396 0000003 76000.000 509010.000 341.896
Če primerjaš rezultat z originalno datoteko VTG2225.XYZ, lahko opaziš majhno razliko v višinah. To se je zgodilo zato, ker so bile višine v VTG2225.flh izračunane z uporabo Helmertove transformacije, privzeti način izračuna višin pri "-t 4" pa je izračun s pomočjo modela geoida.
Kateri način izračuna višin se uporabi za konverzijo je odvisno tudi od vhodnih podatkov. Za vsak tip konverzij je v programu privzet priporočen način izračuna višin (glej Uporabo).
Če je bil program gk-slo preveden z MinGW na Windows ali je uporabljan na Unixu, lahko obdelamo veliko datotek hkrati z enim ukazom.
Vhodne datoteke ∗.XYZ (DMV, Transverzalni Merkator/D96):
VTH0720.XYZ VTH0721.XYZ VTH0722.XYZ ...
Konvertiraj vse datoteke v ETRS89/WGS84 koordinate (z nekaj debug izpisa, da vidimo, kaj se dogaja):
$ gk-slo -t 1 -r -d ∗.XYZ -o = Processing VTH0720.xyz Processing time: 4.854913 Processing VTH0721.xyz Processing time: 4.846438 Processing VTH0722.xyz Processing time: 4.846361 ...
Rezultati konverzije za vsako datoteko se zapišejo na novo datoteko s podaljškom ".out":
VTH0720.XYZ.out VTH0721.XYZ.out VTH0722.XYZ.out ...
Vhodna datoteka file RABA_20151031.shp (GERK, v formatu ESRI shapefile, Gauss-Krueger/D48), konvertiraj v ETRS89/WGS84 koordinate z uporabo afine transformacije (s podrobnejšim izpisom):
$ gk-shp -t 9 -dd RABA_20151031.shp raba_conv.shp Processing RABA_20151031.shp Shapefile type: Polygon, number of shapes: 1601832 Shape: 678 (0.04%) ...
Rezultat konverzije je skupek datotek kot jih določa format ESRI shapefile:
raba_conv.cpg raba_conv.dbf raba_conv.prj raba_conv.shp raba_conv.shx
V datoteki raba_conv.prj je shranjena izhodna projekcija (WGS84), kar omogoča lažje odpiranje v GIS programih.