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 korišćenja http://spatialreference.org/ sa mogućnostima preuzimanja parametara koordinatnih referentnih sistema u više notacija.

Slika 5.1: Primer korišćenja http://spatialreference.org/ sa mogućnostima preuzimanja parametara koordinatnih referentnih sistema u više notacija.

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.