GIS二次开发概述•GIS开发模式•面向对象程序设计(OOP)•组件GIS技术GIS软件类型GIS工具型GIS应用型GIS区域型GIS专题型GIS主要指软件包:Mapinfo、ArcGIS、ArcView与应用领域结合形成的系统:某流域基础地理信息系统XX公司物流配送系统城市综合管线地理信息系统•继承二次开发:利用专业的GIS软件实现GIs的基本功能,以通用软件开发工具Delphi、VC等为开发平台,两者继承开发;有两种方式:OLE/DDE,以OLE或DDe方式启动GIS工具软件在后台执行,利用回调技术动态获取其返回信息。二是GIs控件方式;利用GIS软件商提供的建立在OCX技术基础上的GIS空间,如MO或MapX,在VB。Delphi等应用程序中,直接将GIS功能嵌入其中一、GIS开发模式•独立开发模式•宿主型开发模式•组件式GIS开发模式独立开发模式•不依赖于任何GIS工具软件•所有的算法都由开发者独立设计•选用底层程序设计语言•开发周期长,软件功能相对简单,对开发者要求高,•具有自主知识产权宿主型开发模式•基于GIS平台软件,进行应用系统开发•开发较为容易•二次开发的脚本语言,功能较弱•所开发的系统不能脱离GIS平台•是解释执行的,运行效率低•用户界面受平台软件的限制组件式GIS开发模式•利用专业的GIS软件实现GIS的基本功能,以通用软件开发工具Delphi、VC等为开发平台,两者继承开发;•建立在组件技术基础上的GIS功能组件,实现了地理信息系统的各种功能•成本低,开发要求低,语言简单,系统可实现无缝集成GIS开发模式的选择•独立开发难度太大•宿主型二次开发受GIS平台所提供的脚本语言的限制•组件式GIS开发模式结合了GIS平台软件与可视化开发平台的组件开发模式的优点。二、面向对象程序设计(OOP)ObjectOrientedProgramming软件开发模式的演变和发展•OOP将问题分解为一系列实体——这些实体被称为对象(object),然后围绕这些实体建立数据和函数OOP的优点•通过继承,我们可以大幅减少多余的代码,并扩展现有代码的用途;•我们可以在标准的模块上构建我们的程序,而不必一切从头开始。这可以减少软件开发时间并提高生产效率;•数据隐藏的概念帮助程序员保护程序免受外部代码的侵袭;•允许一个对象的多个实例同时存在,而且彼此之间不会相互干扰;三、组件式GIS(ComGIS)•组件技术•组件式GIS1.组件技术代码重用循环过程(子程序)宏代换函数经典、规范的计算方法和程序代码作为一种技术积累继承和流传,具有重要的意义编程序最好是用已有的经过验证了的代码要考虑一种方法,将已有的实现各种功能的代码重用大型软件或信息系统中可以使用函数库、方法库、模型库等COM为解决更为复杂的软件复用和互操作问题,微软提出了COM/DCOM标准。COM:组件对象模型(ComponentObjectModel)是一种二进制标准,允许对象之间跨进程、跨计算机调用。COM只是一种标准,只要遵守该标准,即可跨语言甚至跨计算机相互调用•基于COM/DCOM,微软推出了ActiveX技术,可以使软件组件在网络环境中进行操作不用知道代码就能使用别人编写好的程序功能。编程轻松多了!可以通过网络调用别人编写好的程序功能。功能强大多了!我也可以编写组件,即为别人提供服务,又保护我的源代码。在Word中可以插入并编辑Excel图表校园办公系统网络插件基于COM技术运用COM技术,增强了软件互操作性,实现了很多功能运用组件技术,编写程序过程发生了巨大的变化•所有程序界面元素,如按纽、文本框、输入输出设置都可以通过控件实现•各种专业功能,可以使用专业控件实现组件(Component)也称“控件”(controller),是具有某种特定功能,能独立于应用程序而独立存在,具有与外部程序或其他组件相链接的标准接口,可以用来组装或构建其他程序单元的二进制模块概念:组件概念:GIS组件遵循COM接口,具有GIS空间信息处理功能,用于进行二次开发的二进制模块。这种特定的组件称为GIS组件2.组件式GIS生产汽车:发动机来自A公司轮胎来自B公司其他设备来自C公司生产的过程就是将各个部件安装、调试各个部件的设计、性能优化、质量控制,交给其他厂家完成,汽车生产商并不直接参与运用组件式GIS进行开发运用组件技术开发GIS应用系统:用户界面使用VB开发空间数据管理与处理使用GIS组件实现其他功能也可以使用相应组件实现在可视化编程环境下,使用相应GIS组件产品,实现GIS功能。GIS组件的设计、实现、对数据的处理、空间图形的显示等,无须考虑。土地资源评价与管理信息系统组件式GIS系统的特点•小巧灵活、价格便宜•开发简捷•大众化组件GIS的不足•与专业的GIS客户端软件相比,采用构件技术不可避免的带来效率上的相对低下,这在访问超大空间数据(如大数据量的遥感图象)的时候表现得尤为明显;•支持的空间数据量有限;•支持的功能有限,由于是构件,只覆盖了GIS系统的部分功能,于是对于特殊领域,它就显得无能为力;GIS组件产品•GIS组件的代表作应首推MapObjects(现在为ArcObjects)以及MapX。其中MapObjects由全球最大的GIS厂商ESRI(美国环境系统研究所)推出;MapX由著名的桌面GIS厂商美国MapInfo公司推出。功能MapObjectsMapX显示的地图数据格式Arcview的SHP、ARC/INFO的coverage、SDE图层MapInfo的数据格式叠加栅格图像有对地图的常用操作放大、缩小、漫游等图层控制增加、移除、设置当前层属性数据绑定有地图信息查询方式1.通过鼠标选取特征;2.通过SQL查找特征;3.通过空间操作选取要素专题地图较弱有GPS集成有用户绘图图层无有生成/编辑地图对象较弱地图标注有地图符号化较弱较强分析功能有?地理编码有可使用的开发语言VC、VB、PowerBuilder、Delphi、Access等VC、VB、PowerBuilder、Delphi、LotusNotes等GIS工具软件介绍软件,是“固化”的思想。——杨芙清ESRI(EnvironmentalSystemsResearchInstituteInc.)•1969年成立于,公司主要从事GIS工具软件的开发和GIS数据生产。•ArcInfo:WorkstationArcInfo和DesktopArcInfo。•WorkstationArcInfo基于拓扑数据模型,实现了图库(MapLibrary)的管理,并且具有了栅格数据的分析功能,支持栅格矢量一体化查询和叠加显示。•ArcInfo还提供了二次开发语言AML以及开放开发环境ODE,以便于用户定制自己的GIS应用。•WorkstationArcInfo提供了最基本的GIS功能,包括数据录入和编辑、投影变换、制图输出、查询分析及其分析功能(缓冲区分析、叠加复合分析等等)。WorkstationArcInfo的扩展模块(1)•TIN:基于不规则三角网的地表模型生成、显示和分析模块,可以根据等高线、高程点、地形线生成DEM,并进行通视、剖面、填挖方计算等。•GRID:栅格分析处理模块,可以对栅格数据进行输入、编辑、显示、分析、输出,其分析模型包括基于栅格的市场分析、走廊分析、扩散模型等。•NETWORK:网络分析模块,提供了最短路径选择、资源分配、辖区规划、网络流量等功能,可以应用于交通、市政、电力等领域的管理和规划。•ARCSCAN:扫描矢量化模块。WorkstationArcInfo的扩展模块(2)•ARCSTORM:基于客户机/服务器机制建立的数据库管理模块,可以管理大量的图库数据。•COGO:侧重于处理一些空间要素的几何关系,用于数字测量和工程制图。•ArcPress:图形输出模块,可以将制图数据转换成为PostScript格式,并可分色制版。•ArcSDE:SDE指空间数据引擎(SpatialDatabaseEngine),它是一个连续的空间数据模型,通过它可以将空间数据加入到关系数据库管理系统中去,并基于客户机/服务器机制提供了对数据进行操作的访问接口,支持多用户、事物处理和版本管理。用户可以以ArcSDE作为服务器,定制开发具体的应用系统。ARC/INFO的图库管理图层图块•地图数据纵向分为“图层(Layer)”,而水平方向分为“图块(Tile)”。地图(Map)•为了能够管理分布在不同图幅的多个专题要素,在ARC/INFO的图库中,把地图数据纵向分为“图层(Layer)”,而水平方向分为“图块(Tile)”,如图A2-1所示。•图A2-1:ARC/INFO的图库管理•在上图中,描述同一区域的不同专题图块构成一个“地图(Map)”,基于这种方式的管理,可以根据内容或区域范围任意调入相关的数据,并且便于实现数据共享,和并发访问控制。DesktopArcInfo•应用:–ArcMap:实现了地图数据的显示、查询和分析;–ArcCatalog:用于基于元数据的定位、浏览和管理空间数据;–ArcToolbox:由常用数据分析处理功能组成的工具箱。ArcViewGIS•ESRI的桌面GIS系统•以工程为中心,实现了对地图数据、结构化的属性数据、统计图、地图图面配置、开发语言等多种文档的管理•提供脚本语言Avenue用于定制系统•以“插件”的形式提供了一些扩展模块,包括:–SpatialAnalyst:栅格数据的建模分析;–NetworkAnalyst:网络分析;–ArcPress:制图输出;–3DAnalyst:利用DEM实现三维透视图的生成;–ImageAnalyst:影像分析处理;–TrackingAnalyst:通过直接接收、回放实时数据,实现对GPS的支持。•MapObjects是一组供应用开发人员使用的GIS功能OCX(OLECustomControl)控件,用户可以采用其它的支持OCX的开发平台,如VisualBasic,Delphi等,集成MapObjects,建立具体的应用系统。•ArcFM,支持公共设施规划、管理和服务的模块。•InternetMapServer(IMS),实现了因特网上地理数据发布功能。MapObject数据源:•Shape文件(矢量形式,适合中小型地图数据)、•图像文件(栅格或遥感纠正后的图像)•属性表(ODBC装入)•通过ESRI专用数据库引擎连接的专用数据库(网络上通过专用数据库引擎SDE连接的UNIX服务器,大型省、国家道路网等需要)。Shape文件•一个Shape文件(包含一种图形类型):一个主文件、一个索引文件和一个dBase表三个文件组成。•简单矢量数据格式,包含位置信息和属性信息,无拓扑。•主文件(*.Shp):包含几何形状,直接存取、变长记录的文件。每个记录存储一个对象的几何信息(存储其所有顶点)•索引文件(*.shx):包含数据的索引值,记录主文件距离主文件头的偏移。•dBase表(*.dbf)包含几何图形的属性,一条记录对应一个对象,属性和对象的练习是基于recordnumber的,•Shaper文件包含的几何信息:PointsPolyLinesPolygonsMultiPointsMultiPatchsMapInfo产品公司•1986年成立于美国致力于提供先进的数据可视化、信息地图化技术,软件代表是桌面地图信息系统软件——MapInfo。•MapInfoProfessional是其主要的软件产品–支持多种本地或者远程数据库,较好地实现了数据可视化,生成各种专题地图。–能进行一些空间查询和空间分析运算,如缓冲区等等,并通过动态图层支持GPS数据。•MapBasic是为在Mapinfo平台上开发用户定制程序的编程语言,它使用与BASIC语言一致的函数和语句,便于用户掌握。通过MapBasic进行二次开发,能够扩展MapInfo功能,并与其它应用系统集成•MapInfoProServer是应用于网络环境下的地图应用服务器,它使得MapInfoProfe