如何知道图像的地理位置(十进制格式)
How to know the Geo Location(decimal degree format) of an Image
有没有以十进制格式获取图像经纬度的最简单方法?
$exif = exif_read_data($photos['file_path'],0, true, false);
print_r($exif);
我得到了什么:
[GPS] => Array
(
[GPSLatitudeRef] => N
[GPSLatitude] => Array
(
[0] => 13/1
[1] => 57/1
[2] => 1032/100
)
[GPSLongitudeRef] => E
[GPSLongitude] => Array
(
[0] => 121/1
[1] => 9/1
[2] => 5137/100
)
[GPSAltitudeRef] =>
[GPSAltitude] => 344/1
[GPSTimeStamp] => Array
(
[0] => 10/1
[1] => 12/1
[2] => 5292/100
)
[GPSSpeedRef] => K
[GPSSpeed] => 0/1
[GPSImgDirectionRef] => T
[GPSImgDirection] => 32993/102
[GPSDestBearingRef] => T
[GPSDestBearing] => 75030/523
[GPSDateStamp] => 2015:07:28
)
这里有人可以帮我把这些东西转换成十进制格式吗?
看起来 GPSLatitude[0] 是度数,GPSLatitude[1] 是分钟,GPSLatitude[2] 是秒等等,但编码为 'whole number' / 'denominator'
下面是一些进行计算的代码:
$exif = exif_read_data("your-image-file-with-GPS-exif-data.JPG",0, true, false);
if (isset($exif['GPS'])) {
$longitude_array = $exif['GPS']['GPSLongitude'];
$latitude_array = $exif['GPS']['GPSLatitude'];
} else {
die("no exif GPS");
}
function GPScalc($string) { // function to calculate the EXIF encoded string
$GPSparts = explode("/",$string);
return $GPSparts[0] / $GPSparts[1];
}
function GPSdec($GPSarray) { // function to put the exif parts together to decimal degrees
return GPScalc($GPSarray[0]) +
GPScalc($GPSarray[1])/60 +
GPScalc($GPSarray[2])/3600;
}
$longitude_decimal_degree=GPSdec($longitude_array);
$latitude_decimal_degree=GPSdec($latitude_array);
print "Longitude = $longitude_decimal_degree , Latitude = $latitude_decimal_degree";
这将输出如下内容:
Longitude = 1.632425 , Latitude = 53.297658333333
有没有以十进制格式获取图像经纬度的最简单方法?
$exif = exif_read_data($photos['file_path'],0, true, false);
print_r($exif);
我得到了什么:
[GPS] => Array
(
[GPSLatitudeRef] => N
[GPSLatitude] => Array
(
[0] => 13/1
[1] => 57/1
[2] => 1032/100
)
[GPSLongitudeRef] => E
[GPSLongitude] => Array
(
[0] => 121/1
[1] => 9/1
[2] => 5137/100
)
[GPSAltitudeRef] =>
[GPSAltitude] => 344/1
[GPSTimeStamp] => Array
(
[0] => 10/1
[1] => 12/1
[2] => 5292/100
)
[GPSSpeedRef] => K
[GPSSpeed] => 0/1
[GPSImgDirectionRef] => T
[GPSImgDirection] => 32993/102
[GPSDestBearingRef] => T
[GPSDestBearing] => 75030/523
[GPSDateStamp] => 2015:07:28
)
这里有人可以帮我把这些东西转换成十进制格式吗?
看起来 GPSLatitude[0] 是度数,GPSLatitude[1] 是分钟,GPSLatitude[2] 是秒等等,但编码为 'whole number' / 'denominator'
下面是一些进行计算的代码:
$exif = exif_read_data("your-image-file-with-GPS-exif-data.JPG",0, true, false);
if (isset($exif['GPS'])) {
$longitude_array = $exif['GPS']['GPSLongitude'];
$latitude_array = $exif['GPS']['GPSLatitude'];
} else {
die("no exif GPS");
}
function GPScalc($string) { // function to calculate the EXIF encoded string
$GPSparts = explode("/",$string);
return $GPSparts[0] / $GPSparts[1];
}
function GPSdec($GPSarray) { // function to put the exif parts together to decimal degrees
return GPScalc($GPSarray[0]) +
GPScalc($GPSarray[1])/60 +
GPScalc($GPSarray[2])/3600;
}
$longitude_decimal_degree=GPSdec($longitude_array);
$latitude_decimal_degree=GPSdec($latitude_array);
print "Longitude = $longitude_decimal_degree , Latitude = $latitude_decimal_degree";
这将输出如下内容:
Longitude = 1.632425 , Latitude = 53.297658333333