Php ile Geo dönüşüm

3 Cevap

I would like to convert a lat/lng string to decimals in php. An example:

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

Bu, düzenli ifade yapmanın kolay bir yolu var mı?

Teşekkürler

3 Cevap

emin E ve W buraya ait olmadığını, ama bu hariç:

$regex = "/[EWNS](\d{1,3})°\ (\d{1,3}\.\d{0,10})'/";  
if (preg_match($regex, "N47° 30.5951'", $matches))
{
   $result = $matches[1] + ((float) $matches[2] / 60);
}
preg_match('/^N(\d+)\° (\d+(?:\.\d+)?)\'$/i', "N47° 30.5951'", $bits);
$coord = floatval($bits[1]) + (floatval($bits[2])/60);

Ben işareti kapalı isem, lat uzun benim cehalet bağışla.

Normal bir regex yerine aritmetik yapamazsınız, ancak bir geri çağırma işlevi ve kullanım preg_replace_callback yazabilirsiniz.

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

Buna göre regex ve geri arama işlevini ayarlayın böylece arada, enlem ve boylam, genellikle, W 47 ° 30'35 "N 123 ° 56'12" yazılır.