Example #1
0
 /**
  * Convert WGS lat/long (° dec) to CH x
  * @param unknown $lat
  * @param unknown $long
  * @return number
  */
 public static function WGStoCHx($lat, $long)
 {
     // Converts decimal degrees sexagesimal seconds
     $lat = DECtoSEX($lat);
     $long = DECtoSEX($long);
     // Auxiliary values (% Bern)
     $lat_aux = ($lat - 169028.66) / 10000;
     $long_aux = ($long - 26782.5) / 10000;
     // Process X
     $x = 200147.07 + 308807.95 * $lat_aux + 3745.25 * pow($long_aux, 2) + 76.63 * pow($lat_aux, 2) - 194.56 * pow($long_aux, 2) * $lat_aux + 119.79 * pow($lat_aux, 3);
     return $x;
 }
 public static function WGS84toCH1903($lat, $long)
 {
     // Convert DEC angle to SEX DMS
     function DECtoSEX($angle)
     {
         // Extract DMS
         $deg = intval($angle);
         $min = intval(($angle - $deg) * 60);
         $sec = (($angle - $deg) * 60 - $min) * 60;
         // Result in degrees sex (dd.mmss)
         return $deg + $min / 100 + $sec / 10000;
     }
     // Convert Degrees angle to seconds
     function DEGtoSEC($angle)
     {
         // Extract DMS
         $deg = intval($angle);
         $min = intval(($angle - $deg) * 100);
         $sec = (($angle - $deg) * 100 - $min) * 100;
         // Result in degrees sex (dd.mmss)
         return $sec + $min * 60 + $deg * 3600;
     }
     // Converts degrees dec to sex
     $lat = DECtoSEX($lat);
     $long = DECtoSEX($long);
     // Converts degrees to seconds (sex)
     $lat = DEGtoSEC($lat);
     $long = DEGtoSEC($long);
     // Axiliary values (% Bern)
     $lat_aux = ($lat - 169028.66) / 10000;
     $long_aux = ($long - 26782.5) / 10000;
     // Process Y
     $y = 600072.37 + 211455.93 * $long_aux - 10938.51 * $long_aux * $lat_aux - 0.36 * $long_aux * pow($lat_aux, 2) - 44.54 * pow($long_aux, 3);
     // Process X
     $x = 200147.07 + 308807.95 * $lat_aux + 3745.25 * pow($long_aux, 2) + 76.63 * pow($lat_aux, 2) - 194.56 * pow($long_aux, 2) * $lat_aux + 119.79 * pow($lat_aux, 3);
     return array($x, $y);
 }