加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

maps – PHP将Exif GPS数据转换为Google友好值

发布时间:2020-12-13 17:12:15 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试将Exif经度和纬度数据转换为Google友好的十进制值.我已经阅读了很多教程,但似乎没有什么对我有用.我可能完全错了. 我成功获得Exif数据如下: $exif_data = exif_read_data($path.’/ user / images / 4.jpg’); $egeoLong = $exif_data['GPSLongit
我正在尝试将Exif经度和纬度数据转换为Google友好的十进制值.我已经阅读了很多教程,但似乎没有什么对我有用.我可能完全错了.

我成功获得Exif数据如下:

$exif_data = exif_read_data($path.’/ user / images / 4.jpg’);

$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

我通过这个函数运行它们来获得一个十进制值(我在Stackoverflow上得到了这个函数).

$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

任何人都可以告诉我我做错了什么,或者更好的方法来实现这一目标.任何帮助深表感谢.

解决方法

我找到了相同的公式,它对我也没有用.我最终想到的,以及对我有用的是:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读