Php GPS坐标转换

Php GPS坐标转换,php,google-maps,gps,Php,Google Maps,Gps,我正在开发GPS跟踪网站,该网站使用的设备来自VisionTek,型号为86VT 我能够得到设备的位置,但无法正确解析它,因为我们在谷歌地图中使用。 对于例如,我得到了Visakhapatnam的以下经度,在谷歌地图位置的原始坐标中为17.xxx 17480249N 我不知道这是什么格式,以及如何将17480249N转换为17.xxx。 我也知道“N”代表正值 请帮助,我正在使用PHP,但任何逻辑都将受到赞赏。 这就是我从设备获得响应的方式。请查看粗体文字的坐标,我靠近维萨卡帕特南海滩 1美元

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

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

17480249N

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

请帮助,我正在使用PHP,但任何逻辑都将受到赞赏。 这就是我从设备获得响应的方式。请查看粗体文字的坐标,我靠近维萨卡帕特南海滩

1美元,格拉穆尔比克,14,11,10,14,40,08,17434800N,083185195E,02.1,13,0,0,A#

2美元,格拉穆尔比克,14,11,10,14,45,08,17440069N,083187747E,19.8,12,1,0,A#

1美元,格拉穆尔比克,14,11,10,16,53,42,17440319N,083176376E,00.3178,1,0,A#

1美元,格拉穆尔比克,14,11,10,16,58,41,17440319N,083176376E,00.0166,1,0,A#


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

该格式不在本页中


我的建议是为更多的城市收集一些数据,希望你能找出一个模式。

你确定这不是纬度吗?(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')
将返回谷歌地图友好版

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

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

演示


更新

在您使用完整坐标和@wallyk的答案进行更新之后,这里有一个版本可以计算坐标(如果坐标是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));
}
演示


示例

您问题中的第一个坐标17434800N083185195E是否位于



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

例如,这就是GPS单元为数据格式化的方式

将数量作为字符串处理。对于纬度,使用第一对数字作为度,第二对数字作为分,第三对数字作为秒,任何其他数字作为秒小数点后的数字。对于经度,使用前三个数字作为度,使用剩余数字作为纬度


转换度、分和秒(DMS)的步骤在一定程度上,使用公式
D+M/60.0+S/3600.0

谢谢Gaby,我得到的值和它与google的匹配,但有大约1公里的误差。我不理解设备或转换代码的问题。我需要从其他位置尝试。@Ajay,用DMS翻译更新了答案,如@wallyk所述。也已发布结果点为google map。您能验证两张地图中的一张是否指向正确的位置吗?正如在这两种情况中提到的,我们得到的是海中的点,因为我在海滩上或海滩附近。可能是设备问题,因为他们提到它可能不是100%准确的位置。@Ajay,确实。数据不准确设备可能是一个因素,但距离1公里似乎有很长的路要走(但我不知道GPS设备的规格和规则。这可能是标准的。)我想联系该公司获取更多信息可能是明智之举。