【问题标题】:Converting GPRMC GPS data to decimal format in PHP在 PHP 中将 GPRMC GPS 数据转换为十进制格式
【发布时间】:2013-12-16 00:36:29
【问题描述】:

跟踪设备在$GPRMC 中发送了数据,这不是我在代码中使用的,在谷歌上搜索 PHP 转换为十进制格式的方法无济于事。

刚刚得到解决方案不得不让我对$GPRMC的内容感到头疼 示例格式例如$GPRMC,001225,A,2832.1834,N,08101.0536,W,12,25,251211,1.2,E,A*03

地点:

RMC   Recommended Minimum sentence C

123519       Fix taken at 12:35:19 UTC

A            Status A=active or V=Void.

4807.038,N   Latitude 48 deg 07.038' N

01131.000,E  Longitude 11 deg 31.000' E

022.4        Speed over the ground in knots

084.4        Track angle in degrees True

230394       Date - 23rd of March 1994

003.1,W      Magnetic Variation

*6A          The checksum data, always begins with *

还有代码:

$gps = $_REQUEST['gps'];

if($gps){
$buffer = $gps;
if(substr($buffer, 0, 5)=='GPRMC'){

    $gprmc = explode(',',$buffer);
    $data1['lattitude_decimal'] = DMStoDEC($gprmc[3],'lattitude');
    $data2['longitude_decimal'] = DMStoDEC($gprmc[5],'longitude');

    $data = 'http://maps.google.com/maps?q='.$data1['lattitude_decimal'].','.$data2['longitude_decimal'].'+(PHP Decoded)&iwloc=A';

    print_r($data);
    echo "\n\n";
}
 }
   function DMStoDEC($dms, $longlat){

if($longlat == 'lattitude'){
    $deg = substr($dms, 0, 2);
    $min = substr($dms, 2, 8);
    $sec = '';
}
if($longlat == 'longitude'){
    $deg = substr($dms, 0, 3);
    $min = substr($dms, 3, 8);
    $sec='';
}


return $deg+((($min*60)+($sec))/3600);
  } 

  ?>

希望这会对某人有所帮助

【问题讨论】:

  • 问题是什么?
  • 将 $GPRMC GPS 位置转换为十进制我会更好地编辑问题然后我的文字有限我后来得到了答案

标签: php gps latitude-longitude type-conversion


【解决方案1】:

这是典型的发帖请求:

POST /RoyS/?acct=1234&dev=null&gprmc=$GPRMC,132201,A,3128.7540,N,14257.6714,W,000.0,000.0,290314,,*e HTTP/1.1" 200 33 "-" "-"

该行应该是$gps = $_REQUEST['gprmc'];。你确定这条线?

if(substr($buffer, 0, 5)=='GPRMC') {

不应该是:

if(substr($buffer, 1, 5)=='GPRMC') {

? 你肯定忽略了 NWSE 的信件!

【讨论】:

    【解决方案2】:

    formula acá

    list($dato1, $dato2, $dato3, $lat, $dato5, $lon, $dato7, $velocidad, $dato9, $dato10, $dato11, $dato12) = explode(',', $input_gps);
    
    $resultado_lat = $lat / 100;
    
    list ($latitud_entero, $latitud_decimal) = explode('.', $resultado_lat);
    
    $resultado_lat_minutos = $lat - ($latitud_entero * 100);
    
    $resultado_lat_segundos = ($resultado_lat_minutos / 60);
    
    $resultado_lat_final = $latitud_entero + $resultado_lat_segundos;
    
    if ($dato5 == 'S'){
        $resultado_lat_final = $resultado_lat_final * -1;
    }
    
    $resultado_lon = $lon / 100;
    
    list ($longitud_entero, $longitud_decimal) = explode('.', $resultado_lon);
    
    $resultado_lon_minutos = $lon - ($longitud_entero * 100);
    
    $resultado_lon_segundos = ($resultado_lon_minutos / 60);
    
    $resultado_lon_final = $longitud_entero + $resultado_lon_segundos;
    
    if ($dato7 == 'W'){
        $resultado_lon_final = $resultado_lon_final * -1;
    } 
    

    【讨论】:

    • 描述很有帮助。
    猜你喜欢
    • 2010-10-15
    • 2015-03-17
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 2020-01-04
    相关资源
    最近更新 更多