首页 > 范文大全 > 正文

军标箭头库设计和在森林防火中的应用

开篇:润墨网以专业的文秘视角,为您筛选了一篇军标箭头库设计和在森林防火中的应用范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:军标箭头是一种军队标号,在军事上有广泛的应用。本文旨在将军标箭头符号应用在森林防火指挥系统等指挥决策系统中。

关键词:森林防火指挥决策系统、军标箭头、军标箭头库、抽象工厂设计模式

1.引言

军标箭头是一种军队标号,军队标号是部队作战指挥、作战模拟和其它与军事相关活动中一种常用的图形符号。这种图形符号由简单的线段、圆弧等称之为图元的基本单位组成,并根据实际需要将这些图形符号粘贴在军用地形图和其它形式的地图上,形成表示敌我双方的作战态势、战斗队形、首长决心、部队、武器装备布局等一系列与军事相关活动的状态图。它是一种军队特有的、用图形符号表示的语言。军队标号的绘制本质上是一种示意图的绘制[1]。

在森林防火扑火指挥决策信息化系统中,必然需要动态灵活的标注扑火物资、扑火队伍等的行进方向,使用军标箭头可以形象地标注出当前扑火的动态形势。

2.系统实现

根据森林防火系统的实际需求,我们抽象出五种军标箭头,包括:

CZhChWArrow:粗直叉尾箭头

CWPWArrow:粗弯平尾箭头

CWChWArrow:粗弯叉尾箭头

SimpleArcArrow:简单弧线尾巴箭头

SimpleLineArrow:简单直线箭头

为每个箭头设立一个类。每个类包括控制点属性、init方法等。在每个类中定义控制点的初始时相对关系的算法,以及创建自己的方法和接受编辑的算法。

本系统采用ArcEngine 9.2开发而成。下面以粗弯平尾箭头为例说明,箭头的构造和编辑时的算法。

2.1军标箭头类的设计

2.1.1军标箭头的控制点设置

根据控制点的作用可以将控制点分三个层次:主控制点(1个)、中轴控制点(2至3个)、形状控制点(多个)。

每种图标都由控制点来控制其图形形状的,这样在编辑的时候,点击拖动控制点后可以控制军标箭头形状的改变。我们将控制点设置为中轴线,这样编辑的节点显示清晰明了,用户拖动编辑方便。

下面以CWPWArrow(粗弯叉尾)箭头为例说明控制点的选取和在控制图形中起到的作用。

我们在此箭头的中心线上选取三个控制点,如图上红色的点所显示,它们分别是:triTopPt、midMidPt、midBottomPt。

此军标箭头图形的实际控制是由七个段(segment)组成。Segment是ArcEngine中的最小的图形单元。

图:组成粗弯叉尾箭头的七个段

七个段大致分为三角箭头部分、左右弧段和尾部直线。粗弯叉尾箭头的控制点如下:

主控制点为(1个):三角箭头的顶点triTopPt;

中轴控制点(3个):三角箭头的顶点triTopPt、中轴弧线的中点midMidPt和尾点midBottomPt。

形状控制点(11个):包括三角箭头的多个端点,左右弧段的特征点等。

2.1.2使用控制点创建军标箭头

控制点赋值完成后,就使用这些控制点构建组成军标箭头的多个段(segment),然后将这些段构建成polyline。要想使军标箭头具有多种填充色彩,必须将polyline转换成polygon。这个转换在PolylineToPolygon函数中实现,转换主要通过Geometry库的IGeometryCollection来实现。

系统允许用户在地图上点击画军标箭头,也允许用户实例化军标箭头类,为中轴控制点赋值,然后直接调用MilArrowFactory类中军标箭头的创建方法,让开发者在运行时在地图上创建并画出军标箭头。

军标箭头支持拖动编辑和属性表编辑两种方式。

拖动编辑的主要思路是,点选军标箭头,获得此箭头的控制点信息,拖动控制点,利用新的控制点重画军标。

属性表编辑的主要思路是,点选军标箭头,点击鼠标右箭选取“属性表”,然后再属性表格中更改此箭头的控制点坐标、符号、填充色彩等属性,完成更改。

2.3军标库的调用

军标库设计、编码、打包成功后,可以很容易的实现军标的创建、编辑,所需的代码简短固定。按照军标库的设计,实现了五种箭头的类后,将箭头类实例化,在地图上点击,就可以画一个军标箭头。

画粗弯平尾箭头的代码如下,其他的类似。

IPoint mousePt = new PointClass();

mousePt = pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(e.x, e.y);

CWPWArrow cwpwOb = new CWPWArrow();

cwpwOb.triTopPt = mousePt;

pPoly = cwpwOb.createCWChWArrow();

pEle.Geometry = (IGeometry)pPoly;

elepro = (IElementProperties)pEle;

elepro.Name = “cuWanPinWei”;

pGc.AddElement(pEle, 0);

pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics,

(object)pEle, null);

this.axMapControl1.ActiveView.Refresh();

3.在森林防火中的应用

森林防火系统是典型的资源类行业的信息化应用,gis在森林防火中发挥着重要的作用。在森林防火系统中的扑火指挥子系统中,使用本系统描述的军标箭头库标注扑火队伍的行进方向,支持拖动编辑,地图表达清晰明了、形象直观。

图:军标箭头在数字线划地图(DLG)中的使用示意

参考文献

[1]、杨杭,《矢量军标与专题图的生成技术研究及实现 》[D],保存地点:哈尔滨工业大学计算机与科学学院,2002。

[2]、中国森林防火网 www.slfh.省略/cffm_web/index.省略多层分布式程序中的应用》[J],《计算机时代》,2006年第3期;

作者简介:

费中强:1977,安徽肥东县,合肥工业大学硕士,安徽安联科技股份有限公司,研究方向为GIS研究与数字化测绘;

王江虹:1972,安徽省合肥市,安徽机电学院本科,中国农业银行安徽省分行,应用电子专业