2010-03-30 9 views

Répondre

7

Source

<?php 

function DMStoDEC($deg,$min,$sec) 
{ 

// Converts DMS (Degrees/minutes/seconds) 
// to decimal format longitude/latitude 

    return $deg+((($min*60)+($sec))/3600); 
}  

function DECtoDMS($dec) 
{ 

// Converts decimal longitude/latitude to DMS 
// (Degrees/minutes/seconds) 

// This is the piece of code which may appear to 
// be inefficient, but to avoid issues with floating 
// point math we extract the integer part and the float 
// part by using a string function. 

    $vars = explode(".",$dec); 
    $deg = $vars[0]; 
    $tempma = "0.".$vars[1]; 

    $tempma = $tempma * 3600; 
    $min = floor($tempma/60); 
    $sec = $tempma - ($min*60); 

    return array("deg"=>$deg,"min"=>$min,"sec"=>$sec); 
} 

devrait être trivial de changer le tableau à la chaîne désirée.

+0

thx, c'est vraiment génial et exacly ce dont j'ai besoin :)! – Adam

+0

@Gordon: Savez-vous comment réduire la différence est causée par la conversion entre degrés et DMS? – secretlm

10

Droit de Wikipedia:

Étant donné une décimale coordonnées longitudinale telle que -87,728055 il est trivial de le convertir en forme DMS. Il sera nécessaire de savoir s'il s'agit d'une coordonnée latitudinale ou longitudinale pour la convertir complètement. La méthode est la suivante:

  • Soustrayez la partie entière de la coordonnée, en laissant la partie décimale. Le nombre entier est le nombre de degrés. 87,728055 = 87 degrés.
  • Multipliez la partie fractionnaire restante par 60. Cela produira un nombre de minutes dans la partie entière. 0,728055 x 60 = 43,6833 = 43 minutes.
  • Multipliez la partie fractionnaire du nombre de minutes par 60, en produisant un nombre de secondes. 0,6833 x 60 = 40,998 = 41 secondes. Il est possible de compter cela en 40 secondes, en tronquant la décimale, en l'arrondissant à 41 ou en conservant le nombre entier.
  • Selon que le numéro source était une coordonnée latitudinale ou longitudinale et le signe du numéro, ajouter le spécificateur N/S/E/W. Le tableau suivant montre les possibilités:.
 
    Type Dir. Sign Test 
    Lat. N  +  > 0 
    Lat. S  -  < 0 
    Long. E  +  > 0 
    Long. W  -  < 0 

Une coordination des activités avec à 0 ° 0'0" de latitude ou de longitude est ni du Nord ni du Sud, de l'Est ni Ouest, il est tout simplement nulle latitude ou longitude zéro

.

Le résultat final est: W 87 ° 43'41 ".

+0

savez-vous comment réduire la différence est causée par la conversion entre degrés et DMS? Merci – secretlm