9

看看这个页面上的地图坐标。这是从 Wikipedia 链接的,坐标通过查询字符串传递。我不确定这个的实际条款,但我如何转换坐标?它们看起来像这样:

37° 14' 6" N, 115° 48' 40" W

我希望它们看起来像这样:

37.235, -115.811111

,这是一种谷歌地图可读的格式,如本例所示

我如何在 PHP 中做到这一点,这两种不同类型的坐标是什么?

4

4 回答 4

28

原始格式为小时、分钟、秒格式。要转换为十进制,请执行以下操作:

D = H + M/60 + s/3600

所以在你的例子中, 37,14,6 变成

如前所述,37 + 14/60 + 6/3600 = 37.235。

如果纬度为 N,则结果为正,如果为 S,则为负。如果经度为 E,则结果为正。如果西,结果是否定的。

于 2009-06-15T12:07:47.257 回答
1

是执行您正在谈论的内容的Javascript函数。

此实用程序允许用户在十进制度和度、分和秒之间转换纬度和经度。为方便起见,国家大地测量局的 NADCON 程序包含一个链接,该程序允许在 NAD83 / WGS84 坐标系和旧的 NAD27 坐标系之间进行转换。NAD27 坐标目前用于广播授权和应用。

此实用程序需要启用 Javascript 才能执行计算。

于 2014-01-15T14:09:32.050 回答
0

我这篇文章中的 PHP 代码,谢谢!

function GetLatLon_FromExif($GPS){
$Lat_Ref = $GPS['GPSLatitudeRef'];
if($Lat_Ref == "S") { $Lat_Neg = "-"; }
$Lat_H = explode("/" ,$GPS['GPSLatitude']['0'])[0];
$Lat_M = explode("/" ,$GPS['GPSLatitude']['1'])[0];
$Lat_S = explode("/" ,$GPS['GPSLatitude']['2'])[0];
$Lat_S2 = explode("/" ,$GPS['GPSLatitude']['2'])[1];

$Lon_Ref = $GPS['GPSLongitudeRef'];
if($Lon_Ref == "W") { $Lon_Neg = "-"; }
$Lon_H = explode("/" ,$GPS['GPSLongitude']['0'])[0];
$Lon_M = explode("/" ,$GPS['GPSLongitude']['1'])[0];
$Lon_S = explode("/" ,$GPS['GPSLongitude']['2'])[0];
$Lon_S2 = explode("/" ,$GPS['GPSLongitude']['2'])[1];

$Lat = $Lat_H+($Lat_M/60)+(($Lat_S/$Lat_S2)/3600);
$Lon = $Lon_H+($Lon_M/60)+(($Lon_S/$Lon_S2)/3600);

return $Lat_Neg.$Lat.",".$Lon_Neg.$Lon;
}

JSON(来自图像 EXIF):

"GPS": {
  "GPSLatitudeRef": "N",
  "GPSLatitude": [
    "22/1",
    "15/1",
    "1708/100"
  ],
  "GPSLongitudeRef": "W",
  "GPSLongitude": [
    "97/1",
    "52/1",
    "1882/100"
  ],
  "GPSAltitudeRef": "\u0000",
  "GPSAltitude": "9364/369",
  "GPSSpeedRef": "K",
  "GPSSpeed": "2203/12629",
  "GPSImgDirectionRef": "T",
  "GPSImgDirection": "52751/159",
  "GPSDestBearingRef": "T",
  "GPSDestBearing": "52751/159",
  "UndefinedTag:0x001F": "6625/828"
}
于 2021-01-06T09:55:57.473 回答
-1

嗯,您提到的页面已经为您提供了 WGS84 和纬度经度格式的坐标

于 2009-06-15T12:11:02.410 回答