本发明涉及三维实景,具体涉及一种基于三维实景的挖填方计算方法、装置及可读介质。
背景技术:
1、计算填挖土方量与平衡填挖方是竖向规划的一项重要内容。尤其在山地市,需要充分利用自然地形,合理确定规划用地和道路的设计标高,减少土石方工程量,力求填挖方就近平衡,从而降低工程造价。
2、目前通常采用方网格方法或空间几何计算填挖方量,在autocad中使用方网格方法计算填挖方量,效率较低。填挖方计算结果要反馈到规划方案并调整标高,需要多次反复,才能确定合理的标高,传统方法费力费时。使用空间几何计算填挖方量,速度快、效率高,通过计算结果的反馈,能直观地辅助规划标高调整。但仍然存在以下缺陷:
3、1、计算大面积地块时,速度比较慢;
4、2、如果栅格密度比较高,在浏览器的地图上画出对应的栅格,在数量巨大的情况下会使浏览器发生卡顿。
技术实现思路
1、针对上述提到的技术问题。本技术的实施例的目的在于提出了一种基于三维实景的挖填方计算方法、装置及可读介质,来解决以上背景技术部分提到的技术问题。
2、第一方面,本发明提供了一种基于三维实景的挖填方计算方法,包括以下步骤:
3、s1,获取栅格文件并进行解析,得到以栅格形式绘制的地图,并获取栅格仿射变换参数gt数组;
4、s2,于地图上画一个面,获取对应的第一坐标点,根据第一坐标点和栅格仿射变换参数gt数组计算出地图上画的面的左上角lefttop点和右下角rightbottom点在栅格对应的行和列;
5、s3,根据地图上画的面的左上角lefttop点和右下角rightbottom点在栅格对应的行和列确定要搜索的栅格的范围,循环遍历栅格的范围,将每一个栅格的行和列转换为第二坐标点;
6、s4,将第二坐标点与地图上画的面进行比对,响应于确定第二坐标点在地图上画的面内,则根据第二坐标点对应栅格高度和设定海平高度确定挖填方式并计算得到挖填方。
7、作为优选,栅格仿射变换参数gt数组包括gt[0]、gt[1]、gt[2]、gt[3]、gt[4]和gt[5],gt[0]=原点x坐标,gt[1]=栅格每个格子的宽度,gt[2]=原点x坐标偏移值,gt[3]=原点z坐标,gt[4]=栅格每个格子的长度,gt[5]=原点y坐标偏移值。
8、作为优选,步骤s2具体包括:
9、s21,根据第一坐标点计算出地图上画的面在x轴的最大值和最小值以及在y轴的最大值和最小值;
10、s22,根据栅格仿射变换参数gt数组与地图上画的面在x轴的最大值xmax和最小值xmin以及在y轴的最大值ymax和最小值ymin分别计算出左上角lefttop点(xmin,ymin)和右下角rightbottom点(xmax,ymax)在栅格对应的行和列,计算公式如下:
11、行=((y-gt[3])*gt[1]-(x-gt[0])*gt[4])/(gt[5]*gt[1]-gt[2]*gt[4]);
12、列=(x-gt[0]-行*gt[2])/gt[1];
13、并对行和列进行向下取整。
14、作为优选,步骤s3中,栅格的范围包括开始行startrow、开始列startcol、结束行endrow和结束列endcol,其中,开始行startrow对应左上角lefttop点的xmin,开始列startcol对应右下角rightbottom点的ymax,结束行endrow对应右下角rightbottom点的xmax,结束列endcol对应左上角lefttop点的ymin。
15、作为优选,步骤s3中将每一个栅格的行和列转换为第二坐标点,具体采用以下公式:
16、val1=(gt[5]*gt[1]-gt[2]*gt[4]);
17、val2=col*val1+gt[3]*gt[1]-gt[0]*gt[4];
18、val3=row*gt[1]+gt[0];
19、x’=(1+gt[4]*gt[2]-gt[4]*gt[2])/val2*gt[2]+val3;
20、y’=(val2+x’*gt[4])/gt[1];
21、其中,row为每一个栅格的行,col为每一个栅格的列,第二坐标点为(x’,y’)。
22、作为优选,步骤s4中将第二坐标点与地图上画的面进行比对具体包括:
23、将第二坐标点(x’,y’)通过esri提供的java工具类com.esri.core.geometry的geometryengine.within(点(x’,y’),地图上画的面)方法进行比对,判断第二坐标点(x’,y’)是否在地图上画的面内。
24、作为优选,步骤s4中根据第二坐标点对应栅格高度和设定海平高度确定挖填方式并计算得到挖填方,具体包括:
25、响应于确定第二坐标点对应栅格高度大于设定海平高度,则确定挖填方式为挖;
26、响应于确定第二坐标点对应栅格高度小于设定海平高度,则确定挖填方式为填;并执行以下步骤:
27、通过第二坐标点、栅格仿射变换参数以及每个栅格的宽度计算栅格在地图上对应的坐标数组:[[x’-gt[1]/2,y’-gt[1]/2]、[x’+gt[1]/2,y’-gt[1]/2]、[x’+gt[1]/2,y’+gt[1]/2]和[x’-gt[1]/2,y’+gt[1]/2]];
28、根据栅格在地图上对应的坐标数组通过esri.geometry类库获取得到栅格与地图上画的面的重叠部分坐标数组;
29、根据栅格与地图上画的面的重叠部分坐标数组计算重叠部分的面积;
30、挖填方的数值为重叠部分的面积乘以第二坐标点对应栅格高度与设定海平高度之间的差值;
31、响应于确定第二坐标点对应栅格高度等于设定海平高度,则确定挖填方式为不挖也不填,挖填方为零。
32、第二方面,本发明提供了一种基于三维实景的挖填方计算装置,包括:
33、解析模块,被配置为获取栅格文件并进行解析,并获取栅格仿射变换参数gt数组;
34、行列变换模块,被配置为于地图上画一个面,获取对应的第一坐标点,根据第一坐标点和栅格仿射变换参数gt数组计算出地图上画的面的左上角lefttop点和右下角rightbottom点在栅格对应的行和列;
35、坐标转换模块,被配置为根据地图上画的面的左上角lefttop点和右下角rightbottom点在栅格对应的行和列确定要搜索的栅格的范围,循环遍历栅格的范围,将每一个栅格的行和列转换为第二坐标点;
36、比对计算模块,被配置为将第二坐标点与地图上画的面进行比对,响应于确定第二坐标点在地图上画的面内,则根据第二坐标点对应栅格高度和设定海平高度确定挖填方式并计算得到挖填方。
37、第三方面,本发明提供了一种电子设备,包括一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如第一方面中任一实现方式描述的方法。
38、第四方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面中任一实现方式描述的方法。
39、相比于现有技术,本发明具有以下有益效果:
40、(1)本发明能够在三维实景中根据设定参数计算出指定区域内的挖填方,并采用栅格形式在图上渲染绘制输出。
41、(2)本发明能够在栅格上查找到地图上所绘制的对应区域,计算该区域内的每个栅格对应的坐标值,并快速计算出对应的面积,方式快捷简便,效率高。
42、(3)本发明能够精细的找出需要挖填的区域,并且快速、准确地计算出挖填方,避免出现浏览器卡顿情况,适合于在三维实景模型中的应用。