您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 综合/其它 > 2.GIS软件二次开发V1.1
GIS软件二次开发技术蔡忠亮武汉大学地理信息科学系课程主要内容第一章GIS软件开发技术方法介绍第二章GIS软件二次开发分类第三章GIS软件二次开发一般流程第四章MapInfo环境下的GIS二次开发技术第五章Arc/Info环境下的GIS二次开发技术第一章GIS软件开发技术方法介绍GIS软件开发类型底层开发使用底层程序开发语言(C,C++等),不依赖其他已有GIS平台、环境,从数据读取、存储、表达、分析、界面设计等完全自主编写系统的GIS系统的软件开发过程。二次开发在已有的GIS平台、环境基础上,使用可视化高级开发语言(vb,VC,c#)等完成上层GIS功能的GIS软化开发过程。(ArcGIS+VBA,MapX+VB)简单的说,底层开发就像盖楼,你自己得从地基开始,全部自己完成。二次开发,就像服务商提供的毛坯房,如何装修,如何进行小规模改动。GIS软件的开发方法一、GIS底层开发优点较强灵活性易于扩展成各种系统具有系统版权灵活性是利用VC++开发GIS系统的最大优点。应用面向对象(OO)技术开发GIS系统时,因为系统的所有流程和数据都可以在设计者的控制之下,可以根据系统的具体要求实现具体的操作功能,在一些GIS(特别是在一些小型或并非以传统的GIS功能为主的)系统开发时,具有无可比拟的优势。它可以根据系统的需要来实现功能,设计的系统短小精悍,软硬件要求低,运行速度快。用OO技术开发的GIS系统,与使用GIS系统专业开发工具不同:用GIS系统专业开发工具开发GIS系统时,开发者所做的是在别人系统基础上的简单开发和应用,完全受该专业开发工具的制约,开发者形成不了自主的技术积累和创新;而用OO技术开发GIS系统时,开发者可以在开发过程中,不断完善和综合开发技术,从各个方面进行完善,把系统的开发从应用项目级提高到开发工具级,最终能够完成自身的GIS系统开发工具和底层开发技术,并以此为基础,使其在信息管理系统(MIS)、决策系统(MS)、控制系统(CS)、辅助设计系统(CAD)等各种实用系统开发中得到迅速地推广应用。开发者自身具有系统版权,在一些行业的大规模推广中具有无可比拟的优势。用OO技术开发GIS系统,不同于使用成熟的GIS系统开发工具,需要有较强的设计思想、强大的数据和流程控制能力和良好的协作精神。由于受国外软件产品的冲击和软件设计学习导向的影响,目前软件设计人员和高校毕业生急需提高用OO技术开发GIS系统的综合技术能力。GIS软件的开发方法缺点难度大量大开发连续性难以得到保障对开发人员的素质要求高用OO技术开发GIS系统时,因为各种技术外的应用i行开发,进行开发的出发点低,需要较高的开发技术和很大的开发量,要开发实用要求的二维矢量图形系统,所需要的开发量已经非常可观,如果再考虑实现二维三维结合、处理数模等操作功能,其开发量更大。开发出的矢量图形平台要经过反复修改调试,在短时间内可能无法与成熟的GIS开发工具提供的平台媲美。目前在国内进行的软件开发项目,往往受商业利益的驱动,只是短期行为。通常的作法是采用一些最新的开发工具,拼装成用户需要的系统。这样开发出来的系统,常常是能用,但不好用;能解决一些问题,但解决不了全部问题;当前凑合着用,但难以改进和升级。这样做的结果是在软件设计中很难有大的突破。一些研究机构,则由于受管理体制等诸多因素的限制,也很难开发出具有竞争力的GIS产品,往往停留在研究阶段。一、GIS底层开发GIS软件的开发方法二、GIS二次开发优点高起点可靠性好简单易学各种GIS系统专业开发工具一般提供了强大的数据输入输出功能、空间分析功能、良好的图形平台、巨大的存储容量、良好的可靠性能,可以在较高的起点上直接进行GIS系统的组织开发工作,开发的系统性能和可靠性好。专业的GIS系统开发工具作为成熟的产品,它在容量、可靠性等各个方面经过了严格的测试和许多用户的使用。GIS系统专业开发工具是一个应用软件,即是提供二次开发功能,也是建立在已经实现的各种功能基础上的,所以对于用户来说,不需要特别高的程序设计思想和数据控制能力,掌握利用这些工具开发GIS系统的技术相对比较容易。GIS软件的开发方法缺点可扩展性差较为庞大,软硬件要求高没有系统版权一些传统的GIS系统专业开发工具虽然也提供了一些接口语言,但总体上来说还是一个难于真正修改的“黑匣子”。应用这些工具开发实用系统时,往往遇到这种情况:我们要开发的系统,往往只需使用专业开发工具提供的很少一部分功能,而采用专业开发工具可能只能实现系统的90%功能,而剩余的10%功能很难用这个开发工具开发完成,甚至根本无法实现。造成这种情况的原因是:开发工具从总体上讲,是一个黑匣子,用户很难甚至不可能知道和控制(或完全控制)黑匣子内的功能;而在实际应用中,要开发的往往并不全是传统意义上的GIS系统,而是将GIS技术与MIS、CAD等系统集成的系统,在这种情况下,应用这些开发工具,很难实现与这些实用系统的元缝集成。总之,对于GIS系统专业开发工具来说,它已经实现并提供的功能,GIS系统开发者可以非常容易地使用,而专业开发工具没有提供的功能,则很难甚至根本无法用专业开发工具去实现。近年来,提出的组件式GIS系统开发工具就是为克服这些困难而做的改进,但这种GIS系统也很难达到真正的元缝集成。为了能够支撑运行这些GIS系统专业开发工具,往往对系统的软、硬件有较高的要求。这在开发一些小型的GIS系统,特别是开发传统意义以外的应用GIS技术的专用系统中,需付出额外的代价。这一点,在很大程度上制约使用这些GIS系统专业开发工具的重要因素。利用这些GIS系统专业工具开发的GIS系统,实际上只是在原有系统的基础上做一些简单的应用开发,开发完成的产品同样需要这些专业开发工具的支撑平台,也就是用户除了支付开发费用外,还需要再购买这些支撑平台。对于GIS系统开发者来说,这就等于没有自己的产品,没有自主的系统版权,还要受到软件升级等各种因素的制约。二、GIS二次开发GIS软件的开发方法三、GIS软件开发方法的选择考虑系统本身的性质和特点分析二次开发和底层开发的特点估计设计者自身的具体情况对于一些大型的GIS系统开发项目,如一个地区的综合信息管理系统等,因为其图形平台、容量、可靠性等各方面的要求,一般易于选择已经成熟的GIS系统开发工具(二次开发)来组织开发。而对于一些小型的GIS系统,特别是一些以数据管理、决策研究、辅助设计等具体应用为主的系统,或者在某个行业中需要推广使用的实用系统,则选择底层开发的方法。第二章GIS二次开发分类一、基于工具型地理信息系统二次开发语言的软件开发二、基于有关地理信息系统的控件(或构件)的软件开发基于工具型地理信息系统二次开发语言的软件开发特点一、开发周期短。二、需求必须在该GIS系统工具的能力范围内。三、需要购买二次开发软件和与该GIS工具相应的功能模块。例如:Arc/Info的AML语言,MapInfo的MAPBASIC语言基于有关地理信息系统的控件(或构件)的软件开发特点一、开发高效、成本低。二、可以复用,支持分布的互操作。三、支持通过互操作实现数据共享。四、可以使用不同专业领域的构件。构件标准:OMG(对象管理组织)的CORBA(公共请求对象代理体系结构)Microsoft的DCOM(分布式对象构件模型),是对原有COM技术的扩展例如:Arc/Info的MO、AO,MapInfo的MapX。三、GIS二次开发一般流程一、通过需求分析和总体设计确定是否使用二次开发。二、根据系统需求决定使用哪一种已有的GIS平台。三、选择二次开发类型。(基于工具型GIS二次开发语言/组件式)四、根据需要和开发者能力选择开发语言。VisualC++,VisualBasic,VisualFoxpro,BorlandC++,Delphi,C++Builder,PowerBuilder,Java,VisualJ++,JBuilder,……三、GIS二次开发一般流程一个大型的软件工程项目,必须按照软件工程的科学规律进行活动和管理,地理信息系统二次开发过程同样如此。GIS软件属于管理信息系统软件,必然按照管理信息系统的开发规律进行。管理信息系统开发工程可以划分为:总体设计,系统分析,系统设计,系统实施,系统运行和维护。总体设计问题的提出和初步调查确定总体方案的可行性系统分析具体调查分析已有的系统,确定将开发的系统的目标系统设计总体设计具体设计系统实施程序设计调试培训系统转化运行和维护运行和维护系统评价三、GIS二次开发一般流程第四章MapInfo环境下的GIS二次开发技术一、MapBasic+MapInfo二、VC+MapX三、VB+MapX程序设计的一般规则MapBasic基础MapBasic菜单设计MapBasic对话框设计MapBasic按钮条设计窗口1.1MapBasic编程基础1.2MapBasic编程实例MapBasic编程环境123181.2MapBasic编程实例2、编程要点注解=(‘)包含=IncludeInclude”mapbasic.def”Include”menu.def”-系统菜单功能定义变量定长=Dimfull_nameAsString变长=Dimemployee_idAsString*20数组=Dimstart_date(10)AsDate191.2MapBasic编程实例2、编程要点变量的范围全局/局部循环控制函数主函数Main()=自动调用定义=DeclareSubFun()调用=CallFun()函数参数=缺省为引用方式,Fun(IAsInteger)值传递Fun(ByValIAsInteger)系统事件ToolHandler…201.2MapBasic编程实例2、编程要点程序组织Include”mapbasic.def”otherIncludestatementsType...EndTypestatementsDeclareSubstatementsDeclareFunctionstatementsDefinestatementsGlobalstatements函数及变量声明主函数定义各子函数定义自定义函数定义SubMainDimstatements...EndSubSub...Dimstatements...EndSubFunction...Dimstatements...EndFunction211.2MapBasic编程实例3、实例•Convert.mb–ConvertTabtoMIF,andConvertMIFtoTab•AGGREGAT.MB--Takesplaceofagg_sym.mbandagg_line.mb.•DIST_OBJ.MB--Addedpointtopointdistances.•FINDER.MB--LocatespointswithinMapInfo,alsoaccessesMapMarkerAPI.•FONT_SET.MB--Setfontforalllayers.•GEOC_REV.MB--Reversegeocoder.•LAYOUT_T.MB--Nowincludesmapart.mb,portland.mb.•MB_TOOLS.MB--MapBasictoolsthatshowobjectstylesandtoolbarpositions.•METADATA.MB--Manipulatemetadatainatable.•MULTIMED.MB--Assignpictures&moviestorecordsintable.•PROJCTNS.MB--Nowincludesutilitytoimportlatestmapinfow.prjfile.•PROPER$.MB--Makespecifiedcolumnsinatableproper$().•REPARENT.MB--Reparentalegendinamapper.•SEAMLESS.MB--
本文标题:2.GIS软件二次开发V1.1
链接地址:https://www.777doc.com/doc-4286058 .html