GPS format in PHP

后端 未结 2 1475
小蘑菇
小蘑菇 2020-12-18 17:06

how made in PHP from format 52.593800, 21.448850 format +52° 35\' 37.68\", +21° 26\' 55.86\" like do it google http://maps.google.pl/maps?hl=pl&t=m&q=52.593800,21.44

相关标签:
2条回答
  • 2020-12-18 17:38

    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);
    }   
    

    Should be trivial to change the array to the desired string.

    0 讨论(0)
  • 2020-12-18 17:40

    Straight from Wikipedia:

    Given a decimal longitudinal coordinate such as -87.728055 it is trivial to convert it to DMS form. It will be necessary to know whether it is a latitudinal or longitudinal coordinate in order to fully convert it. The method is as follows:

    • Subtract the whole number portion of the coordinate, leaving the fractional part. The whole number is the number of degrees. 87.728055 = 87 degrees.
    • Multiply the remaining fractional part by 60. This will produce a number of minutes in the whole number portion. 0.728055 x 60 = 43.6833 = 43 minutes.
    • Multiply the fractional part of the number of minutes by 60, producing a number of seconds. 0.6833 x 60 = 40.998 = 41 seconds. It is possible to count this as 40 seconds, truncating the decimal, round it to 41, or keep the entire number.
    • Depending on whether the source number was a latitudinal or longitudinal coordinate, and the sign of the number, add the N/S/E/W specifier. The following table shows the possibilities:
      Type   Dir.   Sign    Test
      Lat.   N      +       > 0
      Lat.   S      -       < 0
      Long.  E      +       > 0
      Long.  W      -       < 0
    

    A coordinate with at 0°0'0" latitude or longitude is neither North nor South, East nor West. It is simply zero latitude or zero longitude.

    The final result is: W 87°43'41".

    0 讨论(0)
提交回复
热议问题