博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于插件技术的GIS应用框架(C# + ArcEngine9.3)(一)
阅读量:4955 次
发布时间:2019-06-12

本文共 1388 字,大约阅读时间需要 4 分钟。

基于插件技术的GIS应用框架(C# + ArcEngine9.3)(一)

               -------------------------几个问题

一直想把原来用Delphi写的GIS应用框架进行升级,可由于家庭和工作牵扯了太多的精力,没能如愿,最近一段时间,终于研墨执笔开始了框架的升级工作,历时一个多月,终于新鲜出炉了,现在静下心来进行总结,以提炼我这一个多月的辛劳与汗水。

 

一、关于平台的选择

实际上本人一直从未用过Visual Studio,更未用C#做过一个完整的项目,其实就开发平台而言并不存在太多的差异,就像.net框架和J2EE的包,以及delphi的VCL,他们的思想其实都是大同小异的,语言使用到了一定的高度,有了一定的积累,转换到另外一种语言,困难就小多了。其实只要支持COM的语言都可以用来进行GIS框架的开发,之所以采用C#开发新版本的GIS应用框架,对于自己来说无非是两点:第一,界面更加完美;第二,就是想检验一下自己的学习能力。

 

二、关于ArcEngine接口的选择

这个问题我觉得很重要,看过很多人家的代码以及成型的系统,似乎都乐意采用ToolbarControl这个东西,我研究了一段时间,这个东西不仅控制麻烦,而且会带来很多负面问题,比如,我无法在ToolbarControl里加入自己的控制逻辑,而且更糟糕的是,对于想要保存自己定制内容的程序员来说,这样的封装显得太过了。此外,比如IEngineEditor接口的选择,这个接口提供了很强大的功能,对于编辑任务和编辑图层几乎可以不用写什么代码就能实现,但是编辑任务和编辑图层两个列表都必须出现在ToolbarControl中,这对于我这个追求完美的人来说,无疑是个灾难,所以在我是框架里,抛弃了ToolbarControl和IEngineEditor这个对于很多程序员来说非常方便的东西,IEngineEditor的功能基本上完全靠自己代码来实现,编辑任务、编辑图层等都以插件的形式出现在自己的框架里,既做到了界面风格统一,也做到了功能完全可以自定义。当然这背后的代价是你自己编写行数不菲的代码。

 

三、关于事件

开发GIS应用框架,最核心的一个问题就是事件的处理了,毕竟有了事件,所有的插件对象才能有机地构成一个整体,这也是所有插件对象进行协同工作的基础所在。COM提供了连接点的机制来进行事件的发布,而C#则较为简单,可以直接通过事件代理的形式来处理,这样一来,所有客户插件感兴趣的MapControl事件和PageLayoutControl事件即可以方便的通过事件代理来获得框架的调用。

 

四、关于反射

.net 的反射机制的确是个好东西,获取插件的类型信息易如反掌,只是本人没有深入研究,在这里也就不赘叙了。

 

五、关于插件的加载与保存

实际上有很多种方式可以对定制的结果进行保存,比如:结构化存储文件,xml等等,在本文论及的框架里,选择了后者,不光是因为插件的加载与否,如何加载只需要简单的进行XML配置就可以实现,而且也便于单独调式某个插件或某一组插件。

 转载:

 新浪微博,地址:http ://blog.sina.com.cn/s/blog_4c0b48dc0100l2nj.html

转载于:https://www.cnblogs.com/dengshiwei/p/4258754.html

你可能感兴趣的文章
去除数组中重复的元素
查看>>
Nginx配置文件nginx.conf中文详解(转)
查看>>
POJ 1988 Cube Stacking
查看>>
POJ 1308 Is It A Tree?(并查集)
查看>>
N进制到M进制的转换问题
查看>>
Android------三种监听OnTouchListener、OnLongClickListener同时实现即其中返回值true或者false的含义...
查看>>
MATLAB实现多元线性回归预测
查看>>
Mac xcode 配置OpenGL
查看>>
利用sed把一行的文本文件改成每句一行
查看>>
使用Asyncio的Coroutine来实现一个有限状态机
查看>>
Android应用开发:核心技术解析与最佳实践pdf
查看>>
python——爬虫
查看>>
2.2 标识符
查看>>
孤荷凌寒自学python第五天初识python的列表
查看>>
孤荷凌寒自学python第五十八天成功使用python来连接上远端MongoDb数据库
查看>>
求一个字符串中最长回文子串的长度(承接上一个题目)
查看>>
简单权限管理系统原理浅析
查看>>
springIOC第一个课堂案例的实现
查看>>
求输入成绩的平均分
查看>>
ORACLE 数据库概述
查看>>