Geo конвертация с php - PullRequest
       13

Geo конвертация с php

0 голосов
/ 28 августа 2009

Я хотел бы преобразовать строку lat / lng в десятичные числа в php. Пример:

N47° 30.5951' = 47+(30.59517/60) = 47.509918333

Есть ли простой способ сделать это, регулярное выражение?

Спасибо

Ответы [ 3 ]

1 голос
/ 28 августа 2009

не уверен, принадлежат ли здесь E и W, но кроме этого:

0 голосов
/ 28 августа 2009
preg_match('/^N(\d+)\° (\d+(?:\.\d+)?)\'$/i', "N47° 30.5951'", $bits);
$coord = floatval($bits[1]) + (floatval($bits[2])/60);

Прости меня за незнание лат-лонга, если я не в курсе.

0 голосов
/ 28 августа 2009

Вы не можете выполнять арифметику при обычной замене регулярных выражений, но вы можете написать функцию обратного вызова и использовать preg_replace_callback.

function matches_to_decimal($matches) {
    return $matches[2] + ($matches[3]/60);
}

$inputString = "N47° 30.5951'";
$resultDecimal = preg_replace_callback('/(N|S)(\d+)° (\d+\.?\d*)\'/',
    "matches_to_decimal",
    $inputString);

Кстати, широта и долгота обычно записываются как 47 ° 30'35 "с.ш., 123 ° 56'12" з.д., поэтому вы можете соответствующим образом настроить регулярное выражение и функцию обратного вызова.

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