基于Java技术的林分空间结构指标系统设计

2017-04-26 00:10韩立文窦立君沈丽蓉高宙宇王之舜
电脑知识与技术 2017年6期
关键词:软件系统

韩立文+窦立君+沈丽蓉+高宙宇+王之舜+郭勇

摘要:林分结构指标的精确计算可给生态、经济、社会、学术等带来巨大的价值。然相较人工计算的繁杂低效,简便高效的计算机极大地减少了人力物力财力的浪费。系统使用的Java语言技术,是时下最流行的计算机编程开发技术,其高效稳定性为系统的开发提供了可靠的保障。此外,系统利用SQL和Excel的强大功能,并结合不断优化的算法使得系统的功能逐渐强大并趋近成熟。

关键词:Voronoi图; Delaunay三角网; Bowyer-Watson算法; 林分空间结构; 软件系统

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)06-0099-03

Abstract:Stand structure indexes of precise calculation can bring ecological, economic, social, academic and other great value. However, compared with manual calculation of multifarious inefficient, simple and highly effective computer greatly reduces the waste of manpower and financial resources. The system uses Java language technology, which is the most popular computer programming technology, providing a reliable guarantee for the development of the system of its efficient stability. In addition, the system uses the powerful functions of the SQL and the Excel, and combined with continuous optimization of the algorithm ,which making the function of the system gradually reaching strong and maturity.

Key words:voronoi diagram; delaunay tin; bowyer-watson algorithm; spatial structure ; software system

林分结构是林分在未遭受破坏的情况下,林分内部存在的一些比较稳定的结构规律。林分空间结构决定了林木之间的竞争优势,空间结构的内部稳定决定着林分成长的健康与否。目前,一般采用三个方面的指标来描述林分结构的状况,分别是:反映树种空间隔离程度的混角度[2],反映个体成长的大小比数[3],反映个体在二维布局上的分布格局的角尺度[4]。此外,相关的专业人士又提出两个指标——描述随机样点光环境测定指数的开敞度和描述相邻木对目的树干扰指数的单株受压。

1 林分空间结构指标

1.1 传统混交度

混交度是目标树木与周围林木不属于同一树种的数学测度,其表达式为:

1.2 多样性混交度

多样性混交度描述了目的树与相邻树,相邻树与相邻树之间的隔离程度,其在传统混交度的基础之上加入了相邻树之间混交度的考量,其表达式为:

其代码实现如下:

static double To_NotriMingling(int root,int n,int near_tree[])

{Set s = new HashSet();//使用集合统计树种个数

for(int i=0;i

{Tree ti=new Tree(near_tree[i]);

if(!to.name.equals(ti.name))

……}

return (1.0*s.size()*Vij/(n*n));}

1.3 角尺度

角尺度是用來表述目的树周围相邻树分布的匀称性的测度。其表达式为:

1.4 大小比数

大小比数反映目的树与相邻树在比较量上的差异。其表达式为:

1.5 其他指标

2 林分关键处理

2.1 相邻木处理

传统处理相邻木是在整个林分中寻出距离目的树最短的4棵树作为相邻木,这种方法既耗费资源,也限制了结果的准确性。为此需要一个既保证资源又更加准确的处理方法,而Voronoi图的最近性和邻接性,使其成为解决这一问题的可能。

赵春燕也通过Voronoi图确定相邻木计算指标,并用实验数据证明Voronoi图生成的相邻木数据对指标的计算准确度没有影响。张彩彩在其学位论文中则采用加权的Voronoi图计算指标,并同样用数据证明其准确性。

关于算法的实现,参考了Bowyer-Watson算法,使用了Delaunay三角剖分生成Voronoi图的对偶图Delaunay三角网。Bowyer-Watson算法的核心是规则最大化最小角,使网内关联的任意四点不共圆。三角剖分需要满足两个准则:空圆特性和最大化最小角特性;由此形成的三角网拥有最近性、唯一性、最优性和区域性[1]。其中最近性是处理相邻木的关键,生成的三角网是以最近的三个点形成三角形,使得点与点之间关联的都是与之最近的点,可理解为最相邻的树。

使用Voronoi图处理相邻木的优点在于不必要去计算繁杂的距离,同时确定相邻木的数量,而不是固定的4棵,是视情况而定。具体实现是构造三角形链表,划定涵盖所有点的点集,将点逐一插入三角形之中,使用准则修正三角形,直到完成所有点。

建模实现中,使用Java面向对象技术,建立Tree类构造树木对象,从Tree类衍生出Point类,将树木二维抽象化,使用Point类构造点对象参与算法运算,组建三角网。Triangle类构造生成的三角形对象,树木邻接关系便清晰可见。

代码实现如下:

flag=Judge_is_in_triangle(t,p);/*判断点在哪个三角形中*/…………

flag2=Judge_is_in_circle(new Triangle(t2),new Point(i));/*判断点与外接圆的关系*/…………

if(flag2==-1)/*如果点在外接圆内*/

{………./*擦除三角形第三边,点连接三角形三顶点形成新三角形*/}

If(flag2==1)/*如果点在外接圆上和圆外*/

{……/*点连接三角形两顶点添加一个三角形*/}

2.2 边界处理

边界的树木由于其环境的特殊,使得其作为参照树计算出的指标不具价值,因而必要的边界校正必不可少。传统的处理方式有距离缓冲区法、8邻域大样地法、第4邻体判定法。缓冲区的宽度难以确定,8邻域大样地法成倍的增加计算负荷,只有第4邻体判定法能在不影响结果的基础上解决问题,同时还一定程度上减轻计算负荷。但在判定边界木的问题上适用条件不灵活。

综上考虑,使用角度判定边界木,再使用第4邻体判定法处理边界木便让问题简单很多。当一棵树的一侧没有树时,便可认定其处于边界,固其夹角的特征便可反映其所处的环境。边界木作为其他树的相邻木但不作为目的树,这便是第4邻体判定法处理边界的核心。算法实现借用了角尺度的计算函数,一举两得的实现,此处不再赘述。

3 系统设计

3.1 数据设计

合理的软件设计离不开合理的数据模型。基于Java强大的面向对象技术可以系统条理的构建数据。软件计算林分指标需要林木的相关数据,林木的相关数据需要载体;将林木抽象成树木对象,将计算所必要的数据作为对象的属性,丰满树这个对象。树木之间的关系具象化成三角形,由树木做节点的大量三角形便形象表达其中关系。

具体数据设计可参看下面的类图:

图1中各类之间的关系为:Point类依赖Tree类,Point与Triangle类是聚合关系,Point类是Triangle类的局部,Function类与Tree、Triangle类之间都是关联关系。

系统是遵照以上类图设计。使用了一个Tree类构建基础的树对象,其中存储必要的属性和方法;从Tree类中局部抽象出Point类,专用于构建三角网;Triangle类用来构建组网的三角形对象,同时也是树与树之间的关系实例;Function类是一个方法类,在Tree对象和关系Triangle对象基础上实现各种指标计算。

3.2 数据库设计

数据库的设计上保持與类图的结构基本一致,使用的是关系型数据库。Tree表和Triangle表都设置了实体完整性规则,使用主键约束保证数据的正确性;同时三个表都设置了参照完整性规则,确保了表格之间的关系约束。使用数据库和类图的设计,实现系统的核心元件。

Tree表、Triangle表中的ID属性是唯一且特殊的,表内的ID不允许出现相同的,保证数据的准确性。Result表中的ID依赖于Tree表中ID属性,Tree表中不存在的ID不允许在Result表中使用。Triangle表中的A、B、C三个点同样依赖于Tree表中的ID,不再赘述。

4 系统功能

系统是基于Java技术实现的,界面使用的是Java的Swing技术,运用外部美化函数优化界面视觉。数据以Excel表格的形式录入到系统之中,系统将基础数据录入SQL数据库,算法使用Java面向对象技术实现三角网组网。用户可以选择需要计算的指标(角尺度、大小比数、混交度、开敞度、单株受压),系统通过计算将结果反馈到界面上;用户还可以使用自定义功能自己定义公式计算指标。报表数出功能能将之前计算的所有结果整理成Excel表格储存在原表格目录下方便日后使用。

程序分为三个阶段:第一阶段,程序获取数据;第二阶段,三角网组网;第三阶段指标计算。原始数据导入程序后,程序先将数据按照程序格式导入数据库中,而后程序运用算法和数据库操作进行三角网组网。此时,基础数据初始化完成,程序可根据需求计算相应指标并以表格形式输出结果。以下是实验数据所计算出的结果,经过验证,指标结果均正确。

5 结束语

计算机的快速发展不仅推动了社会的发展,同时也给很多传统行业带来了新的解决方法。软件是计算机得以服务社会的关键,将传统的方法替换成适应时代的新思路是每个时代人的责任。时下最流行的Java编程技术使得这种实现变得简单高效。林学的很多方面非常需要计算机的支持,搭上计算机的高速列车将给林业的发展带来不可想象的进步。当然,全新的数学支持,算法的架构都是必不可少的。数字的时代,要用数字的方法解决问题。

参考文献:

[1] 赵春燕,李际平,李建军.基于Voronoi图和Delaunay三角网的林分空间结构量化分析[J].林学科学,2010(6).

[2] 汤孟平,唐守正,雷相东.等.两种混交度的比较[J].林业科学,2004(5).

[3] 惠刚盈.一个新的林分空间结构参数——大小比数[J].林业科学 1998(8).

[4] 惠刚盈.角尺度——一个描述林木个体分布格局的结构参数[J].林业科学,1998(7).

[5] 惠刚盈.角尺度——一个描述林木个体分布格局的结构参数[J].林业科学,1998(7).

猜你喜欢
软件系统
软件系统的复杂网络之研究
基于改进蚁群算法的嵌入式系统软硬件划分
电动汽车智能充电桩的设计与实现
单片机控制的八路抢答器的设计与制作