GPS формат в PHP - PullRequest
       46

GPS формат в PHP

0 голосов
/ 31 марта 2010

как сделано в PHP из формата 52.593800, 21.448850 формата + 52 ° 35 '37,68 ", + 21 ° 26' 55,86" как это сделать Google http://maps.google.pl/maps?hl=pl&t=m&q=52.593800,21.448850?

Ответы [ 2 ]

10 голосов
/ 31 марта 2010

Прямо из Википедия :

Учитывая десятичную продольную координату, такую ​​как -87.728055, преобразовать ее в форму DMS тривиально. Чтобы полностью преобразовать ее, необходимо знать, является ли она широтной или продольной координатой. Метод заключается в следующем:

  • Вычтите целую числовую часть координаты, оставив дробную часть. Целое число - это количество градусов. 87,728055 = 87 градусов.
  • Умножьте оставшуюся дробную часть на 60. Это даст количество минут в целой числовой части. 0,728055 x 60 = 43,6833 = 43 минуты.
  • Умножьте дробную часть количества минут на 60, получая количество секунд. 0,6833 х 60 = 40,998 = 41 секунда. Можно считать это как 40 секунд, усекая десятичное число, округляя его до 41 или сохраняя все число.
  • В зависимости от того, была ли номер источника координат широтной или продольной, а также от знака числа, добавьте спецификатор N / S / E / W. Следующая таблица показывает возможности:
  Type   Dir.   Sign    Test
  Lat.   N      +       > 0
  Lat.   S      -       < 0
  Long.  E      +       > 0
  Long.  W      -       < 0

Координата с широтой или долготой в 0 ° 0'0 "не является ни севером, ни югом, ни востоком, ни западом. Это просто нулевая широта или нулевая долгота.

Окончательный результат: W 87 ° 43'41 ".

7 голосов
/ 31 марта 2010

Источник

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

Должно быть тривиально, чтобы изменить массив на нужную строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...