source: extensions/edit_gmaps/admin/include/fonctions.php @ 20035

Last change on this file since 20035 was 20035, checked in by cljosse, 11 years ago

[extensions] edit_gmaps Minor corrections

File size: 5.2 KB
Line 
1<?php 
2
3function base_to_meta($image){
4      $info_meta['lat']=$image['lat'];
5      $info_meta['lon']=$image['lon'];
6      $info_meta['alt']=$image['alt']; 
7      //===========================================================================
8      $info_meta['latRef'] = ($image['lat']<0)? 'S' : "N" ;
9      $info_meta['GPSLatitudeRef'] = ($image['lat']<0)? 'S' : "N" ;
10      $p1=dec2dms($image['lat']);
11 
12      $info_meta['latDMS']=$p1[0]['Numerator']  . "/" .
13            $p1[0]['Denominator'] ." ".
14            $p1[1]['Numerator'] . "/" .
15            $p1[1]['Denominator'] ." ".
16            $p1[2]['Numerator'] . "/" .
17            $p1[2]['Denominator'] ;
18
19      $info_meta['GPSLatitude']=array(
20            $p1[0]['Numerator']  . "/" .
21            $p1[0]['Denominator'] ,
22            $p1[1]['Numerator'] . "/" .
23            $p1[1]['Denominator'] ,
24            $p1[2]['Numerator'] . "/" .
25            $p1[2]['Denominator']
26            );
27
28      //===========================================================================
29      $info_meta['GPSLongitudeRef']  = ($image['lon']<0)? 'W' : "E" ;
30      $info_meta['lonRef']  = ($image['lon']<0)? 'W' : "E" ;
31      $p1=dec2dms($image['lon']);
32      $info_meta['lonDMS']=$p1[0]['Numerator']  . "/" .
33            $p1[0]['Denominator'] ." ".
34            $p1[1]['Numerator'] . "/" .
35            $p1[1]['Denominator'] ." ".
36            $p1[2]['Numerator'] . "/" .
37            $p1[2]['Denominator'] ;
38      $info_meta['GPSLongitude']=array(
39            $p1[0]['Numerator']  . "/" .
40            $p1[0]['Denominator'] ,
41            $p1[1]['Numerator'] . "/" .
42            $p1[1]['Denominator'] ,
43            $p1[2]['Numerator'] . "/" .
44            $p1[2]['Denominator']
45            );
46      //===========================================================================
47        $info_meta['GPSAltitudeRef'] = "0";
48        $p1= round( $image['alt'] * 5000000000 );
49        $info_meta['GPSAltitude']= $p1.'/'."500000000000"; 
50        $info_meta['altDMS']= $p1.'/'."500000000000"; 
51        $info_meta['altRef']= "0"; 
52  return $info_meta ;
53}
54
55/**********************************
56* DECIMAL TO FRACTION             *
57**********************************/ 
58  function dec2frac( $decimal ) {
59    $decimal = (string)$decimal;
60    $num = '';
61    $den = 1;
62    $dec = false;
63
64    // find least reduced fractional form of number
65    for( $i = 0, $ix = strlen( $decimal ); $i < $ix; $i++ ){
66     // build the denominator as we 'shift' the decimal to the right
67     if( $dec ) $den *= 10;
68
69     // find the decimal place/ build the numberator
70     if( $decimal{$i} == '.' ) $dec = true;
71     else $num .= $decimal{$i};
72    }
73    $num = (int)$num;
74 if(empty($ret1)) $ret1=(object) '';
75    // whole number, just return it
76    if( $den == 1 ) {
77        $ret1->Numerator =($num ) ;
78        $ret1->Denominator=($den);
79    return $ret1;
80    }
81    $num2 = $num;
82    $den2 = $den;
83    $rem  = 1;
84    // Euclid's Algorithm (to find the gcd)
85    while( $num2 % $den2 ) {
86     $rem = $num2 % $den2;
87     $num2 = $den2;
88     $den2 = $rem;
89    }
90        if( $den2 != $den ) $rem = $den2;
91       
92        $ret1->Numerator =($num / $rem ) ;
93        $ret1->Denominator=($den / $rem);
94     
95    // now $rem holds the gcd of the numerator and denominator of our fraction
96    return $ret1;
97  }
98
99/**********************************
100* Decimal vers Deg Min Sec        *
101**********************************/ 
102function dec2dms($value) { 
103        $value= abs($value);
104        $degrees= floor($value);
105        $tmp=($value-$degrees)*60; 
106        $minutes= floor($tmp); 
107        $seconds= round(($tmp-$minutes)*6000)/100;
108       
109        $sec =  dec2frac($seconds);
110
111   //if(empty($ret1)) $ret1=(object) ;
112   $ret=array();
113
114        $ret[0]['Numerator'] =$degrees ;
115        $ret[0]['Denominator'] = 1 ;       
116        $ret[1]['Numerator']  = $minutes ;
117        $ret[1]['Denominator']= 1; 
118        if($sec->Numerator){
119            $ret[2]['Numerator']  = $sec->Numerator ;
120            $ret[2]['Denominator']= $sec->Denominator;
121        }
122  $ret[3]= " Deg: " . $degrees . " Min: " . $minutes . " Sec: " . $seconds."  " ;
123        $ret[4]= " " . $degrees . "/1 " . $minutes . "/1 " . $sec->Numerator."/".$sec->Denominator ; 
124
125return( $ret); 
126
127}
128
129
130function toFraction($number){
131
132echo  ($number)."<br />" ;
133$numerator = 1; 
134$denominator = 0; 
135$reste1->min =$number;
136
137
138for(  ; $numerator < 100; $numerator++){ 
139
140$temp =   ($numerator / $number);
141$reste=ceil($temp) - $temp;
142echo "<br />
143$reste --- $reste1->min " ; 
144if ($reste<$reste1->min) {
145        $reste1->numerator = $numerator;
146        $reste1->min =$reste ;
147        $reste1->denominator =$temp ;
148}
149
150    if(ceil($temp) - $temp == 0){ 
151                $denominator = $temp;
152                 break;
153        } 
154} 
155echo "<br />". $reste1->numerator . " /  " .$reste1->denominator ;
156
157return ($denominator > 0) ? $numerator . '/' . $denominator : false; 
158} 
159//==============================================
160 function Parse_Fract( $f ){
161  $nd = explode( '/', $f );
162  return $nd[0]/$nd[1];
163}
164 
165function Parse_Lat_Lon( $arr )
166{
167  $v=0;
168  $v += parse_fract( $arr[0] );
169  $v += parse_fract( $arr[1] )/60;
170  $v += parse_fract( $arr[2] )/3600;
171  return $v;
172}
173?>
Note: See TracBrowser for help on using the repository browser.