<p id="t11vv"></p>

<track id="t11vv"><strike id="t11vv"><rp id="t11vv"></rp></strike></track>

      <big id="t11vv"></big><track id="t11vv"></track><pre id="t11vv"><strike id="t11vv"><b id="t11vv"></b></strike></pre>

        <track id="t11vv"></track>

        使用PHP實現NMEA0183協議中的GGA語句解析

        NMEA0183協議 百恒 2023-02-03 1512
        NMEA0183協議是接收機輸出定位信息的通用標準之一,其中GGA語句包含了關鍵的時間、經緯度、定位狀態等內容。如何使用PHP實現該數解析功能,接下來由百恒物聯技術部工程師向大家介紹實現方法。

        NMEA0183協議是接收機輸出定位信息的通用標準之一,其中GGA語句包含了關鍵的時間、經緯度、定位狀態等內容

        格式:
        $GPGGA,134658.00,5106.9792,N,11402.3003,W,2,09,1.0,1048.47,M,-16.27,M,08,AAAA*60




        Num 字段 具體內容 格式 示例
        1 $GPGGA 記錄頭 $GPGGA
        2 utc 定位時間 hhmmss.ss 134658.00
        3 lat 緯度 DDmm.mm 5106.9792
        4 lat direction 緯度方向,北緯N或南緯S N
        5 lon 經度 DDDmm.mm 11402.300
        6 lon direction 經度方向,東經E或西經W W
        7 quality 表示定位解的狀態,常用有1=單點解,2=偽距差分解,4=RTK固定解,5=RTK浮點解 2
        8 # sats 參與定位解算的衛星數 09
        9 hdop 水平精度因子 1.0
        10 altitude 天線海拔高,相距于平均海水面 1048.47
        11 altitude units 天線海拔高單位,M=meters M
        12 undulation 大地水準面與參考橢球面的偏差 -16.27
        13 undulation units 大地水準面與參考橢球面的偏差單位,M=meters M
        14 age 差分時間或齡期,沒有差分數據時通常為空 08
        15 station ID 差分基站ID AAAA
        16 *xx 校驗和 *60
        17 [CR][LF] 語句中止符 [CR][LF]



        解析GPS坐標 protected function dwgps( string $gps = '' )
        { if ( $gps == '' ) return ['success'=>0,'msg'=>'gps data is empty']; try {
                
                $gps  = explode(',',$gps);
                $date = isset($gps[0]) ? $gps[0] : 0; //定位時間 $wd   = isset($gps[1]) ? $gps[1] : ''; //緯 0-90 lat $wd2  = isset($gps[2]) ? $gps[2] : ''; //緯度 (N北緯)(S南緯) $jd   = isset($gps[3]) ? $gps[3] : ''; //經度 0-180 lng $jd2  = isset($gps[4]) ? $gps[4] : ''; //經度 (E東經)(W西經) $state= isset($gps[5]) ? $gps[5] : ''; //0=未定位,1=非差分定位,2=差分定位,3=無效PPS,6=正在估算 $count= isset($gps[6]) ? $gps[6] : ''; //使用的衛星數量(00 - 12)(前導位數不足則補0) $hdop = isset($gps[7]) ? $gps[7] : ''; //HDOP水平精度因子(0.5 - 99.9) $high = isset($gps[8]) ? $gps[8] : ''; //海拔高度 $unit = isset($gps[9]) ? $gps[9] : ''; //天線海拔高單位 if ( $wd == '' || $jd == '' ) return ['success'=>0,'msg'=>'data is null'];
                $wd = ltrim($wd,'0');
                $jd = ltrim($jd,'0');
                $wdw = explode('.',$wd);
                $wdw1 = $wdw[0];
                $wdw2 = $wdw[1];
                $wd   = intval($wdw1/100) + floatval(($wdw1%100).'.'.$wdw2)/60;
                $jdw  = explode('.',$jd);
                $jdw1 = $jdw[0];
                $jdw2 = $jdw[1];
                $jd	  = intval($jdw1/100) + floatval(($jdw1%100).'.'.$jdw2)/60;
                $res  = ['date'=>$date,'lat'=>(string)$wd,'wd2'=>$wd2,'lng'=>(string)$jd,'jd2'=>$jd2,'state'=>$state,'count'=>$count,'hdop'=>$hdop,'high'=>$high,'unit'=>$unit]; return ['success'=>1,'data'=>$res,'msg'=>''];
            } catch ( \Exception $e ) { return ['success'=>0,'msg'=>'解析失敗'];
            }
        }



        轉換GPS坐標 public function changepgsv2( array $list = [] )
        {
            $conf   = ['ssl' => ['verify_peer' => false,'verify_peer_name' => false,]];
            $max    = 20;
            $res 	= [];
            $count  = count($list);
            $psize  = ceil($count/$max); for( $i=0;$i<$psize;$i++ ) { $gpsstring = ''; for( $j=($i*$max);$j<($i*$max)+$max;$j++ ) { if ( $j<$count ) { $obj = $list[$j]; $gpsstring .= $obj['lat'].','.$obj['lng'].';'; } } $gpsstring = trim($gpsstring,';'); $url = "https://apis.map.qq.com/ws/coord/v1/translate?locations={$gpsstring}&type=1&key=G7GBZ-WL66U-GKCV5-4O5DP-KPGNO-4XFNG"; $vres = file_get_contents($url,false,stream_context_create($conf)); $vres = json_decode($vres,true); if ( $vres['status'] == 0 ) { foreach( $vres['locations'] as $vk=>$vv ) {
                        $res[] = ['lng'=>(string)$vv['lng'],'lat'=>(string)$vv['lat']];
                    }
                } if ( $psize >1 ) sleep(1);
            } return $res;
        }

        百恒物聯專業、專注于物聯網應用開發、物聯網綜合管控平臺開發,歡迎廣大用戶來電洽談。
        希望本文對廣大物聯網技術研發人員或從事企業物聯網應用開發公司的團隊有所幫助,如對此不太理解的,可以與百恒物聯研發部聯系。文章均為百恒物聯原創,轉載請注明來自http://www.easyanesthesia.com/index.php/article/417.html
        400-680-9298,0791-88117053
        掃一掃關注百恒網絡微信公眾號
        歡迎您的光顧,我們將竭誠為您服務×
        售前咨詢 售前咨詢
         
        售前咨詢 售前咨詢
         
        售前咨詢 售前咨詢
         
        售前咨詢 售前咨詢
         
        售前咨詢 售前咨詢
         
        售后服務 售后服務
         
        售后服務 售后服務
         
        ×