5 Uvod u PROJ.4 biblioteku
Biblioteka PROJ.4 trenutno raspolaže sa tri funkcionalnosti za transformaciju koordinata i geodetsko računanje:
- proj/invproj – direktna i inverzna kartografska projekcija,
- cs2cs – konverzija između koordinatnih sistema (geografskih ili u projekciji),
- geod/invgeod – direktna i inverzna geodetska računanja.
Biblioteka PROJ.4 razvijena je početkom 1980. godine kao RATFOR program ((RATional FORtran, programski jezik)) gde većina kodova potiče od GCTP (Geological Survey’s General Cartographic Transformation Package). Program PROJ.4 je rekodiran u C programskom jeziku kada je MAPGEN paket, čiji je sastavni deo program PROJ.4, transformisan u UNIX operativni sistem. U program su dodate mnoge nove projekcije. Biblioteka je zasnovana na radu Geralda Evendena, kasnije ju je održavao Frank Warmerdam, koji je i tvorac GDAL biblioteke, a sada je održava zajednica programera.
PROJ.4 biblioteka dolazi sa MIT (Massachusetts Institute of Technology) licencom koja dozvoljava slobodnu upotrebu, kopiranje, menjanje sadržaja, podlicenciranje, prodaju uz uslov da se uključi izvorna licenca i dopuštenje.
Instalacija PROJ.4 biblioteke zavisi od operativnog sistema, a u daljem tekstu će biti data kratka ilustracija korišćenja biblioteke. U samoj biblioteci su sadržani parametri mnogih elipsoida kao i predefinisanih geodetskih datuma sa vrednostima parametara. Lista dostupnih elipsoida sa parametrima se može dobiti koristeći komandu cs2cs -le
, gde je -le
argument funkcije za prikaz liste elipsoida.
cs2cs -le
MERIT a=6378137.0 rf=298.257 MERIT 1983
SGS85 a=6378136.0 rf=298.257 Soviet Geodetic System 85
GRS80 a=6378137.0 rf=298.257222101 GRS 1980(IUGG, 1980)
IAU76 a=6378140.0 rf=298.257 IAU 1976
airy a=6377563.396 b=6356256.910 Airy 1830
APL4.9 a=6378137.0. rf=298.25 Appl. Physics. 1965
NWL9D a=6378145.0. rf=298.25 Naval Weapons Lab., 1965
mod_airy a=6377340.189 b=6356034.446 Modified Airy
andrae a=6377104.43 rf=300.0 Andrae 1876 (Den., Iclnd.)
aust_SA a=6378160.0 rf=298.25 Australian Natl & S. Amer. 1969
GRS67 a=6378160.0 rf=298.2471674270 GRS 67(IUGG 1967)
bessel a=6377397.155 rf=299.1528128 Bessel 1841
bess_nam a=6377483.865 rf=299.1528128 Bessel 1841 (Namibia)
clrk66 a=6378206.4 b=6356583.8 Clarke 1866
clrk80 a=6378249.145 rf=293.4663 Clarke 1880 mod.
clrk80ign a=6378249.2 rf=293.4660212936269 Clarke 1880 (IGN).
CPM a=6375738.7 rf=334.29 Comm. des Poids et Mesures 1799
delmbr a=6376428. rf=311.5 Delambre 1810 (Belgium)
engelis a=6378136.05 rf=298.2566 Engelis 1985
evrst30 a=6377276.345 rf=300.8017 Everest 1830
evrst48 a=6377304.063 rf=300.8017 Everest 1948
evrst56 a=6377301.243 rf=300.8017 Everest 1956
evrst69 a=6377295.664 rf=300.8017 Everest 1969
evrstSS a=6377298.556 rf=300.8017 Everest (Sabah & Sarawak)
fschr60 a=6378166. rf=298.3 Fischer (Mercury Datum) 1960
fschr60m a=6378155. rf=298.3 Modified Fischer 1960
fschr68 a=6378150. rf=298.3 Fischer 1968
helmert a=6378200. rf=298.3 Helmert 1906
hough a=6378270.0 rf=297. Hough
intl a=6378388.0 rf=297. International 1909 (Hayford)
krass a=6378245.0 rf=298.3 Krassovsky, 1942
kaula a=6378163. rf=298.24 Kaula 1961
lerch a=6378139. rf=298.257 Lerch 1979
mprts a=6397300. rf=191. Maupertius 1738
new_intl a=6378157.5 b=6356772.2 New International 1967
plessis a=6376523. b=6355863. Plessis 1817 (France)
SEasia a=6378155.0 b=6356773.3205 Southeast Asia
walbeck a=6376896.0 b=6355834.8467 Walbeck
WGS60 a=6378165.0 rf=298.3 WGS 60
WGS66 a=6378145.0 rf=298.25 WGS 66
WGS72 a=6378135.0 rf=298.26 WGS 72
WGS84 a=6378137.0 rf=298.257223563 WGS 84
sphere a=6370997.0 b=6370997.0 Normal Sphere (r=6370997)
Na sličan način se može dobiti i lista početnih meridijana u odnosu na Grinički meridijan.
cs2cs -lm
greenwich 0dE
lisbon 9d07'54.862"W
paris 2d20'14.025"E
bogota 74d04'51.3"W
madrid 3d41'16.58"W
rome 12d27'8.4"E
bern 7d26'22.5"E
jakarta 106d48'27.79"E
ferro 17d40'W
brussels 4d22'4.71"E
stockholm 18d3'29.8"E
athens 23d42'58.815"E
oslo 10d43'22.5"E
Lista predefinisanih datuma se dobija korišćenjem argumenta -ld
.
cs2cs -ld
_datum_id__ __ellipse___ __definition/comments_
WGS84 WGS84 towgs84=0,0,0
GGRS87 GRS80 towgs84=-199.87,74.79,246.62
Greek_Geodetic_Reference_System_1987
NAD83 GRS80 towgs84=0,0,0
North_American_Datum_1983
NAD27 clrk66 nadgrids=@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat
North_American_Datum_1927
potsdam bessel towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7
Potsdam Rauenberg 1950 DHDN
carthage clrk80ign towgs84=-263.0,6.0,431.0
Carthage 1934 Tunisia
hermannskogel bessel towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232
Hermannskogel
ire65 mod_airy towgs84=482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15
Ireland 1965
nzgd49 intl towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993
New Zealand Geodetic Datum 1949
OSGB36 airy towgs84=446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894
Airy 1830
Koristeći PROJ.4 notaciju može se zadati bilo koji koordinatni referentni sistem, bez ograničenja da se koriste samo predefinisani datumi koji su sadržani u biblioteci.
+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=574.027,170.175,401.545,4.88786,-0.66524,-13.24673,6.89 +units=m
Zadat je koordinatni referentni sistem u Gaus Krigerovoj projekciji za Srbiju, sa sledećim parametrima:
+proj=tmerc - Gaus Kriger (Transverzalna merkatorova) projekcija,
+lat_0=0 +lon_0=21 - koordinatni početak na elipsoidu,
+k=0.9999 - razmera duž srednjeg meridijana,
+x_0=7500000 +y_0=0 - koordinatni početak u ravni karte
+ellps=bessel - elipsoid
+towgs84=574.027,170.175,401.545,4.88786,-0.66524,-13.24673,6.89 - 3 translacije, 3 rotacije, razmera u odnosu na WGS84 izražena u ppm (parts per milion)
+=m - jedinice metri.
Pored toga koordinatni referentni sistem u PROJ.4 notaciji može se zadati i koristeći EPSG kod. EPSG Geodetic Parameter Dataset je kolekcija definicija koordinatnih referentnih sistema i parametara koji opisuju te referentne sisteme.
Na stranici http://spatialreference.org/ ili na http://epsg.io mogu se naći definicije koordinatnih referentnih sistema u više notacija: EPSG, proj4, WKT, GML, JSON,… Na slici, Slika 5.1, dat je primer za WGS84 koordinatni sistem koji ima EPSG kod 4326.
Primer direktnog računanja dat je za Gaus Krigerovu projekciju:
proj +proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel
21.33254 45.22587
7526110.73 5009091.15
Pozivanjem proj
komande očekuje se da korisnik unese elipsoidne koordinate preko terminala ili iz tekstualnog fajla da bi se dobile pravougle koordinate. Koristeći linux funkcionalnost komanda se može izvršiti i direktno iz jedne komande linije.
echo 21.33254 45.22587 | proj +proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel
7526110.73 5009091.15
Kod inverznog kartografskog računanja neophodno je zadati i parametar -I
, komanda očekuje ulazne pravougle koordinate i kao rezultat dobijaju se elipsoidne koordinate longituda i latituda.
proj +proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel -I
7526110.73 5009091.15
21.332540 45.225870
Koordinatna transformacija iz jednog sistema u drugi ilustrovana je primerom konverzije iz Gaus Krigerovog starog državnog sistema (elipsoid Bessel i datum Hermanskogel) u novi UTM koordinatni referentni sistem za Srbiju (elipsoid GRS80 sa ETRS datumom za Srbiju):
echo 7526110.73 5009091.15 | cs2cs +proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=574.027,170.175,401.545,4.88786,-0.66524,-13.24673,6.89 +units=m +to +proj=utm +zone=34 +ellps=GRS80 +towgs84=0.26901,0.18246,0.06872,-0.01017,0.00893,-0.01172,0.04 +units=m
525672.87 5008094.39 42.46
Dat je i primer transformacije iz Gaus Krigera za Srbiju u WGS84, gde je WGS84 zadat EPSG kodom, a detalji o funkciji se mogu naći na url adresi: http://proj4.org/apps/cs2cs.html.
echo 7526110.73 5009091.15 | cs2cs +proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=574.027,170.175,401.545,4.88786,-0.66524,-13.24673,6.89 +units=m +to +init=epsg:4326 -f %12.6f
21.327021 45.225867 42.986502
Biblioteka PROJ.4 je implementirana u mnogim GIS softverima i može se jednostavno koristiti kroz grafički interfejs.