本发明涉及计算机领域,尤其是涉及一种判定共享电单车与服务区相对位置的方法。
背景技术:
用户在服务区边界开车,往服务区内骑,也会判定即将驶出服务区。容易产生误报,或当用户贴着服务区边界行驶时,容易出现频繁判断服务区问题。
技术实现要素:
本发明的上述技术问题主要是通过下述技术方案得以解决的:
一种判定共享电单车与服务区相对位置的方法,其特征在于,判断单车是否正在驶入或驶出服务区,包括:
步骤1、判断电单车是否在行驶,若在则进行步骤2,若不在,重复本步骤直至单车在边界行驶;
步骤2、判断电单车在边界是向内或向外或沿着边界行驶;
步骤3、根据判断的当前电单车行驶动作进行对应的执行动作。
在上述的一种判定共享电单车与服务区相对位置的方法,所述步骤1的具体方法是:根据当点电单车自身gps点生成一个矩形缓冲区,若矩形缓冲区与服务区边界线相交形成一个多边形,则当前电单车在边界行驶,若没有相交,则不在边界行驶。
在上述的一种判定共享电单车与服务区相对位置的方法,所述矩形缓冲区为一个矩形,所述矩形的长为l,宽为h,缓冲区的四个方位角的点分别是b1、b2、b3、b4,则能够根据gps信息获得四个方位角的点的经纬度坐标。
在上述的一种判定共享电单车与服务区相对位置的方法,判定电单车在边界是向内或向外或沿着边界行驶的具体方法是:
若矩形缓冲区与边界相交的面积在变化,且变化率超过设定值,则判定当前电单车正在向内或向外行驶;
若矩形缓冲区与边界相交的面积在变化,且变化率在设定时间内没有超过设定值,则判定当前电单车正在沿着边界行驶。
在上述的一种判定共享电单车与服务区相对位置的方法,判定当前电单车正在向内或向外行驶的具体步骤是:
若矩形缓冲区与边界相交的面积在变化,且相交形成的多边形面积由小变大,则判定为正在向内行驶;
若矩形缓冲区与边界相交的面积在变化,且相交形成的多边形面积由大变小,则判定为正在向外行驶。
在上述的一种判定共享电单车与服务区相对位置的方法,判定当前电单车正在沿着边界行驶后,需要判定当前电单车是在服务区内还是在服务区外沿着边界行驶具体步骤是:
条件1,若矩形缓冲区,与服务区边界线相交形成的多边形重合至少大于大于车辆生成矩形缓存区的10%;
条件2,保持条件1至少30秒以上。
在上述的一种判定共享电单车与服务区相对位置的方法,步骤2中,相交形成的多边形面积为缓冲区与服务区边界线相交的点与b2、b3组成的多边形面积。
在上述的一种判定共享电单车与服务区相对位置的方法,设定多边形面积为q1,缓冲区面积为q2,监控时间为t,变化率p=(q2-q1)/q2;则判定是否出即将驶出服务区的具体方法是:
若p为1,则判定电单车未驶出服务区;
若p<1,>=0.9,则判定电单车即将驶出服务区。
因此,本发明具有如下优点:在共享电动车服务区边界向内骑行时,不会产生误报;在用户沿着边线骑行时,不会产生频繁提示出服务区及断电操作。
附图说明
附图1是本发明的实施例电单车即将驶出服务区的示意图。
附图2是本发明的实施例电单车未驶出服务区的示意图。
附图3是本发明的实施例实施例电单车未驶出服务区的示意图。
附图4是本发明的实施例缓冲区的示意图。
附图5是本发明的方法流程示意图。
具体实施方式
下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。
实施例:
如图1所示,朝服务区外行驶车辆,根据车辆自身gps点生成朝向角的缓冲区。判断生成矩形与服务区多边形相交面积。
如图4所示通过设备方位角计算可以得到b,已知绘制矩形,可以得到其余4点方位角,矩形缓冲区为一个矩形,所述矩形的长为l,宽为h,缓冲区的四个方位角的点分别是b1、b2、b3、b4,则能够根据gps信息获得四个方位角的点的经纬度坐标,如下所示。
publicclasslonlat{
/*
大地坐标系资料wgs-84长半径a=6378137短半径b=6356752.3142扁率f=1/298.2572236
*/
/**长半径a=6378137*/
privatedoublea=6378137;
/**短半径b=6356752.3142*/
privatedoubleb=6356752.3142;
/**扁率f=1/298.2572236*/
privatedoublef=1/298.2572236;
/**
计算另一点经纬度
*
@paramlon
经度
@paramlat
维度
@paramlonlat
已知点经纬度
@parambrng
方位角
@paramdist
距离(米)
*/
publicvoidcomputerthatlonlat(doublelon,doublelat,doublebrng,doubledist){
doublealpha1=rad(brng);
doublesinalpha1=math.sin(alpha1);
doublecosalpha1=math.cos(alpha1);
doubletanu1=(1-f)*math.tan(rad(lat));
doublecosu1=1/math.sqrt((1 tanu1*tanu1));
doublesinu1=tanu1*cosu1;
doublesigma1=math.atan2(tanu1,cosalpha1);
doublesinalpha=cosu1*sinalpha1;
doublecossqalpha=1-sinalpha*sinalpha;
doubleusq=cossqalpha*(a*a-b*b)/(b*b);
doublea=1 usq/16384*(4096 usq*(-768 usq*(320-175*usq)));
doubleb=usq/1024*(256 usq*(-128 usq*(74-47*usq)));
doublecos2sigmam=0;
doublesinsigma=0;
doublecossigma=0;
doublesigma=dist/(b*a),sigmap=2*math.pi;
while(math.abs(sigma-sigmap)>1e-12){
cos2sigmam=math.cos(2*sigma1 sigma);
sinsigma=math.sin(sigma);
cossigma=math.cos(sigma);
doubledeltasigma=b*sinsigma*(cos2sigmam b/4*(cossigma*(-1 2*cos2sigmam*cos2sigmam)
b/6*cos2sigmam*(-3 4*sinsigma*sinsigma)*(-3 4*cos2sigmam*cos2sigmam)));
sigmap=sigma;
sigma=dist/(b*a) deltasigma;
}
doubletmp=sinu1*sinsigma-cosu1*cossigma*cosalpha1;
doublelat2=math.atan2(sinu1*cossigma cosu1*sinsigma*cosalpha1,
(1-f)*math.sqrt(sinalpha*sinalpha tmp*tmp));
doublelambda=math.atan2(sinsigma*sinalpha1,cosu1*cossigma-sinu1*sinsigma*cosalpha1);
doublec=f/16*cossqalpha*(4 f*(4-3*cossqalpha));
doublel=lambda-(1-c)*f*sinalpha
(sigma c*sinsigma*(cos2sigmam c*cossigma*(-1 2*cos2sigmam*cos2sigmam)));
doublerevaz=math.atan2(sinalpha,-tmp);//finalbearing
system.out.println(revaz);
system.out.println(lon deg(l) "," deg(lat2));
}
/**
度换成弧度
*
@paramd
度
@return弧度
*/
privatedoublerad(doubled){
returnd*math.pi/180.0;
}
/**
弧度换成度
*
@paramx
弧度
@return度
*/
privatedoubledeg(doublex){
returnx*180/math.pi;
}
publicstaticvoidmain(string[]args){
lonlatlonlat=newlonlat();
doublelon=121.62486;
doublelat=29.87816;
doublebrng=90;
doubledist=50;
lonlat.computerthatlonlat(lon,lat,brng,dist);
}
然后如图1-3所示,进行判断,包括判断单车是否正在驶入或驶出服务区,具体是:
步骤1、判断电单车是否在行驶,若在则进行步骤2,若不在,重复本步骤直至单车在边界行驶,具体方法是:根据当点电单车自身gps点生成一个矩形缓冲区,若矩形缓冲区与服务区边界线相交形成一个多边形,则当前电单车在边界行驶,若没有相交,则不在边界行驶。
步骤2、判断电单车在边界是向内或向外或沿着边界行驶,具体方法是:
1、若矩形缓冲区与边界相交的面积在变化,且变化率超过设定值,则判定当前电单车正在向内或向外行驶,然后判定当前电单车正在向内或向外行驶,具体步骤是:
若矩形缓冲区与边界相交的面积在变化,且相交形成的多边形面积由小变大,则判定为正在向内行驶;
若矩形缓冲区与边界相交的面积在变化,且相交形成的多边形面积由大变小,则判定为正在向外行驶。
2、若矩形缓冲区与边界相交的面积在变化,且变化率在设定时间内没有超过设定值,则判定当前电单车正在沿着边界行驶,判定当前电单车正在沿着边界行驶后,需要判定当前电单车是在服务区内还是在服务区外沿着边界行驶具体步骤是:
条件1,若矩形缓冲区,与服务区边界线相交形成的多边形重合至少大于大于车辆生成矩形缓存区的10%;
条件2,保持条件1至少30秒以上。
本步骤中,相交形成的多边形面积为缓冲区与服务区边界线相交的点与b2、b3组成的多边形面积。
在上述的一种判定共享电单车与服务区相对位置的方法,设定多边形面积为q1,缓冲区面积为q2,监控时间为t,变化率p=(q2-q1)/q2;则判定是否出即将驶出服务区的具体方法是:
若p为1,则判定电单车未驶出服务区;
若p<1,>=0.9,则判定电单车即将驶出服务区。
步骤3、根据判断的当前电单车行驶动作进行对应的执行动作。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
本文用于企业家、创业者技术爱好者查询,结果仅供参考。