JLKEngine中间件平台

产品概述
    JLKEngine中间件平台是采用ArcEngine+C#开发完成,其目的是为GIS应用提供一个快速开发构建平台,缩短GIS业务应用系统开发周期,降低GIS应用集成的开发门槛。其特点是通过可视化的构件协同建模,提供基于事件驱动和构件化的GIS应用集成框架,采用可视化拖放构件进行组装、采用动态插件加载配置的方式来完成GIS应用集成,从而大大简化了应用集成的复杂性,有效提高了GIS应用系统的易用性和可操作性。因此,JLKEngine中间件平台不仅是解决企业综合GIS应用系统的信息互通、数据高度共享和应用快速整合的中间件产品,更是能够满足GIS各种应用需求的集成的、可伸缩的、全面的中间件产品。
    JLKEngine中间件平台是一个易学易用、所见即所得的二次开发工具,具有高开发效率、统一的编程模型、高度集成的框架核心,支持VB、VC和.NET所支持的各种开发语言。该产品是按照AO接口规范,在AE下重写AO部分底层类库,并按照统一的编程接口进行归类分组,以DLL动态链接库的方式提供二次开发接口。另外,平台还增加了图层树管理控件、符号库管理控件等更多具有定制灵活、扩展性强的可视化用户控件,输入输出接口结合了对象结构的优点,使开发者更易于理解,并进一步简化了编程工作量。JLKEngine中间件平台提供的JLKEngine Framework框架类库为基于AE标准接口ICommand及ITool接口开发出的行业应用插件有机集成提供了一个统一框架运行时,通过平台提供的应用插件配置管理工具有机地整合到应用框架中,从而可快速搭建出不同行业的综合GIS应用系统。

基于ArcGis的桌面应用系统框架主界面

产品组成
    中间件二次开发平台:基于ArcEngine的中间件(简称JLKEngine)采用VS2005(VS2008)+C#+ArcEngine9.1(9.2及9.3)进行开发,是按AE对象的处理为目的进行的AO底层类库的二次封装,JLKEngine中间件平台是以快速进行GIS应用系统开发为出发点进行设计开发的,他是一个易学易用的二次开发工具、支持多元化语种、高开发效率、具有统一编程模型,统一中间件运行库。该平台提供的JLKEngine Framework为基于ArcGIS Engine的桌面GIS应用程序提供了统一的开发规范和标准,框架中封装了从工具栏菜单到工具条按钮的动态创建操作、插件窗体的浮动及停靠控制、提供了图层树、鹰眼视图、符号库等标准的UI界面定制控件。此外,还设计了基于Service架构的服务器容器,提供了通用的插件命令池容器,使得应用系统开发人员只需要少量代码,并利用已有的命令和工具插件可快速构建起一个应用系统。
    数据采集与建库平台:数据采集是GIS应用系统的基础,可进行绝大多数的ArcGIS格式和CAD格式的导入/导出,可以自定义数据集(图层)、数据字典,支持多人协作工作,通过数据合并功能将不同小组和人的工作合并的数字化工作、可进行导入数据的影像几何纠正、栅格数据矢量化、坐标系转化、投影转换、可以通过直接定点或GPS定点输入数据点信息,通过表格和图形方式输入地图要素信息点,还可以进行图形拼接。数据建库是对前端数据采集工作获得的矢量数据,完成入库前的数据编辑、拓扑检查以及提供各种常用GIS数据格式的转换处理功能;另外,提供空间数据的投影转换及坐标转换功能以及符号库的制作管理。
    数据管理平台:数据管理模块采用多数据源,多比例尺度,多格式数据“一库集成”数据管理模式,实现了4D(DLG,DRG,DEM,DOM)与属性文本数据的一体化集成管理。该模块提供对矢量数据和栅格数据的图文一体化管理,具有属性数据以及数据字典管理表的编辑维护功能。数据管理提供类似ArcCatalog一样的数据组织、管理工具,可以实现SDE数据库、个人数据库等的综合管理。包括:要素集的管理,SDE图层的管理(表字段新增、删除功能)、版本注册管理、投影管理,数据导入导出管理、提供图层的检查规则功能、提供元数据管理功能,提供整个数据库的全量或增量式备份恢复、各种数据格式相互转换以及提供SDE空间数据库的分布式部署和管理。
    后台支撑服务平台:后台服务模块是基于ArcEngine的中间件的核心,具有较高的开放性和二次开发能力。后台服务模块具有地图服务、属性服务、空间分析服务、元数据服务和专题图服务等,还提供强大的开发组件库,为ArcServer及ArcIMS Web应用提供强大的二次开发接口。
    应用框架平台(应用系统集成框架):JLKEngine中间件提供基于ArcEngine开发应用系统所必需的基础应用模块。该应用框架主要包括地图浏览、地图编辑、信息查询、空间分析、专题图制作和数据共享等应用模块。该应用框架平台通过XML配置文件来动态生成系统菜单及工具栏,任何应用插件只要满足AE的标准接口ICommand或ITool接口就能自动集成到该应用扩展框架,引用平台提供的框架类JLKEngine FrameWork就能完成应用插件与框架地图的交互操作、数据信息的传递。另外提供应用系统运行参数配置工具以及系统菜单、工具栏配置管理工具以及数据上载到SDE数据库的初始化管理工具。

基于ArcGis的土地利用规划修编及实施管理系统主界面

技术特点
    先进的技术构架----基于C#+ArcEngine+ArcSDE开发,以构件化为目标,组件式开发技术,插件式动态调用技术实现相对自由的用户定制功能;
    良好的可扩展能力----提供对多数据源的统一管理以及支持多应用的多文档管理;
    良好的应用集成能力----提供了与工作流平台交互、ArcIMS信息发布等扩展方式;
    良好的开放性及嵌入能力---- 除基于ArcEngine的二次开发外,也适用ArcMap的二次开发应用;
    很好的可重构性----具有“分解再重装”的显著特点,能够反复重用,多次重用,为平台提供可靠稳定的保障;
    界面的友好性--------可定制更加个性化,更加灵活的界面,采用模板方式动态配置管理;

基于GIS的工作流协同办公系统框架主界面

开发特性
    JLKEngine中间件平台在二次开发方面除具备在ArcEngine环境进行组件化应用开发以及提供的插件开发机制以外,还具有以下二次开发特点:
    采用类IE浏览器的多地图文档处理;
    提供*.Style文件在AE环境的应用支持;
    提供多SDE空间图层树配置及应用管理;
    提供空间图层专题渲染方案存储及应用管理;
    采用类AutoCAD的数字化编辑模式进行地图处理;
    提供与工作流平台进行用户权限管理的应用接口;
    提供多数据源多SDE服务器分布式管理;
    提供了符号库制作管理构件 ;
    提供了类ArcCatalog的数据管理构件;
    提供了类ArcMap的数据采集及建库构件;
    提供了快速构建GIS应用系统的开发框架;

基于ArcGis开发的空间数据管理平台框架界面

产品价值
    缩短应用的开发周期;
    节约应用的开发成本;
    减少系统初期的建设成本;
    降低应用开发的失败率;
    保护已有的投资;
    简化应用集成;
    减少维护费用;
    提高应用的开发质量;
    保证技术进步的连续性;
    增强应用的生命力。

制图模板设计及输出系统主界面

框架设计

总体框架设计

运行逻辑设计

运行逻辑设计

插件运行解析

插件运行解析

与SuperFlow接口

与SuperFlow接口

二次开发介绍
    在JLKEngine中间件平台中提供了一个应用程序框架类Framework,该框架类主要的用于管理和维护主应用程序中的界面元素,如菜单、工具栏、地图控件、命令行窗体等,通过在主程序中使用Framework,只需要将界面元素传递到系统中定义的包装类后再传送到Framework中,并调用Framework方法后,对界面上元素的基本操作所产生的事件将由Framework来实现处理和转化。
    平台总体上划分为如下几个层次:
    JLKEngine核心库:它是JLKEnigne的运行基础,定义了框架运行模型、框架扩展模式、并对ArcGIS Engine中可用的操作进行了封装,提供了一组函数实现对空间数据的快速处理,以便于在基于ArcGIS Engine的应用系统开发中应用以简化开发工作难度。
    GIS基础功能库:它是在ArcGIS Engine基础上按地图制图、数据编辑、网络分析、三维分析等对数据处理划分的一组类库。在这组类库中实现了对数据分析处理所需要的各种用户操作界面以及一些快捷的处理函数。
    应用扩展(菜单及工具栏)插件包:该包是在上面2层基础上,封装的一组可直接集成到应用系统中的命令和工具,它们都派生于ArcGIS Engine的BaseCommand和BaseTool类。插件包是根据GIS应用系统开发特点进行划分的,包括基础工具包、制图工具包、数据管理工具包、网络分析工具包、三维分析工具包、Scence工具包、Globe工具包等。

框架加载的序列

框架加载的序列

JLKEngine核心库

JLKEngine核心库类依赖关系图

JLK.Utility包
      该包是整个框架的基础包,其中封装了ArcGIS Engine的基础函数库。主要有如下功能:1,显示控制类:颜色管理,要素闪烁,创建线面对象以及要素旋转的显示回馈。2,数据访问类:包括数据的导入导出、数据格式转换(提供shp、sde和个人数据库要素类和dxf、mapinfo数据格式的相互转换),可支持南方cass数据的导入等。3,属性查询类:提供了属性查询对话框以一组查询函数。4,Style符号库类:提供了对ArcGIS Desktop的style符号库的读取类库,使得在ArcGIS Engine中也可以直接使用style类型的符号库数据,而不需要把style符号库文件转换为serverstyle符号库文件。5,地图输出类。
JLK.Framework
      该包是构建应用程序运行框架的核心包,其中包括了框架的基本接口定义,如框架接口、应用程序的菜单工具栏管理接口、停靠管理接口、右键菜单接口等的定义。
     菜单工具栏管理接口、停靠管理接口、右键菜单接口等由于采用不同的用户界面,其实现方式有很大差异,在本系统中基于.net中的菜单工具栏控件提供了一种标准框架的实现,同时也基于第三方菜单工具栏控件另外的一种框架实现方式。
     在该包中提供了一个应用程序框架类,提供应用系统中菜单工具栏的事件处理以及地图控件的事件处理,并实现了一种插件的动态加载机制,使得派生于BaseCommand和BaseTool的插件,可以方便的配置到应用系统中,而不需要对应用系统框架作任何修改。
JLK.Catalog数据管理包

    JLK.Catalog数据管理包提供了对空间数据的管理维护目录结构的实现。类库包含数据管理目录树的定义和实现。可用于维护计算机上的目录层次结构及系统所能支持的文件和数据类型。此外还包括了新建空间数据库连接界面、要素类和表的新建和维护界面、数据库属性界面,数据转换界面等;空间数据投影变换公共类定义以及空间投影信息维护的用户界面。

JLK.Symbol符号包
    该包提供了对符号库的管理维护操作的用户界面,使得在ArcGIS Engine中可以对符号库进行管理和维护,系统中所提供的符号库管理界面即能用于的style符号库的管理和维护,也能支持对serverstyle符号库的管理和维护。 提供了对ArcGIS Engine所支持的样式的绘制实现类。同时在该包里提供了一组符号控件,如符号按钮控件、符号组合框控件等。同时系统实现了对style符号库的管理编辑界面,包括符号库管理器、符号选择器、点、线、面、文本符号编辑器等。


JLK.DDDBaseTool
    三维基础工具包,提供了对三维模式下对数据显示、处理、分析等的一组基本的类和函数库,包括三维模式下编辑操作支持类、三维文档管理类等类。

JLK.ControlExtend
    控件扩展包。结合具体应用系统的开发需要,在该包中提供了一组基于.net控件和其他第三方控件的一些扩展,以满足本框架开发的需要,同时这些控件,也可以满足用户在进行系统开发时,其他方面的一些使用要求。

GIS基础功能库
    该部分主要包括地图制图、地图编辑、地图输出、网络分析、三维分析等类库,类库依赖关系如下图所示:

JLK.Carto制图处理类库
    JLK.Carto提供了层操作、层管理、图形裁剪等处理类,包含了对图层操作和形裁剪处理的函数,以及图例、格网、图层属性、比例尺和比例尺文本设置的一组用户界面。提供了专题渲染所需的一组用户界面,包含唯一值渲染、唯一值多字段渲染、匹配符号库、点密度、比例符号渲染、分级符号渲染、饼图/直方图渲染等。

JLK.DDDAnalyst三维分析类库
    该模块提供了创建Tin、等高线、要素到栅格、各种插值等用户界面。

JLK.Editor
    数据编辑类库。JLK.Editor提供了对几何对象编辑处理的函数以及要素属性编辑、几何数据编辑和注记编辑等一组用户界面。

JLK.NetworkLib
    网络分析类库,提供对网络分析支持。

JLK.Controls
    主要为本框架运行所提供的对ArcGIS控件的在包装,以满足本框架运行的要求,如地图控件和页面控件组合窗体控件、图层树控件等。

应用扩展(菜单工具栏)插件包
    该部分主要是在以上类库基础上开发的可以直接在应用系统中应用的一组命令和工具。命令和工具类的实现分别派生于ArcGIS Engine所提供的BaseCommand或BaseTool。

PlugManage.BaseTools
    该类库包中主要包含了GIS应用系统所具有的基础工具,如放大、缩小、查询选择等基本工具。

PlugManage.CartoLib
    该类库包含了和地图制图相关的一组工具包。

PlugManage.DataMangement
    该类库提供了数据管理相对应的一组工具包,它主要是用于数据管理应用系统,用于实现对数据管理系统中各种数据库操作的需要,如新建要素类等命令。

PlugManage.EditorLib
    编辑插件提供了GIS应用系统的编辑工具插件,如草图工具、要素图形编辑、要素属性编辑、删除要素等一组工具,它可以满足基于ArcGIS Engine的应用系统构建中基本编辑功能的需要。

PlugManage.NetworkAnalystTools
    网络分析工具插件包提供了一组基本的网络分析工具,可以用于处理最短路径等基本网络分析功能。

PlugManage.DDDAnalyst
    三维分析插件提供了一组三维分析插件,用于进行数据的三维分析处理。

sceneTools
    Scence插件提供基于Scence开发所需要的一组基本工具,包括视图控制、基于Scene的要素编辑工具、动画制作、基本的三维建模工具等。

GlobeTools
    该插件提供基于Globe控件开发所需要的一组基本工具,包括视图控制、基于Globe的编辑工具等。