2012-06-13 51 views
4

我想將Exif經度和緯度數據轉換爲Google友好的十進制值。我已經閱讀了很多教程,但似乎沒有爲我工作。我可能會做這個完全錯誤的。PHP將Exif GPS數據轉換爲Google友好值

我順利拿到Exif數據如下:($路徑 '/user/images/4.jpg')

$ exif_data = exif_read_data;

$egeoLong = $exif_data['GPSLongitude']; 
$egeoLat = $exif_data['GPSLatitude']; 
$egeoLongR = $exif_data['GPSLongitudeRef']; 
$egeoLatR = $exif_data['GPSLatitudeRef']; 

從那裏我結束了以下數組變量的值:

deg Long: 118/1 
min Long: 2147/100 
sec Long: 0/1 
Longitude Ref: W 

deg Lat: 34/1 
min Lat: 433/100 
sec Lat: 0/1 
Latitude Ref: N 

我跑他們通過這個功能來獲得一個十進制值(我在這裏#1了此功能)。

$geoLong = gpsDecimal($egeoLong[0], $egeoLong[1], $egeoLong[2], $egeoLongR); 
$geoLat = gpsDecimal($egeoLat[0], $egeoLat[1], $egeoLat[2], $egeoLatR); 

function gpsDecimal($deg, $min, $sec, $hemi) { 
    $d = $deg+((($min*60)+($sec))/3600); 
    return ($hemi=='S' || $hemi=='W') ? $d*=-1 : $d; 
} 

它返回以下......將座標置於海洋中......不是我拍攝照片的地方。

緯度:41.216666666667 經度:-153.78333333333

誰能告訴我什麼,我做錯了,或者有更好的方式來實現這一目標。任何幫助深表感謝。

+0

[PHP提取GPS的可能重複EXIF數據](http://stackoverflow.com/questions/2526304/php-extract-gps-exif-data) –

+0

看看這裏[http://stackoverflow.com/a/2526412](http://stackoverflow.com/a/2526412) – mica

回答

3

我發現相同的公式,它也不適用於我。我終於想通了,什麼工作對我來說,就是:

function toDecimal($deg, $min, $sec, $hem) 
{ 
    $d = $deg + ((($min/60) + ($sec/3600))/100); 
    return ($hem=='S' || $hem=='W') ? $d*=-1 : $d; 
} 
+1

我認爲你犯了一個錯誤。 這不是分和秒都應該除以100,但只是秒,所以好公式看起來像: $ d = $ deg +((($ min/60)+($ sec/3600)/ 100)); – Buzut

1

我發現最好的approximization的(基於座標通過谷歌地圖翻譯)

$deg + ($min/60) + ($sec/36000000) 
相關問題