GPS坐标翻译

时间:2011-04-30 17:18:23

标签: php google-maps gps

我正在使用VisionTek的设备开发GPS跟踪网站,型号为86VT

http://www.visiontek.co.in/vehicle-tracking-systems/86vt.html

我能够获取设备位置,但无法正确解析它,因为我们在谷歌地图中使用。 对于。防爆。我获得了Visakhapatnam的以下经度,在谷歌地图位置的原始坐标中为17.xxx。

17480249N

我不知道这种格式是什么,以及如何将17480249N转换为17.xxx。 我也知道“N”代表正值。

请帮助,我正在使用PHP,但任何逻辑都将受到赞赏。

这是我从设备获得响应的方式。请参阅坐标的粗体文字,我靠近维沙卡帕特南海滩。

$ 1,GlamourBik,14,11,10,14,40,08,的 17434800N,083185195E 下,02.1,13,0,0,A#

$ 2,GlamourBik,14,11,10,14,45,08,的 17440069N,083187747E 下,19.8,12,1,0,A#

$ 1,GlamourBik,14,11,10,16,53,42,的 17440319N,083176376E 下,00.3,178,1,0,A#

$ 1,GlamourBik,14,11,10,16,58,41,的 17440319N,083176376E 下,00.0,166,1,0,A#

$ 1,GlamourBik,14,11,10,17,03,42,的 17440319N,083176376E 下,00.0,42,1,0,A#

3 个答案:

答案 0 :(得分:3)

你确定它不是谷歌纵横吗? ( N应该表示北方和经度是东/西

在javascript中,这应该可以做你想要的......

function getUsable ( coordinate ) 
{
  var signMultiplier = {'S':-1,'N':1, 'W':-1, 'E':1};
  var sign = coordinate[ coordinate.length-1 ];
  return signMultiplier[sign] * parseInt(coordinate.replace( sign, '' ), 10) / 1000000;
}

使用getUsable('17480249N')将返回google-map友好版本。

我假设格式是六位浮点精度的整数表示。

N是正数,因为它表示北方而不是南方,它应该是负数 E(东)和W(西)相同。

http://jsfiddle.net/gaby/Rjk8e/

演示

<强>更新

使用完整坐标和@wallyk的答案进行更新后,这里有一个可以计算coords的版本,如果它们是DMS格式的。

function getUsableDMS( coordinate )
{
    var signMultiplier = {'S':-1,'N':1, 'W':-1, 'E':1};
    var sign = coordinate[ coordinate.length-1 ];
    var length = coordinate.length-1;
    var D = parseInt( coordinate.substr(0,(length==8)?2:3), 10 );
    var M = parseInt( coordinate.substr(2,2), 10 );
    var S = parseInt( coordinate.substr(4,4), 10 ) / 100;
  return signMultiplier[sign] * (D + (M/60) + (S/3600));
}

http://jsfiddle.net/gaby/Rjk8e/1/

演示

<强>实施例

您问题中的第一个坐标 17434800N 083185195E 位于任何位置(两者都是

中的海

google map using translation by first method

google map using translation by DMS method

答案 1 :(得分:2)

Visakhapatnam位于北纬17°42',东经83°15',或者有符号十进制+ 17.7°,+ 83.25°。由于Visakapatnam相当大, 17480249 可能意味着17°48'2.49“,距离EESE约2.5公里。

这就是GPS单位为NMEA 0183 bus格式化数据的方式,例如。

将数量作为字符串处理。对于纬度,使用第一对数字作为度数,第二对作为分钟,第三对作为秒,任何附加数字作为秒后小数点后的数字。对于经度,使用前三位数作为度数,其余数字与纬度相同。

要将度,分和秒(DMS)转换为度数,请使用公式D + M/60.0 + S/3600.0

答案 2 :(得分:1)

这个格式在这个页面上没有任何内容

http://en.wikipedia.org/wiki/Geographic_coordinate_conversion

我的建议是为更多城市收集一些数据,并希望您可以选择一种模式。