1.一種運單信息自動錄入和狀態(tài)自動同步的算法,其特征在于,包括以下步驟:
步驟S1,位置數(shù)據的采集,通過GPS系統(tǒng)獲取車輛定位數(shù)據;
步驟S2,數(shù)據預處理,將車輛所在位置的經度、緯度轉化為地圖標準類型的經緯度;
步驟S3:計算車輛所在位置與路線設置中所設置的發(fā)貨點的之間距離;
步驟S4:計算車輛是否在發(fā)貨點的圍欄內;
當車輛在發(fā)貨點的圍欄內,且僅當首次出現(xiàn)在發(fā)貨點的圍欄內時,系統(tǒng)會自動記錄此條信息;
當車輛在發(fā)貨點的圍欄范圍外,且之前系統(tǒng)有記錄此車進入發(fā)貨點的記錄,則判定此車駛出發(fā)貨點的圍欄,系統(tǒng)會自動記錄此條信息;
步驟S5:計算車輛所在位置與路線設置中所設置的收貨點的之間距離;
步驟S6:計算車輛是否在收貨點的圍欄內;
當車輛在收貨點的圍欄內,且僅當首次出現(xiàn)在收貨點的圍欄內時,系統(tǒng)會自動記錄此條信息;
當車輛在收貨點的圍欄范圍外,且之前系統(tǒng)有記錄此車進入收貨點的記錄,則判定此車駛出收貨點的圍欄,系統(tǒng)會自動記錄此條信息;
當系統(tǒng)記錄了車輛駛出收貨點的圍欄時間的數(shù)據時,此次監(jiān)聽程序結束;
步驟7:最后系統(tǒng)將車輛由發(fā)貨點出發(fā)到達收貨點的行駛軌跡,展示在地圖上。
2.如權利要求1所述的運單信息自動錄入和狀態(tài)自動同步的算法,其特征在于:在步驟S1中,車輛定位數(shù)據至少包括:車牌號、設備編號、車輛所在位置的經度和維度、車輛定位時間。
3.如權利要求1所述的運單信息自動錄入和狀態(tài)自動同步的算法,其特征在于:在步驟S2中,將車輛所在位置的經度、緯度轉化為地圖標準類型的經緯度的計算算法如下:
a、獲取車輛所在位置的經度、緯度;
b、根據經緯度偏移算法計算地圖標準類型的經緯度。
4.如權利要求1所述的運單信息自動錄入和狀態(tài)自動同步的算法,其特征在于:經緯度偏移算法包括以下步驟:
a、先將原始經緯度(lat、lon)進行緯度轉換:
轉換后緯度dLat=-100.0+2.0*(lon-105.0)+3.0*(lat-35.0)+0.2* (lat-35.0)*(lat-35.0)+0.1*(lon-105.0)*(lat-35.0)+0.2*Math.sqrt(Math.abs(lon-105.0))+(20.0*Math.sin(6.0*(lon-105.0)*pi)+20.0*Math.sin(2.0*(lon-105.0)*pi))*2.0/3.0+(20.0*Math.sin((lat-35.0)*pi)+40.0*Math.sin((lat-35.0)/3.0*pi))*2.0/3.0+(160.0*Math.sin((lat-35.0)/12.0*pi)+320*Math.sin((lat-35.0)*pi/30.0))*2.0/3.0;
其中,pi表示圓周率,a表示衛(wèi)星橢球坐標投影到平面地圖坐標系的投影因子,ee表示橢球的偏心率,lat原始緯度,lon原始經度;
b、將原始經緯度(lat、lon)進行經度轉換;
轉換后經度dLon=300.0+(lon-105.0)+2.0*(lat-35.0)+0.1*(lon-105.0)*(lon-105.0)+0.1*(lon-105.0)*(lat-35.0)+0.1*Math.sqrt(Math.abs(lon-105.0))+(20.0*Math.sin(6.0*(lon-105.0)*pi)+20.0*Math.sin(2.0*(lon-105.0)*pi))*2.0/3.0+(20.0*Math.sin((lon-105.0)*pi)+40.0*Math.sin((lon-105.0)/3.0*pi))*2.0/3.0+(150.0*Math.sin((lon-105.0)/12.0*pi)+300.0*Math.sin((lon-105.0)/30.0*pi))*2.0/3.0;
c、再轉換成GCJ經緯度;
GCJ緯度gLat=(dLat*180.0)/((a*(1-ee))/(magic*sqrtMagic)*pi);
GCJ經度gLon=(dLon*180.0)/(a/sqrtMagic*Math.cos(radLat)*pi);
d、最后將GCJ經緯度轉換為地圖標準類型的經緯度;
地圖標準類型的經度bd_lon=z*Math.cos(theta)+0.0065;
地圖標準類型的緯度bd_lat=z*Math.sin(theta)+0.006;
其中,theta=Math.atan2(gLat,gLon)+0.000003*Math.cos(gLon*x_pi);
z=Math.sqrt(gLon*gLon+gLat*gLat)+0.00002*Math.sin(gLat*x_pi);
x_pi表示圓周率轉換量。
5.如權利要求1所述的運單信息自動錄入和狀態(tài)自動同步的算法,其特征在于:在步驟S3中,計算車輛所在位置與路線設置中所設置的發(fā)貨點的之間距離的算法公式如下:
距離distance=Math.round(s*10000)/10000;
其中,
s=2*Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2)+Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)))*EARTH_RADIUS;
r表示地球赤道半徑,pi表示圓周率,EARTH_RADIUS表示赤道半徑;lat1表示為發(fā)貨點的緯度,lat2車輛所在位置的緯度;
經緯度轉換為弧度rad=經度(緯度)*Math.PI/180.0;
基于googleMap算法,計算得到兩點之間的距離a=rad(lat1)-rad(lat2)。
6.如權利要求1所述的運單信息自動錄入和狀態(tài)自動同步的算法,其特征在于:在步驟S4中,通過車輛所在位置與路線設置中所設置的發(fā)貨點的之間距離distance和發(fā)貨點的圍欄的半徑Ra之間的關系來計算車輛是否在發(fā)貨點的圍欄內;
如果distance大于Ra,則車輛在發(fā)貨點的圍欄范圍外;
如果distance小于等于Ra,則車輛在發(fā)貨點的圍欄內。
7.如權利要求1所述的運單信息自動錄入和狀態(tài)自動同步的算法,其特征在于:在步驟S5中,通過車輛所在位置與路線設置中所設置的收貨點的之間距離distance和收貨點的圍欄的半徑Ra之間的關系來計算車輛是否在收貨點的圍欄內;
如果distance大于Ra,則車輛在收貨點的圍欄范圍外;并查詢這條路線有無該車輛進入收貨點的圍欄的記錄,如果有記錄,代表此時該車輛已經駛出收貨點的圍欄,如果沒有記錄,則該車輛并沒有進入到收貨點的圍欄內;
如果distance小于等于Ra,則車輛在收貨點的圍欄內。
8.如權利要求7所述的運單信息自動錄入和狀態(tài)自動同步的算法,其特征在于:當車輛在收貨點的圍欄內時,則執(zhí)行以下操作:
a、查詢這條路線有無這輛車駛出發(fā)貨點的圍欄的記錄,如果有記錄,代表此車是已經駛出發(fā)貨點的圍欄并且首次進入收貨點的圍欄;
b、如果是首次進入收貨點的圍欄,則自動新增一條數(shù)據,記錄相關信息,并推送信息。