Как преобразовать эти координаты в координаты, читаемые Google Maps?

Взгляните на координаты карты на этой странице. Это связано с Википедией, и координаты передаются в строке запроса. Я не уверен в реальных терминах для этого, но как преобразовать координаты? Они выглядят так:

37° 14′ 6″ с.ш., 115° 48′ 40″ з.д.

Я бы хотел, чтобы они выглядели так:

37,235, -115,811111

, который является форматом, читаемым картами Google, как показано в этот пример.

Как мне это сделать в PHP и как называются два разных типа координат?


person Ali    schedule 15.06.2009    source источник


Ответы (4)


Исходный формат в часах, минутах, секундах. Чтобы преобразовать в десятичную, выполните:

D = H + M/60 + s/3600

Итак, в вашем примере 37,14,6 становится

37 + 14/60 + 6/3600 = 37,235, как указано.

Если широта равна N, результат положительный, если S — отрицательный. Если долгота Е, результат положительный. Если запад, результат отрицательный.

person PaulJWilliams    schedule 15.06.2009

Вот функция Javascript, которая делает то, о чем вы говорите.

Эта утилита позволяет пользователю преобразовывать широту и долготу между десятичными градусами и градусами, минутами и секундами. Для удобства включена ссылка на программу NADCON Национальной геодезической службы, которая позволяет выполнять преобразования между системой координат NAD83/WGS84 и более старой системой координат NAD27. Координаты NAD27 в настоящее время используются для авторизации вещания и приложений.

Эта утилита требует, чтобы Javascript был включен для выполнения вычислений.

person Cute Bear    schedule 15.01.2014

Мой PHP-код из этого поста, спасибо!

function GetLatLon_FromExif($GPS){
$Lat_Ref = $GPS['GPSLatitudeRef'];
if($Lat_Ref == "S") { $Lat_Neg = "-"; }
$Lat_H = explode("/" ,$GPS['GPSLatitude']['0'])[0];
$Lat_M = explode("/" ,$GPS['GPSLatitude']['1'])[0];
$Lat_S = explode("/" ,$GPS['GPSLatitude']['2'])[0];
$Lat_S2 = explode("/" ,$GPS['GPSLatitude']['2'])[1];

$Lon_Ref = $GPS['GPSLongitudeRef'];
if($Lon_Ref == "W") { $Lon_Neg = "-"; }
$Lon_H = explode("/" ,$GPS['GPSLongitude']['0'])[0];
$Lon_M = explode("/" ,$GPS['GPSLongitude']['1'])[0];
$Lon_S = explode("/" ,$GPS['GPSLongitude']['2'])[0];
$Lon_S2 = explode("/" ,$GPS['GPSLongitude']['2'])[1];

$Lat = $Lat_H+($Lat_M/60)+(($Lat_S/$Lat_S2)/3600);
$Lon = $Lon_H+($Lon_M/60)+(($Lon_S/$Lon_S2)/3600);

return $Lat_Neg.$Lat.",".$Lon_Neg.$Lon;
}

JSON (из ИЗОБРАЖЕНИЯ EXIF):

"GPS": {
  "GPSLatitudeRef": "N",
  "GPSLatitude": [
    "22/1",
    "15/1",
    "1708/100"
  ],
  "GPSLongitudeRef": "W",
  "GPSLongitude": [
    "97/1",
    "52/1",
    "1882/100"
  ],
  "GPSAltitudeRef": "\u0000",
  "GPSAltitude": "9364/369",
  "GPSSpeedRef": "K",
  "GPSSpeed": "2203/12629",
  "GPSImgDirectionRef": "T",
  "GPSImgDirection": "52751/159",
  "GPSDestBearingRef": "T",
  "GPSDestBearing": "52751/159",
  "UndefinedTag:0x001F": "6625/828"
}
person Luis S. Lopez Maitret    schedule 06.01.2021

Хм, страница, которую вы упомянули, уже дает вам координаты в WGS84 и в формате широты и долготы.

person jitter    schedule 15.06.2009
comment
Да, я знаю это, но мне просто нужна формула для получения широты и долготы из координат - формат WGS84, как вы сказали. Или функция в Php была бы еще лучше :) - person Ali; 15.06.2009