我从GPS到微控制器得到以下回复,而不是尝试解析字符串并将其转换为十六进制发送,我宁愿只使用提供的十六进制值然后发送到我的服务器,但我'我很难确定它存储的格式。
(另一个例子:)
我已尝试过其他类似标题的答案但无济于事。
第一个例子中的Lat看起来像-7020998 dec,因为它在南方,类似于第二个例子中的Lon(-22942054)在西方也是负面的。
我尝试将数字除以转换后的预期结果(使用度+分/ 60 +秒/ 3600)我想出一个粗略的数字, 即:
这看起来接近180000,但如果我除以它看起来不正确(-7020998 / 180000 = -39.00554)。但是186413与什么相关?我觉得我错过了一些完全明显的东西......
编辑:我能够使用下面的快速示例(我知道它不漂亮)让它工作:
if ($GPSLatitude > 0x7FFFFFFF) // ensure correct signedness
$GPSLatitude-=0x100000000;
$GPSf = floatval($GPSLatitude) / 186413.51334561207757602506827277;
$GPSD = floor($GPSf);
$GPSt = abs($GPSf - $GPSD) * 60;
$GPSM = floor($GPSt);
$GPSS = floor(($GPSt - $GPSM) * 6000) / 100;
echo 'GPS Latitude: ' . $GPSD . ' Deg ' . $GPSM . ' Min ' . number_format($GPSS,2,'.','') . ' Sec';
结果完全吻合,但我知道除了那个可怕的数字之外还有更好的方法吗?
答案 0 :(得分:0)
根据http://en.wikipedia.org/wiki/Geotagging,即使在有理数中也可以设置GPS坐标:
存储在EXIF中时,坐标表示为一系列 GPS子IFD中的有理数。这是一个十六进制的转储 EXIF元数据的相关部分(使用big-endian字节顺序):
我担心,你没有全部十六进制数字,你只看到有理数的上半部分。而无形的除数可能就是那个神奇的数字。
我并不是坚持这样,我只是证明格式中可能隐藏着任何内容。 而且你在计算度数,而坐标可能只是高斯X,Y。
无论如何,GPS格式的名称是什么?