多层扫描时序空间轨迹面积的获取方法转让专利

申请号 : CN201710942119.4

文献号 : CN107843228B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 冯大春黄家怿孟祥宝谢秋波

申请人 : 广州市健坤网络科技发展有限公司广东省现代农业装备研究所

摘要 :

本发明公开了一种多层扫描时序空间轨迹面积的获取方法,包括:对农机作业轨迹上运行轨迹点进行高斯‑克吕格投影;获取运行轨迹点坐标的第一外接矩形;针对每相邻的两个运行轨迹点的坐标,分别生成线缓冲区;扫描每个线缓冲区并栅格化,计算每个线缓冲区所覆盖的栅格面积之和,得到第一作业面积;再次扫描每个线缓冲区,对每个线缓冲区中未完全覆盖的栅格重新栅格化,计算每个线缓冲区所覆盖的栅格的面积之和,得到第二作业面积;第二作业面积与第一作业面积的差值的绝对值小于设定误差阈值时,将第二作业面积作为农机的实际作业面积。本发明具有算法实现简单、时间复杂度和空间复杂度较低、能满足不同计算精度的需求、适应于在线并发计算需求。

权利要求 :

1.一种多层扫描时序空间轨迹面积的获取方法,其特征在于,包括如下步骤:

A)对连续运行的农机作业轨迹上所有的运行轨迹点在高斯平面直角坐标系进行高斯-克吕格投影,得到每个所述运行轨迹点在所述高斯平面直角坐标系下的坐标;

B)获取所述运行轨迹点在所述高斯平面直角坐标系下的坐标的第一外接矩形,并得到所述第一外接矩形的最左下角坐标Go(xo,yo)和最右上角坐标Ge(xe,ye);xo为所述第一外接矩形的最左下角的横坐标,yo为所述第一外接矩形的最左下角的纵坐标,xe为所述第一外接矩形的最右上角的横坐标,ye为所述第一外接矩形的最右上角的纵坐标;

C)针对所述农机作业轨迹中在时序上每相邻的两个运行轨迹点的坐标,分别生成对应的线缓冲区;

D)扫描每个所述线缓冲区对其进行栅格化,计算每个所述线缓冲区所覆盖的栅格的面积之和,得到农机的第一作业面积;

E)再次扫描每个所述线缓冲区,对每个所述线缓冲区中未完全覆盖的栅格重新进行栅格化,缩小其栅格大小,重新计算每个所述线缓冲区所覆盖的栅格的面积之和,得到所述农机的第二作业面积;

F)判断所述农机的第二作业面积与所述农机的第一作业面积的差值的绝对值是否小于设定误差阈值,如是,将所述农机的第二作业面积作为所述农机的实际作业面积;否则,返回步骤E);

所述步骤A)进一步包括:

A1)设连续运行的农机作业轨迹包含n个运行轨迹点P1,P2,......,Pn,所述运行轨迹点Pi的经纬度坐标为Pi(L,B),其中,L表示经度,B表示纬度,i=1,2,...,n,n为大于0的整数;

A2)将所有的所述运行轨迹点在所述高斯平面直角坐标系中进行高斯-克吕格投影,得到所述运行轨迹点在所述高斯平面直角坐标系下的坐标P′i(x,y),其中,x为高斯平面直角坐标横坐标,y为高斯平面直角坐标纵坐标,i=1,2,...,n;

所述步骤C)进一步包括:

C1)按照时间顺序依次将相邻的两个所述运行轨迹点分别连接生成多个线段Li,其中,i=1,2,...,n-1;

C2)分别对每个所述线段Li采用折线凸角圆弧生成法生成对应的线缓冲区Bi,所述线缓冲区Bi的起点采用平头拟合,终止点采用半圆拟合,所述线缓冲区Bi的半径为农机的作业宽度W的1/2;

C3)将所述线缓冲区Bi的四个顶点连接起来形成封闭缓冲区域lvi1-vi2lvi2-vi3avi3-vi4lvi4-vi1,其中,vi1、vi2、vi3和vi4为分别线缓冲区Bi的第一顶点、第二顶点、第三顶点和第四顶点,lvi1-vi2表示第一顶点vi1至第二顶点vi2的直线段,lvi2-vi3表示第二顶点vi2至第三顶点vi3的直线段,avi3-vi4表示第三顶点vi3至第四顶点vi4的弧段,lvi4-vi1表示第四顶点vi4至第一顶点vi1的弧段;

所述步骤D)进一步包括:

D1)获取所述第一外接矩形的长度与宽度,初始化二维数组Array[row,col]=0,所述二维数组Array[row,col]中的每个数组单元对应运行轨迹点所覆盖区域的栅格,其中,row=|xe-xo|*c/W+1,col=|ye-yo|*c/W+1,row为行,col为列,c为农机作业宽度所覆盖的栅格数,W为农机的作业宽度,xo为所述第一外接矩形的最左下角的横坐标,yo为所述第一外接矩形的最左下角的纵坐标,xe为所述第一外接矩形的最右上角的横坐标,ye为所述第一外接矩形的最右上角的纵坐标;

D2)获取所述线缓冲区Bi的第二外接矩形,得到所述第二外接矩形的最左下角坐标Gio(xio,yio)和最右上角坐标Gie(xie,yie);xio为所述第二外接矩形的最左下角的横坐标,yio为所述第二外接矩形的最左下角的纵坐标,xie为所述第二外接矩形的最右下角的横坐标,yie为所述第二外接矩形的最右下角的纵坐标;

D3)确定所述线缓冲区Bi所覆盖的栅格,即子数组 其中,

0≤rio≤k≤rie≤row,

xio为所述第二外接矩形的最左下角的横坐标,yio为所述第二外接矩形的最

左下角的纵坐标,xie为所述第二外接矩形的最右下角的横坐标,yie为所述第二外接矩形的最右下角的纵坐标;

D4)对所述线缓冲区Bi所覆盖的栅格,即子数组Array[k,j]对应的栅格,采用射线法依次判断所述子数组Array[k,j]对应的每个栅格的四个顶点是否在所述线缓冲区Bi的内部,如果所述子数组Array[k,j]对应的当前栅格Cellkj的四个顶点都在所述线缓冲区Bi的内部,则令所述子数组Array[k,j]中对应所述当前栅格Cellkj的数组元素值为1;如果所述子数组Array[k,j]对应的当前栅格Cellkj的四个顶点都不在所述线缓冲区Bi的内部,令所述子数组Array[k,j]中对应所述当前栅格Cellkj的数组元素值为0;如果所述子数组Array[k,j]对应的当前栅格Cellkj的四个顶点中有一个、两个或三个在所述线缓冲区Bi的内部,令所述子数组Array[k,j]中对应所述当前栅格Cellkj的数组元素值为0.5;

D5)计算所有运行轨迹点所对应栅格的面积之和,即所述农机的第一作业面积

其中,Ainc为所述农机的第一作业面积,inc为扫描次

数,inc=0。

2.根据权利要求1所述的多层扫描时序空间轨迹面积的获取方法,其特征在于,所述步骤E)进一步包括:E1)令所述扫描次数inc递增1,从所述线缓冲区Bi所覆盖的栅格中找到符合0

E2)针对所述栅格数组ArrayT[kt,jt]对应的栅格,采用射线法依次判断所述栅格数组ArrayT[kt,jt]对应的每个栅格的四个顶点是否在所述线缓冲区Bi的内部,如果所述栅格数组ArrayT[kt,jt]对应的当前栅格Cellkjt的四个顶点都在所述线缓冲区Bi的内部,则令所述栅格数组ArrayT[kt,jt]中对应所述当前栅格Cellkjt的数组元素值为1;如果所述栅格数组ArrayT[kt,jt]对应的当前栅格Cellkjt的四个顶点都不在所述线缓冲区Bi的内部,令所述栅格数组ArrayT[kt,jt]中对应所述当前栅格Cellkjt的数组元素值为0;如果所述栅格数组ArrayT[kt,jt]对应的当前栅格Cellkjt的四个顶点中有一个、两个或三个在所述线缓冲区Bi的内部,令所述栅格数组ArrayT[kt,jt]中对应所述当前栅格Cellkjt的数组元素值为0.5;

E3)计算所述栅格数组ArrayT[kt,jt]对应的当前栅格Cellkjt的面积

并将所述Sk,j赋值给所述子数组Array[k,

j],Sk,j为当前栅格的面积;

E4)计算所有运行轨迹点所对应的栅格面积之和,即所述农机的第二作业面积

Ainc+1为所述农机的第二作业面积。

3.根据权利要求1或2所述的多层扫描时序空间轨迹面积的获取方法,其特征在于,所述c取值为W*2。

说明书 :

多层扫描时序空间轨迹面积的获取方法

技术领域

[0001] 本发明涉及农机作业领域,特别涉及一种多层扫描时序空间轨迹面积的获取方法。

背景技术

[0002] 随着“互联网+”带动传统农业升级,在智能硬件驱动下,为传统农业机械配备基于GPS/北斗的集定位、作业统计、作业监控为主要功能的智能硬件终端,以提升农业机械化领域智能化、信息化已成为大势所趋。而其中,以农机空间作业轨迹为基础,计算农机作业面积又为核心功能需求。当前,基于空间作业轨迹的算法主要有距离法、矢量缓冲区算法和栅格缓冲区算法等。距离法采用距离测量算法,即已知农机的作业幅宽为M,计算农机行走的轨迹长度乘以作业幅宽即得到实际作业面积,算法较为简单,计算效率高,内存占用少,但不适用农机有重叠作业的计算。矢量缓冲区算法主要采用基于线实体的缓冲区方法,其借鉴GIS中的缓冲区分析功能,对农机作业时的轨迹进行动态地缓冲区生成,并计算其实时面积。矢量方法计算精度较高,内存占用少,但原理复杂,不易实现,特别随着作业轨迹点的增多,运算量急剧增长,这样将会降低计算效率,难以满足实时并发计算需求。综上所述,无论哪种方法,在使用上都有一定的局限性。

发明内容

[0003] 本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种具有算法实现简单、时间复杂度和空间复杂度较低、能满足不同计算精度的需求、适应于在线并发计算需求的多层扫描时序空间轨迹面积的获取方法。
[0004] 本发明解决其技术问题所采用的技术方案是:构造一种多层扫描时序空间轨迹面积的获取方法,包括如下步骤:
[0005] A)对连续运行的农机作业轨迹上所有的运行轨迹点在高斯平面直角坐标系进行高斯-克吕格投影,得到每个所述运行轨迹点在所述高斯平面直角坐标系下的坐标;
[0006] B)获取所述运行轨迹点在所述高斯平面直角坐标系下的坐标的第一外接矩形,并得到所述第一外接矩形的最左下角坐标Go(xo,yo)和最右上角坐标Ge(xe,ye);xo为所述第一外接矩形的最左下角的横坐标,yo为所述第一外接矩形的最左下角的纵坐标,xe为所述第一外接矩形的最右上角的横坐标,ye为所述第一外接矩形的最右上角的纵坐标;
[0007] C)针对所述农机作业轨迹中在时序上每相邻的两个运行轨迹点的坐标,分别生成对应的线缓冲区;
[0008] D)扫描每个所述线缓冲区对其进行栅格化,计算每个所述线缓冲区所覆盖的栅格的面积之和,得到农机的第一作业面积;
[0009] E)再次扫描每个所述线缓冲区,对每个所述线缓冲区中未完全覆盖的栅格重新进行栅格化,缩小其栅格大小,重新计算每个所述线缓冲区所覆盖的栅格的面积之和,得到所述农机的第二作业面积;
[0010] F)判断所述农机的第二作业面积与所述农机的第一作业面积的差值的绝对值是否小于设定误差阈值,如是,将所述农机的第二作业面积作为所述农机的实际作业面积;否则,返回步骤E)。
[0011] 在本发明所述的多层扫描时序空间轨迹面积的获取方法中,所述步骤A)进一步包括:
[0012] A1)设连续运行的农机作业轨迹包含n个运行轨迹点P1,P2,......,Pn,所述运行轨迹点Pi的经纬度坐标为Pi(L,B),其中,L表示经度,B表示纬度,i=1,2,...,n,n为大于0的整数;
[0013] A2)将所有的所述运行轨迹点在所述高斯平面直角坐标系中进行高斯-克吕格投影,得到所述运行轨迹点在所述高斯平面直角坐标系下的坐标P′i(x,y),其中,x为高斯平面直角坐标横坐标,y为高斯平面直角坐标纵坐标,i=1,2,...,n。
[0014] 在本发明所述的多层扫描时序空间轨迹面积的获取方法中,所述步骤C)进一步包括:
[0015] C1)按照时间顺序依次将相邻的两个所述运行轨迹点分别连接生成多个线段Li,其中,i=1,2,...,n-1;
[0016] C2)分别对每个所述线段Li采用折线凸角圆弧生成法生成对应的线缓冲区Bi,所述线缓冲区Bi的起点采用平头拟合,终止点采用半圆拟合,所述线缓冲区Bi的半径为农机的作业宽度W的1/2;
[0017] C3)将所述线缓冲区Bi的四个顶点连接起来形成封闭缓冲区域lvi1-vi2lvi2-vi3avi3-vi4lvi4-vi1,其中,vi1、vi2、vi3和vi4为分别线缓冲区Bi的第一顶点、第二顶点、第三顶点和第四顶点,lvi1-vi2表示第一顶点vi1至第二顶点vi2的直线段,lvi2-vi3表示第二顶点vi2至第三顶点vi3的直线段,avi3-vi4表示第三顶点vi3至第四顶点vi4的弧段,lvi4-vi1表示第四顶点vi4至第一顶点vi1的弧段。
[0018] 在本发明所述的多层扫描时序空间轨迹面积的获取方法中,所述步骤D)进一步包括:
[0019] D1)获取所述第一外接矩形的长度与宽度,初始化二维数组Array[row,col]=0,所述二维数组Array[row,col]中的每个数组单元对应运行轨迹点所覆盖区域的栅格,其中,row=|xe-xo|*c/W+1,col=|ye-yo|*c/W+1,row为行,col为列,c为农机作业宽度所覆盖的栅格数,W为农机的作业宽度,xo为所述第一外接矩形的最左下角的横坐标,yo为所述第一外接矩形的最左下角的纵坐标,xe为所述第一外接矩形的最右上角的横坐标,ye为所述第一外接矩形的最右上角的纵坐标;
[0020] D2)获取所述线缓冲区Bi的第二外接矩形,得到所述第二外接矩形的最左下角坐标Gio(xio,yio)和最右上角坐标Gie(xie,yie);xio为所述第二外接矩形的最左下角的横坐标,yio为所述第二外接矩形的最左下角的纵坐标,xie为所述第二外接矩形的最右下角的横坐标,yie为所述第二外接矩形的最右下角的纵坐标;
[0021] D3)确定所述线缓冲区Bi所覆盖的栅格,即子数组其中,0≤rio≤k≤rie≤row, 0≤cio≤j≤cie≤col,
xio为所述第二外接矩形的最左下角的横坐标,yio为所述第二
外接矩形的最左下角的纵坐标,xie为所述第二外接矩形的最右下角的横坐标,yie为所述第二外接矩形的最右下角的纵坐标;
[0022] D4)对所述线缓冲区Bi所覆盖的栅格,即子数组Array[k,j]对应的栅格,采用射线法依次判断所述子数组Array[k,j]对应的每个栅格的四个顶点是否在所述线缓冲区Bi的内部,如果所述子数组Array[k,j]对应的当前栅格Cellkj的四个顶点都在所述线缓冲区Bi的内部,则令所述子数组Array[k,j]中对应所述当前栅格Cellkj的数组元素值为1;如果所述子数组Array[k,j]对应的当前栅格Cellkj的四个顶点都不在所述线缓冲区Bi的内部,令所述子数组Array[k,j]中对应所述当前栅格Cellkj的数组元素值为0;如果所述子数组Array[k,j]对应的当前栅格Cellkj的四个顶点中有一个、两个或三个在所述线缓冲区Bi的内部,令所述子数组Array[k,j]中对应所述当前栅格Cellkj的数组元素值为0.5;
[0023] D5)计算所有运行轨迹点所对应栅格的面积之和,即所述农机的第一作业面积其中,Ainc为所述农机的第一作业面积,inc为扫描次数,inc=0。
[0024] 在本发明所述的多层扫描时序空间轨迹面积的获取方法中,所述步骤E)进一步包括:
[0025] E1)令所述扫描次数inc递增1,从所述线缓冲区Bi所覆盖的栅格中找到符合0
[0026] E2)针对所述栅格数组ArrayT[kt,jt]对应的栅格,采用射线法依次判断所述栅格数组ArrayT[kt,jt]对应的每个栅格的四个顶点是否在所述线缓冲区Bi的内部,如果所述栅格数组ArrayT[kt,jt]对应的当前栅格Cellkjt的四个顶点都在所述线缓冲区Bi的内部,则令所述栅格数组ArrayT[kt,jt]中对应所述当前栅格Cellkjt的数组元素值为1;如果所述栅格数组ArrayT[kt,jt]对应的当前栅格Cellkjt的四个顶点都不在所述线缓冲区Bi的内部,令所述栅格数组ArrayT[kt,jt]中对应所述当前栅格Cellkjt的数组元素值为0;如果所述栅格数组ArrayT[kt,jt]对应的当前栅格Cellkjt的四个顶点中有一个、两个或三个在所述线缓冲区Bi的内部,令所述栅格数组ArrayT[kt,jt]中对应所述当前栅格Cellkjt的数组元素值为0.5;
[0027] E3)计算所述栅格数组ArrayT[kt,jt]对应的当前栅格Cellkjt的面积并将所述Sk,j赋值给所述子数组Array
[k,j],Sk,j为当前栅格的面积;
[0028] E4)计算所有运行轨迹点所对应的栅格面积之和,即所述农机的第二作业面积Ainc+1为所述农机的第二作业面积。
[0029] 在本发明所述的多层扫描时序空间轨迹面积的获取方法中,所述c取值为W*2。
[0030] 实施本发明的多层扫描时序空间轨迹面积的获取方法,具有以下有益效果:由于对运行轨迹点进行高斯-克吕格投影,得到每个运行轨迹点在高斯平面直角坐标系下的坐标;获取运行轨迹点在高斯平面直角坐标系下的坐标的第一外接矩形;针对农机作业轨迹中在时序上每相邻的两个运行轨迹点的坐标,分别生成对应的线缓冲区;扫描每个线缓冲区对其进行栅格化,计算每个线缓冲区所覆盖的栅格的面积之和,得到农机的第一作业面积;再次扫描每个线缓冲区,对每个线缓冲区中未完全覆盖的栅格重新进行栅格化,缩小其栅格大小,重新计算每个线缓冲区所覆盖的栅格的面积之和,得到农机的第二作业面积;当农机的第二作业面积与农机的第一作业面积的差值的绝对值小于设定误差阈值时,将农机的第二作业面积作为农机的实际作业面积,其无需进行线缓冲区合并计算,可以适用于轨迹交叉、叠置等特殊情况下面积统计,能根据应用精度要求进行不同次数扫描,因此本发明具有算法实现简单、时间复杂度和空间复杂度较低、能满足不同计算精度的需求、适应于在线并发计算需求。

附图说明

[0031] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0032] 图1为本发明多层扫描时序空间轨迹面积的获取方法一个实施例中的流程图;
[0033] 图2为所述实施例中对连续运行的农机作业轨迹上所有的运行轨迹点在高斯平面直角坐标系进行高斯-克吕格投影,得到每个运行轨迹点在高斯平面直角坐标系下的坐标的具体流程图;
[0034] 图3为所述实施例中针对农机作业轨迹中在时序上每相邻的两个运行轨迹点的坐标,分别生成对应的线缓冲区的具体流程图;
[0035] 图4为所述实施例中线缓冲区Bi的示意图;
[0036] 图5为所述实施例中计算农机的第一作业面积的具体流程图;
[0037] 图6为所述实施例中计算农机的第二作业面积的具体流程图。

具体实施方式

[0038] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0039] 在本发明多层扫描时序空间轨迹面积的获取方法实施例中,其多层扫描时序空间轨迹面积的获取方法的结构示意图如图1所示。图1中,该多层扫描时序空间轨迹面积的获取方法包括如下步骤:
[0040] 步骤S01对连续运行的农机作业轨迹上所有的运行轨迹点在高斯平面直角坐标系进行高斯-克吕格投影,得到每个运行轨迹点在高斯平面直角坐标系下的坐标:本步骤中,对连续运行的农机作业轨迹上所有的运行轨迹点在高斯平面直角坐标系进行高斯-克吕格投影,并进行坐标转换,得到每个运行轨迹点在高斯平面直角坐标系下的坐标。
[0041] 步骤S02获取运行轨迹点在高斯平面直角坐标系下的坐标的第一外接矩形,并得到第一外接矩形的最左下角坐标Go(xo,yo)和最右上角坐标Ge(xe,ye):本步骤中,获取运行轨迹点在高斯平面直角坐标系下的坐标的第一外接矩形,并得到第一外接矩形的最左下角坐标Go(xo,yo)和最右上角坐标Ge(xe,ye),xo为第一外接矩形的最左下角的横坐标,yo为第一外接矩形的最左下角的纵坐标,xe为第一外接矩形的最右上角的横坐标,ye为第一外接矩形的最右上角的纵坐标。
[0042] 步骤S03针对农机作业轨迹中在时序上每相邻的两个运行轨迹点的坐标,分别生成对应的线缓冲区:本步骤中,针对农机作业轨迹中在时序上每相邻的两个运行轨迹点的坐标,分别生成对应的线缓冲区。
[0043] 步骤S04扫描每个线缓冲区对其进行栅格化,计算每个线缓冲区所覆盖的栅格的面积之和,得到农机的第一作业面积:本步骤中,扫描每个线缓冲区对其进行栅格化,计算每个线缓冲区所覆盖的栅格的面积之和,得到农机的第一作业面积Ainc。
[0044] 步骤S05再次扫描每个线缓冲区,对每个线缓冲区中未完全覆盖的栅格重新进行栅格化,缩小其栅格大小,重新计算每个线缓冲区所覆盖的栅格的面积之和,得到农机的第二作业面积:本步骤中,再次扫描每个线缓冲区,对每个线缓冲区中未完全覆盖的栅格(一般是位于线缓冲区边缘位置的栅格)重新进行栅格化,缩小其栅格大小,重新计算每个线缓冲区所覆盖的栅格的面积之和,得到农机的第二作业面积Ainc+1。
[0045] 步骤S06判断农机的第二作业面积与农机的第一作业面积的差值的绝对值是否小于设定误差阈值:本步骤中,判断农机的第二作业面积与农机的第一作业面积的差值的绝对值Δinc=|Ainc+1-Ainc|是否小于设定误差阈值,即判断Δinc<δ,如果判断的结果为是,则执行步骤S07;否则,返回步骤S05。
[0046] 步骤S07将农机的第二作业面积作为农机的实际作业面积:如果上述步骤S06的判断结果为是,则执行本步骤。本步骤中,将农机的第二作业面积Ainc+1作为农机的实际作业面积。本发明无需进行线缓冲区合并计算,可以适用于轨迹交叉、叠置等特殊情况下面积统计,能根据应用精度要求进行不同次数扫描,因此本发明具有算法实现简单、时间复杂度和空间复杂度较低、能满足不同计算精度的需求、适应于在线并发计算需求。
[0047] 对于本实施例而言,上述步骤S01还可进一步细化,其细化后的流程图如图2所示。图2中,上述步骤S01进一步包括:
[0048] 步骤S11设连续运行的农机作业轨迹包含n个运行轨迹点P1,P2,......,Pn,运行轨迹点Pi的经纬度坐标为Pi(L,B):本步骤中,设连续运行的农机作业轨迹包含n个运行轨迹点(即时序空间运行轨迹点),P1,P2,......,Pn,运行轨迹点Pi的经纬度坐标为Pi(L,B),其中,L表示经度,B表示纬度,i=1,2,...,n,n为大于0的整数。
[0049] 步骤S12将所有的运行轨迹点在高斯平面直角坐标系中进行高斯-克吕格投影,得到运行轨迹点在高斯平面直角坐标系下的坐标P′i(x,y):本步骤中,将所有的运行轨迹点在高斯平面直角坐标系中进行高斯-克吕格投影,得到运行轨迹点在高斯平面直角坐标系下的坐标P′i(x,y),其中,x为高斯平面直角坐标横坐标,y为高斯平面直角坐标纵坐标,i=1,2,...,n。
[0050] 对于本实施例而言,上述步骤S03还可进一步细化,其细化后的流程图如图3所示。图3中,上述步骤S03进一步包括:
[0051] 步骤S31按照时间顺序依次将相邻的两个运行轨迹点分别连接生成多个线段Li:本步骤中,按照时间顺序依次将相邻的两个运行轨迹点连接生成多个线段Li,i=1,2,...,n-1;即P′i与P′i+1连接生成线段Li,最终生成线段L1,L2,......,Ln-1。
[0052] 步骤S32分别对每个线段Li采用折线凸角圆弧生成法生成对应的线缓冲区Bi,线缓冲区Bi的起点采用平头拟合,终止点采用半圆拟合,线缓冲区Bi的半径为农机的作业宽度W的1/2:本步骤中,分别对每个线段Li(i=1,2,...,n-1)采用折线凸角圆弧生成法生成对应的线缓冲区Bi,线缓冲区Bi的起点采用平头拟合,终止点采用半圆拟合,线缓冲区Bi的半径为农机的作业宽度W的1/2。线缓冲区Bi的示意图如图4所示。
[0053] 步骤S33将线缓冲区Bi的四个顶点连接起来形成封闭缓冲区域lvi1-vi2lvi2-vi3avi3-vi4lvi4-vi1:本步骤中,将线缓冲区Bi的四个顶点之间用直线或弧线连接起来,形成封闭缓冲区域lvi1-vi2lvi2-vi3avi3-vi4lvi4-vi1,其中,vi1、vi2、vi3和vi4为分别线缓冲区Bi的第一顶点、第二顶点、第三顶点和第四顶点,lvi1-vi2表示第一顶点vi1至第二顶点vi2的直线段,lvi2-vi3表示第二顶点vi2至第三顶点vi3的直线段,avi3-vi4表示第三顶点vi3至第四顶点vi4的弧段,lvi4-vi1表示第四顶点vi4至第一顶点vi1的弧段。
[0054] 对于本实施例而言,上述步骤S04还可进一步细化,其细化后的流程图如图5所示。图5中,上述步骤S04进一步包括:
[0055] 步骤S41获取第一外接矩形的长度与宽度,初始化二维数组Array[row,col]=0,二维数组中的每个数组单元对应运行轨迹点所覆盖区域的栅格:本步骤中,获取第一外接矩形的长度与宽度,初始化二维数组Array[row,col]=0,二维数组中的每个数组单元对应运行轨迹点所覆盖区域的栅格,其中,row=|xe-xo|*c/W+1,col=|ye-yo|*c/W+1,row为行,col为列,c为农机作业宽度所覆盖的栅格数,W为农机的作业宽度,xo为第一外接矩形的最左下角的横坐标,yo为第一外接矩形的最左下角的纵坐标,xe为第一外接矩形的最右上角的横坐标,ye为第一外接矩形的最右上角的纵坐标。c取值优选为W*2。
[0056] 步骤S42获取线缓冲区Bi的第二外接矩形,得到第二外接矩形的最左下角坐标Gio(xio,yio)和最右上角坐标Gie(xie,yie):本步骤中,获取线缓冲区Bi的第二外接矩形,得到第二外接矩形的最左下角坐标Gio(xio,yio)和最右上角坐标Gie(xie,yie),xio为第二外接矩形的最左下角的横坐标,yio为第二外接矩形的最左下角的纵坐标,xie为第二外接矩形的最右下角的横坐标,yie为第二外接矩形的最右下角的纵坐标。
[0057] 步骤S43确定线缓冲区Bi所覆盖的栅格,即子数组本步骤中,确定线缓冲区Bi所覆盖的栅格,即子数组 其中,0
≤rio≤k≤rie≤row, 0≤cio≤j≤cie≤col,
xio为第二外接矩形的最左下角的横坐标,yio为第二外接矩形的最左下角的
纵坐标,xie为第二外接矩形的最右下角的横坐标,yie为第二外接矩形的最右下角的纵坐标。
[0058] 步骤S44对线缓冲区Bi所覆盖的栅格,即子数组Array[k,j]对应的栅格,采用射线法依次判断子数组Array[k,j]对应的每个栅格的四个顶点是否在线缓冲区Bi的内部,如果子数组Array[k,j]对应的当前栅格Cellkj的四个顶点都在线缓冲区Bi的内部,则令子数组Array[k,j]中对应当前栅格Cellkj的数组元素值为1;如果子数组Array[k,j]对应的当前栅格Cellkj的四个顶点都不在线缓冲区Bi的内部,令子数组Array[k,j]中对应当前栅格Cellkj的数组元素值为0;如果子数组Array[k,j]对应的当前栅格Cellkj的四个顶点中有一个、两个或三个在线缓冲区Bi的内部,令子数组Array[k,j]中对应当前栅格Cellkj的数组元素值为0.5:本步骤中,对线缓冲区Bi所覆盖的栅格,即子数组Array[k,j]对应的栅格,采用射线法依次判断子数组Array[k,j]对应的每个栅格的四个顶点(c1,c2,c3,c4)是否在线缓冲区Bi的内部,如果子数组Array[k,j]对应的当前栅格Cellkj的四个顶点都在线缓冲区Bi的内部,则令子数组Array[k,j]中对应当前栅格Cellkj的数组元素值为1;如果子数组Array[k,j]对应的当前栅格Cellkj的四个顶点都不在线缓冲区Bi的内部,令子数组Array[k,j]中对应当前栅格Cellkj的数组元素值为0;如果子数组Array[k,j]对应的当前栅格Cellkj的四个顶点中有一个、两个或三个在线缓冲区Bi的内部,令子数组Array[k,j]中对应当前栅格Cellkj的数组元素值为0.5。
[0059] 步骤S45计算所有运行轨迹点所对应栅格的面积之和,即农机的第一作业面积本步骤中,计算所有运行轨迹点所对应栅格的面积之和,即得到农机的第一作业面积 其中,Ainc为所述
农机的第一作业面积,inc为扫描次数,inc=0。
[0060] 对于本实施例而言,上述步骤S05还可进一步细化,其细化后的流程图如图6所示。图6中,上述步骤S05进一步包括:
[0061] 步骤S51令所扫描次数inc递增1,从线缓冲区Bi所覆盖的栅格中找到符合0
[0062] 步骤S52针对栅格数组ArrayT[kt,jt]对应的栅格,采用射线法依次判断栅格数组ArrayT[kt,jt]对应的每个栅格的四个顶点是否在线缓冲区Bi的内部,如果栅格数组ArrayT[kt,jt]对应的当前栅格Cellkjt的四个顶点都在线缓冲区Bi的内部,则令栅格数组ArrayT[kt,jt]中对应当前栅格Cellkjt的数组元素值为1;如果栅格数组ArrayT[kt,jt]对应的当前栅格Cellkjt的四个顶点都不在线缓冲区Bi的内部,令栅格数组ArrayT[kt,jt]中对应当前栅格Cellkjt的数组元素值为0;如果栅格数组ArrayT[kt,jt]对应的当前栅格Cellkjt的四个顶点中有一个、两个或三个在线缓冲区Bi的内部,令栅格数组ArrayT[kt,jt]中对应当前栅格Cellkjt的数组元素值为0.5:本步骤中,针对栅格数组ArrayT[kt,jt]对应的栅格,采用射线法依次判断栅格数组ArrayT[kt,jt]对应的每个栅格的四个顶点(c′1,c′2,c′3,c′4)是否在线缓冲区Bi的内部,如果栅格数组ArrayT[kt,jt]对应的当前栅格Cellkjt的四个顶点都在线缓冲区Bi的内部,则令栅格数组ArrayT[kt,jt]中对应当前栅格Cellkjt的数组元素值为1;如果栅格数组ArrayT[kt,jt]对应的当前栅格Cellkjt的四个顶点都不在线缓冲区Bi的内部,令栅格数组ArrayT[kt,jt]中对应当前栅格Cellkjt的数组元素值为0;如果栅格数组ArrayT[kt,jt]对应的当前栅格Cellkjt的四个顶点中有一个、两个或三个在线缓冲区Bi的内部,令栅格数组ArrayT[kt,jt]中对应当前栅格Cellkjt的数组元素值为0.5。
[0063] 步骤S53计算栅格数组ArrayT[kt,jt]对应的当前栅格Cellkjt的面积并将Sk,j赋值给子数组Array[k,j]:本步
骤中,计算栅格数组ArrayT[kt ,jt]对应的当前栅格Cellkjt的面积
并将Sk,j赋值给子数组Array[k,j],Sk,j为
当前栅格的面积。
[0064] 步骤S54计算所有运行轨迹点所对应的栅格面积之和,即农机的第二作业面积Ainc+1为农机的第二作业面积:本步骤中,计算所有运行轨迹点所对应的栅格面积之和,即农机的第二作业面积
Ainc+1为农机的第二作业面积。
[0065] 总之,本发明通过对轨迹点坐标进行高斯-克吕格投影及坐标转换、时序相邻的两个运行轨迹点的坐标生成线缓冲区、线缓冲区初始扫描,线缓冲区重复扫描等步骤。本发明无需进行线缓冲区合并计算,可以适用于轨迹交叉、叠置等特殊情况下面积统计,能根据应用精度要求进行不同次数扫描,因此本发明具有算法实现简单、时间复杂度和空间复杂度较低、能满足不同计算精度的需求、适应于在线并发计算需求。
[0066] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。