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

Last change on this file since 12126 was 12126, checked in by cljosse, 13 years ago

[extensions] edit_gmaps add functions

File size: 5.0 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
75    // whole number, just return it
76    if( $den == 1 ) return $num;
77
78    $num2 = $num;
79    $den2 = $den;
80    $rem  = 1;
81    // Euclid's Algorithm (to find the gcd)
82    while( $num2 % $den2 ) {
83     $rem = $num2 % $den2;
84     $num2 = $den2;
85     $den2 = $rem;
86    }
87    if( $den2 != $den ) $rem = $den2;
88
89    $ret1->Numerator =($num / $rem ) ;
90        $ret1->Denominator=($den / $rem);
91
92    // now $rem holds the gcd of the numerator and denominator of our fraction
93    return $ret1;
94  }
95
96/**********************************
97* Decimal vers Deg Min Sec        *
98**********************************/ 
99function dec2dms($value) { 
100        $value= abs($value);
101        $degrees= floor($value);
102        $tmp=($value-$degrees)*60; 
103        $minutes= floor($tmp); 
104        $seconds= round(($tmp-$minutes)*6000)/100;
105       
106        $sec=  dec2frac($seconds);
107 
108        $ret[0]['Numerator'] =$degrees ;
109        $ret[0]['Denominator'] = 1 ;       
110        $ret[1]['Numerator']  =$minutes ;
111        $ret[1]['Denominator']=1; 
112        $ret[2]['Numerator']  =$sec->Numerator ;
113        $ret[2]['Denominator']=$sec->Denominator;
114  $ret[3]= " Deg: " . $degrees . " Min: " . $minutes . " Sec: " . $seconds."  " ;
115        $ret[4]= " " . $degrees . "/1 " . $minutes . "/1 " . $sec->Numerator."/".$sec->Denominator ; 
116return( $ret); 
117
118}
119
120
121function toFraction($number){
122
123echo  ($number)."<br />" ;
124$numerator = 1; 
125$denominator = 0; 
126$reste1->min =$number;
127
128
129for(  ; $numerator < 100; $numerator++){ 
130
131$temp =   ($numerator / $number);
132$reste=ceil($temp) - $temp;
133echo "<br />
134$reste --- $reste1->min " ; 
135if ($reste<$reste1->min) {
136        $reste1->numerator = $numerator;
137        $reste1->min =$reste ;
138        $reste1->denominator =$temp ;
139}
140
141    if(ceil($temp) - $temp == 0){ 
142                $denominator = $temp;
143                 break;
144        } 
145} 
146echo "<br />". $reste1->numerator . " /  " .$reste1->denominator ;
147
148return ($denominator > 0) ? $numerator . '/' . $denominator : false; 
149} 
150//==============================================
151 function Parse_Fract( $f ){
152  $nd = explode( '/', $f );
153  return $nd[0]/$nd[1];
154}
155 
156function Parse_Lat_Lon( $arr )
157{
158  $v=0;
159  $v += parse_fract( $arr[0] );
160  $v += parse_fract( $arr[1] )/60;
161  $v += parse_fract( $arr[2] )/3600;
162  return $v;
163}
164?>
Note: See TracBrowser for help on using the repository browser.