文档库 最新最全的文档下载
当前位置:文档库 › ArcGIS二次开发

ArcGIS二次开发

ArcGIS二次开发
ArcGIS二次开发

第一章z开发基础

1.1组件对象模型

在明确讨论COM之前,有必要先一般性地思考一下软件组件使用的广泛性。在软件组件背后有许多的驱使因素,但最基本的就是软件开发是个昂贵和耗时的风险行为。

在理想的世界里,假如曾经写了一段代码,然后通过不同的开发工具一次一次的反复使用它,这种情况是可能的,即便是在最初的开发者不能预见的环境下也能使用。理想情况下,对最初开发者生成的函数功能的改变能在不需要目前用户改变和重编译他们的代码情况下实现。

早期重用代码块的尝试就是创建类库的进展,这些类库通常用C++开发。早期的尝试有很多的限制,较为明显的是:共享系统组件的困难(共享二进制C++组件是非常困难的——大部分的尝试是共享源代码);不重新编译就很难保存和更新C++组件的问题;缺乏好的建模语言和工具以及属性接口和定制工具。

为了解决这样那样的一些问题,许多软件工程师开始采用基于组件的方法进行系统开发。一个软件组件就是一个可重用代码的二进制单元。

已经出现了几个不同但相互重叠的开发和共享组件标准。微软的COM已成为建立交互式桌面应用程序事实上的标准。在互联网上,JavaBean是可行的技术。对象管理组(OMG)制定了粗粒度层次上适用于应用程序互操作的公用对象请求代理架构(CORBA)。

为了理解COM(以及所有基于COM的技术),认识到其不是一种面向对象语言而是一个协议或标准是非常重要的。COM不仅仅是一种技术,还是软件开发的一种方法论。COM定义了一种连接软件组件或模型的协议。通过使用这种协议,可以建立能在分布式系统中动态交互的可重用软件组件。

COM还定义了一种称作基于接口的编程模式。对象封装了能体现定义良好的接口后每个实例化对象特征的操作方法和数据。这增强了系统开发的结构化和安全性,因为一个对象的客户并不知道某个特定方法如何实现的任何细节。COM不规定应如何构建一个应用程序。语言、结构和实现细节都由使用COM的应用程序开发人员决定。

COM的确规定了一个对象模型和使COM对象能与其他COM对象交互的编程需求。这些对象可以位于单个过程中,在不同的过程中,或者甚至在远程机器上。它们可以用其他语言编写,也可以用完全不同的方式开发。这就是COM被认为是二进制规范或标准的原因—它是一个在程序被编译为二进制机器代码后才应用的标准。

COM允许对象在二进制水平上重用,意味着第三方开发者即使从最底层扩展系统也不需要访问这些对象的源代码、头文件或对象库。

组件、对象、客户和服务器

不同的文件中组件(components)、对象(objects)、客户(clients)和服务器(servers)表示不同的意思(各种文件用这些术语指代相同的事物,使得术语使用更加混乱)。因此,定义这本书所要使用的术语是非常有必要的。

COM是一种客户/服务器(C/S)架构。服务器(或对象)提供某种功能,而客户使用这种功能。COM使客户和对象之间的交流变得简单。一个对象可以同时是一个客户的服务器和其他对象服务的客户。

客户及其服务器可以存在于同一个进程中或不同的进程中。入进程服务被打包成动态链接库(DLL)格式,当客户第一次访问这些服务时会加载这些DLL到客户的地址空间中。出进程服务被编译为可执行文件并在它们自己的地址空间中运行。COM这种差异对客户透明。

在创建COM对象时,开发者必须了解对象驻留在什么类型的服务器中,但如果对象的创建者正确地实现了它们,打包并不会影响客户对对象的使用。

这两种对称相反的打包方法各有优缺点。DLLs能更快速的装载到内存中,且调用一个DLL函数速度较快。另一方面,EXEs(可执行文件)能够提供更健壮的解决方案(如果服务器失败,客户端不会崩溃),同时安全性能更好,因为服务器有其自己的安全保障。

在一个分布式系统中,EXEs更灵活,即使服务器与客户端有不同的字节顺序也不会有什么问题。大多数ArcObjects服务被打包为入进程服务(DLLs)。稍后,用户将看到使用入进程服务的性能优势。

在一个COM系统中,客户端或功能的使用者与功能的提供者,对象完全相分离。客户端需要知道所有知识就是可用的功能;有了这些知识,客户端就可以调用对象中的方法并期望对象作出响应。这样,

COM可以认为是客户端和服务器之间的一种协议。如果对象违反了这种协议,那么系统的行为就不能预知。这样,COM开发是基于功能实现者和功能使用者间相互信任基础上的。

在ArcGIS应用程序中,许多对象通过其接口提供了几千个属性和方法。当使用ESRI对象库时,可以假定所有这些属性和方法是完全实现了的,如果它们列在对象图中,就可以使用它们。

COM类和接口(COM CLASSES AND INTERFACES)使用COM开发就意味着用接口开发,即所谓的基于接口的编程模式。对象间的所有通信都是通过其接口实现的。COM接口是抽象的,意味着没有与接口相关联的实现;与接口关联的代码都来自类的实现。接口规定了对选择用于实现接口的对象可以作什么请求。

接口的实现方法随对象不同而不同。这样对象继承了接口类型而不是接口的实现,这称为类型继承。功能用接口来抽象模拟并在类的实现中实现。类和接口通常被称为COM的“什么”和“怎么”。接口定义对象能做什么,而类定义怎么做。

COM类提供了一个或多个接口的代码,从而在类中完全封装了其功能。

两个类可以具有相同的接口,但它们实现这些接口的方法可能完全不同。通过这种方式实现接口,COM展示了经典的面向对象的多态行为。COM不支持多重继承概念,但由于单个类能实现多个接口,所以这不是一个缺陷。关于多态行为可以看左边的模型图。

ArcObjects中开发者必须理解的类有三种类型:抽象类(abstract

Classes)、组件对象类(coclasses)和类(classes)。抽象类不能创建对象,只是对其子类的实例化进行了规定(通过类型继承)。ArcObjects的Dataset或Geometry类就是抽象类的例子。不能创建Geometry类型的对象,但可以创建Polyline类型的对象。Polyline 对象实现了在Geometry基类中定义的接口,因此在基于对象类中定义的任何接口都可以从组件对象类访问。

组件对象类是公开可创建类。换言之,COM可以创建组件对象类的实例并把实例对象提供给客户端,从而使客户端能使用这个类接口定义的服务。类不能公开创建,但类的对象可以用ArcObjects中其它对象来创建并提供给客户端使用。

1.1ArcGIS Engine介绍

ArcGIS 9 概览

ArcGIS 9 是建立完整GIS的一个GIS软件产品集成体系。该体系建立在ArcObjects这个共享的GIS软件组件公用库基础之上。ArcGIS 9由四个关键部分组成:

ArcGIS Desktop—高级GIS应用程序的一个集成套件。

ArcGIS Engine—通过多种应用程序接口建立自定义应用程序的嵌入式GIS组件库。

ArcGIS Server—为企业和Web计算框架建立服务器端GIS应用程序的一个平台,可用于建立Web服务和Web应用程序。

ArcIMS—通过开放Internet协议发布地图、数据和元数据的GIS Web服务器。

ArcGIS的开发途径多种多样,开发人员可以通过以下几种方法进行开发:

配置/定制诸如ArcMap和ArcCatalog等ArcGIS应用程序。

扩展ArcGIS的结构和数据模型。

用ArcGIS Engine将地图和GIS功能嵌入到其他应用程序中。

用ArcGIS Engine建立和部署自定义桌面应用程序。

用ArcGIS Server建立Web服务和Web应用程序。

ArcGIS Engine是开发人员用于建立自定义应用程序的嵌入式GIS 组件的一个完整类库。开发人员可以使用ArcGIS Engine将GIS功能嵌入到现有的应用程序中,包括Microsoft Office的Word和Excel等产品,也可以建立能分发给众多用户的自定义高级GIS系统应用程序。ArcGIS Engine由一个软件开发工具包和一个可以重新分发的、为所有ArcGIS应用程序提供平台的运行时(runtime)组成。

ArcGIS Engine的五个组成部分概括如下:

1.基本服务—由GIS核心ArcObjects构成,几乎所有GIS应用程序都需要,如要素几何体和显示。

2.数据存取—ArcGIS Engine可以对许多栅格和矢量格式进行存取,包括强大而灵活的地理数据库。

3.地图表达—包括用于创建和显示带有符号体系和标注功能的地图的ArcObjects,及包括创建自定义应用程序的专题制图功能的ArcObjects。

4.开发组件—用于快速应用程序开发的高级用户接口控件和用于高效开发的一个综合帮助系统。

5.运行时选项—ArcGIS Engine运行时可以与标准功能或其他高级功能一起

部署。

除运行时选项外,这些部分都可以通过ArcGIS Engine的软件开发工具包获得。ArcGIS Engine运行时及其选项虽然也是自定义GIS应用程序开发不可或缺的一部分,但涉及到特定的应用程序部署,因此被

认为是一个独立的组成部分。

ArcGIS Engine软件开发工具包

ArcGIS Engine开发工具包是一个基于组件的软件开发产品,用于建立和部署自定义GIS和制图应用程序。ArcGIS Engine开发工具包不是一个终端用户产品,而是一个应用程序开发人员的工具包。可以用ArcGIS Engine开发工具包建立基本的地图浏览器或综合、动态的GIS编辑工具。使用ArcGIS Engine开发工具包,开发人员在建立定制的地图接口方面具有前所未有的灵活性。开发人员可以使用几个API中的任何一个来建立独一无二的应用程序,或者将ArcGIS Engine组件与其他软件组件组合起来实现地图与用户管理信息之间的协同关系。

使用ArcGIS Engine,地图本身可以是应用程序的一个次要元素或核心部分。例如,如果应用程序的重点是有关商业信息的数据库,当应用程序的用户执行一个数据库查询时,ArcGIS Engine可以使该应用程序显示一幅高亮显示感兴趣商业区位置的地图。

ArcGIS Engine开发工具包可以访问GIS组件或ArcObjects的大型集合,这些GIS组件或ArcObjects分别属于前面讨论过的类目—基本服务、数据存取和地图表达。ArcGIS Engine的第四个部分—开发组件也包含在ArcGIS Engine开发工具包中。这些都是用于建立高质量地图用户接口的增值开发控件。ArcGIS Engine为辅助应用程序开发提供了下列ArcGIS控件或可视化组件:

MapControl

PageLayoutControl

SceneControl

GlobeControl

ToolbarControl

TOCControl

ReaderControl

ToolbarControl中使用的命令、工具和菜单集合

ArcGIS Engine运行时(Runtime)

ArcGIS Engine的最后一个组件就是

其运行时选件。用ArcGIS Engine软件

开发工具包建立的所有应用程序为成

功执行都需要合适级别许可的ArcGIS

Engine运行时。ArcGIS Engine运行时

是建立ArcGIS Desktop的平台,因此,

在ArcGIS Engine应用程序开发人员允

许的情况下,ArcGIS Desktop应用程序的用户可以执行基于 Engine的自定义应用程序。ArcGIS Engine运行时有多种选项,从标准版本一直到企业版本。

标准ArcGIS Engine功能

标准 Engine运行时提供所有ArcGIS应用程序的核心功能。这个级别的ArcGIS Engine运行时可以操作几种不同的栅格和矢量格式、进行地图表达和创建以及通过执行各种空间或属性查询查找要素。这个

级别的ArcGIS Engine运行时还可以进行基本数据创建、编辑Shapefile和简单的个人地理数据库及GIS分析。

地理数据库更新选项

ArcGIS Engine运行时地理数据库更新选项增加了创建和更新多用户企业地理数据库的功能,包括操作程式(schema)和版本地理数据库。地理数据库更新选项开放了ArcGIS Engine运行时运行自定义方案所需的几个必要的ArcObjects。这些方案包括GIS数据自动化和编译及地理数据库要素的创建和维护。地理数据库更新选项提供了建立诸如拓扑、子类和几何网络等地理数据库行为的程序实现。

通过ArcSDE访问RDBMS的ArcGIS Engine开发人员可以为安装和配置了ArcGIS Engine运行时地理数据库更新选项的终端用户建立和部署多用户编辑应用程序。

ArcGIS Engine的其他选项

ArcGIS Engine运行时还有其他三个运行时选项:

1. 空间分析选项—ArcGIS Engine运行时空间分析选项提供了强大的功能集,允许应用程序创建、查询和分析基于像元的栅格数据。这种分析允许用户生成其数据方面的信息、确定空间关系、查找合适地址及计算从一个点到另一个点的旅行累积成本。这个运行时选项支持的其他高级应用程序还包括坡度、坡向计算和用数字高程模型生成等高线等功能。

2. 3D分析选项—ArcGIS Engine运行时3D分析选项实现了数据的三维可视化。与标准ArcGIS Engine相比,这个选项补充了从多个视

点观察表面和确定一个选择位置的可视区的组件。SceneControl和GlobeControl提供接口浏览用于可视化数据、创建表面和分析表面的多层3D数据和全球数据。

3. StreetMap USA选项—StreetMap USA选项提供了美国街道制图、地址匹配和基本路径选择功能。StreetMap图层自动管理、标注和绘制要素,如地方里程碑、街道、公园、水体及其他要素,生成了美国丰富的街道网络地图。所有数据都存储在CD-ROM上的压缩格式文件中。

第二章ArcGIS Engine中的控件

ArcGIS控件是高级开发组件,首先它们允许开发人员建立和扩展GIS应用程序,其次它们提供了图形用户界面(GUI)。

下列所有ArcGIS控件都可以作为ActiveX控件、.NET Windows 控件和Visual JavaBean获得:

MapControl—类似于“数据(data)视图”

PageLayoutControl

ToolbarControl

TOCControl(内容表控件)

SceneControl

GlobeControl

ReaderControl

ArcGIS控件可以通过两种方式建立应用程序:首先,ArcGIS控

件可以嵌入到现有的应用程序中以增加制图功能;其次,ArcGIS控件可用于创建新的独立应用程序。在前一种情况中,单个的ArcGIS 控件可以嵌入到应用程序中,在后一种情况中,TOCControl和ToolbarControl可以与其他ArcGIS控件结合起来组成应用程序框架的组成部分。

为了使用ArcGIS控件有效地建立应用程序,应该理解所有ArcGIS控件共同的一些主题和概念。

嵌入式组件

每个ArcGIS控件都是一个嵌入式组件,可以拖放到可视化设计环境提供的容器窗体或对话框中。一旦放在容器内,就可以改变ArcGIS 控件的大小和位置,以便与其他嵌入式组件,如命令按钮和组合框等一起为应用程序提供用户界面。

属性页

一旦ArcGIS控件嵌入到容器中,通过右键点击该控件并选择弹出式菜单中的“属性”菜单项,就可以在大多数可视化设计环境中访问各个ArcGIS控件的属性页集合。这些属性页提供了选择控件属性和方法的快捷方式,使开发人员只需写很少代码甚至不用写代码就可以建立应用程序。

事件

每个ArcGIS控件都会响应终端用户的键盘和鼠标交互而触发事件。响应发生在控件内的行为会触发一些其他事件。例如,当装载一个地图文档到MapControl时,就会触发OnMapReplaced事件;或

者当通过拖放将一个对象在MapControl上拖动时,就会触发OnOleDrop事件。

伙伴控件

ToolbarControl和TOCControl都要与另一个“伙伴控件”协同工作。“伙伴控件”一般是MapControl、PageLayoutControl、ReaderControl、SceneControl或GlobeControl。“伙伴控件”可以在设计时通过控件的属性页设置(在支持属性页功能的开发环境中可以这样设置),或者用SetBuddyControl方法编程设置。

控件命令

ArcGIS Engine提供了一系列命令、工具和菜单与ArcGIS控件协同工作。例如,MapControl和PageLayoutControl有一套地图导航、要素选择和图形元素命令与其协同工作。类似的,SceneControl、GlobeControl和ReaderControl也有一套命令与其协同工作。对于使用单个控件的应用程序,这些命令可以通过编程创建命令的一个新例程并将该控件传递给命令的OnCreate事件而直接操作控件。对于使用ToolbarControl及其“伙伴控件”的应用程序,这些命令可以通过设计阶段设置属性页或通过编程设置,或者如果ToolbarControl处于定制模式可以在运行时由终端用户设置。

地图制作

ArcGIS Desktop应用程序可用于预制作能被装载到ArcGIS控件中的文档,以便快速生产高质量的地图。例如,可以用ArcMap制作能被装载到MapControl和PageLayoutControl中的地图文档。预

先制作文档可以节省大量时间,因为它不必从零开始编程建立地图及其符号体系。一旦文档被装载到ArcGIS控件中,如果随后需要改变其外观,就可以通过对象模型编程访问任何图层、元素和符号。

下表总结了可以被装载到各个ArcGIS控件中的文档类型

2.1MapControl和PageLayoutControl控件

MapControl和PageLayoutControl对应于ArcMap桌面应用程序的“数据”和“布局”视图。MapControl封装了Map对象,而PageLayoutControl封装了PageLayout对象。用ArcMap创作的地图文档可以装载到MapControl和PageLayoutControl中,以节省开发人员编程创作地图的时间。

MapControl和PageLayoutControl不仅可以读取地图文档,它们还可以写入地图文档(*.mxd)。这两个控件都实现了IMxContents接口,使地图文档(MapDocument)对象可以将MapControl和PageLayoutControl的内容写到一个新的地图文档中。

MapControl上存在诸如TrackRectangle、TrackPolygon、TrackLine和TrackCircle等帮助方法,用于追踪或“橡皮圈住(rubber

banding)”显示上的几何图形(Shape)。VisibleRegion属性可用于更改MapControl显示区内的几何图形。PageLayoutControl上存在诸如FindElementByName和LocateFrontElement等帮助方法,以帮助开发人员管理元素,而Printer和PrinterPageCount属性与PrintPageLayout方法则共同完成打印任务。

2.2GlobeControl和SceneControl控件

GlobeControl和SceneControl对应于ArcGlobe和ArcScene桌面应用程序的三维视图。GlobeControl封装了GlobeViewer对象,而SceneControl封装了SceneViewer对象。用ArcGlobe和ArcScene应用程序创作的Globe和Scene文档可以分别装载到GlobeControl和SceneControl中,以节省开发人员编程创作这两种地图的时间。GlobeControl和SceneControl都具有内置的导航功能,允许终端用户移动三维视图和可视化三维数据,而不必使用控件命令或自定义命令。要使用内置的导航工具,必须通过属性页或者编程设置Navigate 属性。终端用户可以用鼠标左键对显示进行前后左右的移动,使用鼠标右键放大和缩小显示。

2.3ReaderControl控件

ReaderControl对应于ArcReader桌面应用程序的“数据”和“布局”视图及其内容表(TOC)。ReaderControl还包含ArcReader桌面应用程序使用的内部窗口和工具,如Find窗口和Identify工具等。用ArcMap桌面应用程序创作并用ArcGIS Publisher扩展模块发布的发布地图文件(PMF)如果在发布时设置为允许装载到定制的

ArcReader应用程序中,则可以装载到ReaderControl中。ReaderControl中有一个简单的自包含对象模型,提供ArcReader桌面应用程序的所有功能而不需要访问ArcObjects。这样,用ReaderControl开发应用程序就不需要有任何使用ArcObjects开发程序的经验。但是,如果发布地图文件在发布时设置为不受限制地访问其内容,开发人员就可以访问底层的ArcObjects,并以与MapControl 和PageLayoutControl相似的方式使用ReaderControl进行开发。

但ArcReaderControl并不能通过ArcGIS Engine获得,在这里提出来是因为该控件与ReaderControl很相似;ArcReaderControl也有与ReaderControl相同的简单自包含对象模型。但是,ArcReaderControl不能用作“伙伴控件”以便与TOCControl或ToolbarControl协同工作,而且开发人员也不能访问其底层的ArcObjects。使用ArcReaderControl进行开发需要ArcGIS Publisher 扩展模块,而且ArcReaderControl可以部署到有ArcReader桌面应用程序的任何机器上。

2.4TOCControl与ToolbarControl控件

TOCControl

TOCControl要与一个“伙伴控件”协同工作。“伙伴控件”可以是MapControl、PageLayoutControl、ReaderControl、SceneControl 或GlobeControl。“伙伴控件”可以在设计时通过TOCControl属性页设置(在支持属性页功能的开发环境中可以这样做)或在驻留TOCControl的容器被显示时用SetBuddyControl方法通过编程设

置。TOCControl的每个“伙伴控件”都实现了ITOCBuddy接口。TOCControl用“伙伴控件”来显示其地图、图层和符号体系内容的一个交互树视图并保持其内容与“伙伴控件”同步。例如,如果TOCControl的“伙伴控件”是一个MapControl,而且从该MapControl中删除了一个图层,则该图层也会从TOCControl中删除。同样地,如果终端用户与TOCControl交互并取消了某个图层的Visibility复选框,则该图层在MapControl中不再可见。ToolbarControl

ToolbarControl要与一个“伙伴控件”协同工作。“伙伴控件”可以是一个MapControl、PageLayoutControl、ReaderControl、SceneControl 或GlobeControl。“伙伴控件”可以在设计时通过ToolbarControl属性页设置(在支持属性页功能的开发环境中可以这样做)或在驻留ToolbarControl的容器被显示时用SetBuddyControl方法通过编程设置。ToolbarControl可以驻留操作其“伙伴控件”显示的命令、工具和菜单。

ToolbarControl的每个“伙伴控件”都实现了IToolbarBuddy接口。这个接口用于设置“伙伴控件”的CurrentTool属性。例如,设想驻留了一个“页面放大”工具并有一个PageLayoutControl作为其“伙伴控件”的ToolbarControl。当终端用户单击该ToolbarControl上的“页面放大”工具时,该“页面放大”工具就会成为PageLayoutControl 的CurrentTool。“页面放大”工具的实现会查询ToolbarControl以访问其“伙伴控件”(PageLayoutControl)并取回该PageLayoutControl。

然后该PageLayoutControl提供实现显示终端用户拉动鼠标所画的框并改变布局的范围。

2.5应用实例

第三章几何对象和空间坐标

3.1Geometry对象

Geometry是ArcGIS Engine中使用最为广泛的对象集之一,用户在创建、删除、编辑和进行地理分析的时候,就是处理一个包含几何形体的矢量对象;除了显示要素意外,控件对象选择,要素符号化,标注要素,编辑要素都需要Geometry参与。下图是Geometry的主要几何对象模型图,接下来将一一介绍这些几何对象。

3.1.2Point和MultiPoint几何对象

Point几何对象

Point:是一个0维的几何图形,具有X,Y坐标值,以及一些可

选的属性:如高程值(Z值),度量值(M值) 和ID号,点对象用于描述精确定位的对象,例如一个电话亭在一个城市的精确位置以下代码演示如何创建一个Point对象:

MultiPoint几何对象

MultiPoint:点集对象是一系列无序的点的群集,这些点具有相同的属性信息。例如可以用一个点集来表示整个城市天然气调压站。如下图所示:一个Multipoint对象由6个Point对象组成。

以下代码片段演示如何构建Multipoint对象:

//定义第一个点

IPoint pPoint1 = new PointClass();

pPoint1.X = 100;

pPoint1.Y = 100;

//定义第二个点

IPoint pPoint2 = new PointClass();

pPoint2.X = 200;

pPoint2.Y = 200;

……//构建其他点

IPointCollection pMultipoint = new MultipointClass();

object o=Type.Missing;

//添加第一个点,不需要设置点的顺序,参数设置为

Type.Missing

pMultipoint.AddPoint(pPoint1, ref o, ref o);

//添加第二个点,不需要设置点的顺序,参数设置为

Type.Missing

pMultipoint.AddPoint(pPoint2, ref o, ref o);

……//添加其他点

3. 1.3Segment几何对象

ArcGISEngine二次开发——提高篇

ArcGIS Engine二次开发 ——提高篇

1缩略图(鹰眼) 鹰眼功能是GIS的主要功能之一,当地图范围很大时,它可以很好的为用户指明当前地图的范围。在本小节中我们将学习如何制作这种鹰眼。 1.1添加控件 新建一个C#.Net项目,项目名称为OverView,将Form1的名字设置为MainForm,并添加ToolbarControl 、两个MapControl和LicenceControl等四个控件。布局如下图所示。左边的axMapControl1用于地图数据显示和操作,右边axMapControl2用于鹰眼显示。 图 1 界面布局 在ToolbarControl 加载添加数据按钮和地图浏览的功能按钮,如下图所示,并将ToolbarControl的伙伴控件设为axMapControl1。 图2添加按钮 1.2代码添加及解释 鹰眼用来显示主窗体当前视图范围在全景视图中的位置,在ArcMap中使用一个线框在鹰眼视图中标识。当主视图中的视图范围改变时,鹰眼中的线框随之改变,当拖动鹰眼视图中的红线框时,主视图中的视图范围也随之改变。 下面开始实现鹰眼功能,添加、、 三个引用。首先在axMapControl1中视图范围改变时鹰眼窗体要做出对应的响应,即绘制线框并显示,在OnExtentUpdated事件中添加代码如下: private void axMapControl1_OnExtentUpdated(object sender, e) { et项目,项目名称为Buffer,将Form1的名字设置为MainForm,并添加ToolbarControl 、MapControl、TOCControl、LicenceControl和Button等五个控件。并将ToolbarControl 、TOCControl的伙伴控件设为MapControl,Button控件的Name属性设定为btnBuffer,Text属性设定为“缓冲区分析”。控件布局效果如下图所示。 图3控件布局效果 在ToolbarControl 加载添加数据按钮和地图浏览的功能按钮,如下图所示。 图4添加按钮 1.2.1代码添加及解释 首先添加如下四个命名空间的引用。 在使用Geoprocessor工具实现缓冲区分析时,需要首先定义一个Geoprocessor对象,因为命名空间“也包含Geoprocessor类,为了避免混淆,我们使用命名空间来定义Geoprocessor,然后设置Geoprocessor中的环境参数,这里我们使用默认参数。然后定义一个操作类Buffer,并设置参数,生成缓冲区的参数包含原始图层,缓冲半径和输出路径,最后使用已定义的Geoprocessor对象执行即可。双击“生成缓存区”按钮,添加代码如下: private void btnBuffer_Click(object sender, EventArgs e) {

Arcgis二次开发软件安装教程

Arcgis二次开发软件安装教程 1.环境配置 Win7 32位系统,Arcgis for Desktop 10.2,jdk-8u101-windows-i586,eclipse-jee-mars-2-win32,ArcGIS_Engine_DevKit_Windows_102_134944 64位win7系统可参考文档:https://www.wendangku.net/doc/d812144862.html,/shugui/p/3795803.html 2.安装过程 1)安装Arcgis for Desktop 10.2 下载地址 https://https://www.wendangku.net/doc/d812144862.html,/share/link?shareid=4262105946&uk=1913532136#path=%252 F 安装教程:https://www.wendangku.net/doc/d812144862.html,/article/e73e26c0cb5c1324adb6a791.html 2)安装jdk 下载地址 https://www.wendangku.net/doc/d812144862.html,/technetwork/java/javase/downloads/jdk8-downloads-2133151. html

具体安装过程参考 https://www.wendangku.net/doc/d812144862.html,/article/6dad5075d1dc40a123e36ea3.html 3)安装Eclipse 下载地址:https://https://www.wendangku.net/doc/d812144862.html,/downloads/packages/release/Mars/2 解压后即可使用 安装教程参考:https://www.wendangku.net/doc/d812144862.html,/article/d7130635194f1513fcf47557.html 4) 安装windowbuilder插件 找到对应版本的windowbuilder,本教程使用4.5版本 https://www.wendangku.net/doc/d812144862.html,/windowbuilder/download.php eclipse在线更新 打开eclipse-->help-->Install New Software-->Add 在location中粘贴刚才复制的链接,OK,等待加载插件信息

ArcGIS_Engine二次开发——基础篇

ArcGIS_Engine二次开发——基础篇 ArcGIS Engine二次开发 ——基础篇

1ArcGIS Engine二次开发——基础篇 1.1第一个简单的A rcGIS Engine地图显示程序 这个例子将引导您创建第一个简单的地图显示程序,并添加基本的缩放和漫游功能。如果您之前没有接触过ArcGIS Engine的开发,那么这个例子是您迈入ArcGIS Engine二次开发大门的极好例子,将从零开始引导您一步一步完成任务。 1.1.1创建一个新的工程 首先打开Microsoft Visual Studio 2005,点击菜单栏中的“文件”—>“新建”—>“项目”,在弹出的对话框中选择新建一个Visual C#的Windows应用程序,之后更改项目名称为“地图浏览”,更改文件的路径为个人实习文件夹,点击“确定”即可。 图1新建项目对话框 选中项目“地图浏览”中的窗体“Form1”,修改其Name属性为“MainForm”,Text 属性为“地图浏览”,

图2窗体命名 1.1.2添加控件及引用 点击编译器最左侧的“工具箱”(不存在时可通过“视图”“工具箱”打开),在弹出的选择项中找到“ArcGIS Windows Forms”项,单击其中的MapControl,之后在Form1的空白处单击鼠标左键不放并拖拽鼠标,直到调整MapControl到合适的大小再松开鼠标(您也可以直接在工具箱中双击MapControl,该控件则会自动加入到Form1中)。用同样的方法,再将LicenseControl添加到Form1中。 图 3 打开工具箱

图4工具箱 如果您在工具箱中找不到MapControl,则请依次尝试以下两种解决方案。首先单击工具栏,待工具箱弹出之后,在工具箱的任意位置上单击鼠标右键,从弹出菜单中选择“重置工具箱”。如果这一步操作之后仍然无法看到MapControl,则在工具箱的任意位置上单击鼠标右键,找到“常规”选项卡,然后在“常规”选项卡上单击鼠标右键,在弹出菜单中单击“选择项(I)…”,在弹出的对话框中选择“.NET Framework组件”,找到“LicenseControl”和“MapControl”,将这两项前的复选框打上勾,最后点击确定即可(如果在“.NET Framework 组件”这个面板中找不到这两项,则选择“COM 组件”面板,在“ESRI LicenseControl”和“ESRI MapControl”前面打勾)。

VS2013中ArcGIS二次开发部分问题问题解决方法

VS2013中ArcGIS二次开发部分问题问题解决方法 1、VS2013中新建项目时没有ArcGIS模板解决办法: 安装ArcGIS10.x会自动生成C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\ArcGIS文件夹 和C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\CSharp\ArcGIS文件夹

打开vs2013安装目录: 将上面所说的两个ArcGIS文件夹复制到vs2013安装目录下对应的ItemTemplates\CSharp文件夹和ProjectTemplates\CSharp文件夹, 继续返回vs2013安装目录,找到devenv.exe文件,右击该文件选择属性----兼容性---以管理员身份运行此程序。

在开始菜单栏的所有程序中找到下图文件夹,打开Visual StudioTools, 如下图所示:以管理员身份运行VS2013开发人员命令提示,在打开的命令窗口输入devenv.exe /InstallVSTemplates后回车即可

2、vs2013中工具箱中没有ArcGIS控件解决方法: 在工具箱中右键添加选项卡,并起名为ArcGIS, 在ArcGIS下拉后的空白处右击选择项,在弹出的窗口中点击浏览 找到安装ArcObjects SDK for https://www.wendangku.net/doc/d812144862.html, Framework时的目录DeveloperKit10.2,打开该目录下的DotNet文件夹,选中ESRI.ArcGIS.AxControls.dll文件,

ArcGIS二次开发课程设计

地理信息系统GIS二次开发程序设计 实验报告 班级:10级测绘1班学号: 姓名: 指导教师:

面向接口编程 一、实验目的: 1.理解接口编程、面向对象编程的思想,两者的区别,以及各自的优缺点; 2.掌握AE接口实现图层加载的方法: IworkspaceFactory-->Workspace->IfeatureWorkSpace->IFeatrueClass->IFeature(); 3.理解并掌握使用UI进行属性查询和空间查询; 二.实验内容: 1. 利用IWorkSpace接口在Map中增加一个GeoDatabase图层; 2. 利用Imap的SelectBy*实现简单选择; 3. 利用IQueryFilter实现简单空间查询。(未实现) 三、实验过程 1.接口、面向接口编程基本知识点。 (1)接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则;是在一定粒度视图上同类事物的抽象表示。接口从更深层次的理解,应是定义(规范,约束)与实现(名实分离的原则)的分离。接口应有两类:第一类是对一个体的抽象,它可对应为一个抽象体(abstract class);第二类是对一个体某一方面的抽象,即形成一个抽象面(interface); 一个体有可能有多个抽象面。 (2)面向对象是指,我们考虑问题时,以对象为单位,考虑它的属性及方法;是与“面向过程”即“我们考虑问题时,以一个具体的流程(事务过程)为单位,考虑它的实现”相对应的。 面向对象实现了对象属性与行为的分离,对象之间通过消息进行通信;具有同一属性和行为的对象被抽象成类,每一个类是相同或相似属性和方法的封装;类与类之间具有继承和派生关系。 (3)面向接口与面向对象的区别: 接口设计与非接口设计是针对复用技术而言的,与面向对象(过程)是针对编程开发的对象而言的,不是同一感念。 interface关键字用来声明一个接口,它可以产生一个完全抽象的类,并且不提供任何具体实现。 2.GeoDatabase的数据加载: (1)理解 Workspace是一个容器,包含了空间和非空间数据集,如feature class,raster dataset,table。提供了一系列创建和操作数据集的方法。 FeatureClass 是空间事物的顶级类,类似与C#中的Object类,提供了一系列属性和方法。在同一个FeatureClass中的Feature具有相同的属性字段。 FeatureLayer是一个基于矢量数据的图层,典型的数据包括Geodatabase、coverage和shapefile等,FeatureLayer可以直接在MapControl中显示。

arcgis 二次开发

gis的开发方法有三种,即独立开发,宿主型二次开发,基于gis组件的二次开发,其中独立开发为底层开发,不依赖于任何gis工具软件,开发难度太大,后两者是基于一种软件的二次开发,这样的二次开发则相对较简单,他的好处也是显而易见的。 宿主型二次开发是指基于GIS平台软件上进行应用系统开发。大多数GIS 平台软件都提供了可供用户进行二次开发的脚本语言,如ESRI的ArcView提供 了Avenue语言,Maplnfo公司的MapInfo Professional提供了MapBasic语言 等等。用户可以利用这些脚本语言,以原GIS软件为开发平台,开发出自己的 针对不同应用对象的应用程序。这种方式省时省心,但进行二次开发的脚本语言, 作为编程语言,功能极弱,用它们来开发应用程序仍然不尽如人意,并且所开发 的系统不能脱离GIS平台软件,是解释执行的,效率不高。相比基于组件的二次开发可以根据自己的需要扩展系统的功能,并且可以脱离原gis平台软件,综合看来,单纯二次开发受gis基础平台提供的编程语言的限制,而基于组件式的二次开发不仅能提高开发效率,同时可靠性好,易于移植,便于维护。所以,结合gis基础平台软件与当今可视化开发语言的组件式二次开发成为gis开发的主流。但是二次开发也不是十全十美的,只要我们使其中的瑕疵减少,误差也就会减少。 ArcGIS Engine开发工具包是一个基于组件的软件开发产品,用于建立和部署自定义GIS和制图应用程序。ArcGIS Engine开发工具包不是一个终端用户产品,而是一个应用程序开发人员的工具包。可以用ArcGIS Engine开发工具包建立基本的地图浏览器或综合、动态的GIS编辑工具。使用ArcGIS Engine开发工具包,开发人员在建立定制的地图接口方面具有前所未有的灵活性。开发人员可以使用几个API中的任何一个来建立独一无二的应用程序,或者将ArcGIS Engine组件与其他软件组件组合起来实现地图与用户管理信息之间的协同关系。 (可选资料) 从第一个GIS系统一加拿大地理信息系统(CGIS)到目前用户可以自己定制 的GIS系统,GIS二次开发经历了巨大的变化。在这个发展过程中主要出现了两 种GIS二次方式,即宿主型二次开发和基于GIS组件的二次开发131。 GIS开发过程中常用的两种构架(c/s和B/S) 基于c/s结构的GIS是 由客户机完成GIS分析、输出工作。GIS数据和分析工具最初放在服务器上,运 行时下载到客户机,操作灵活。但是c/s应用软件模式大都是基于“胖客户机” 结构下的两层结构应用软件。客户端软件一般由应用程序及相应的数据库连接程 序组成,服务器端软件一般是某种数据库系统。客户机端软件的主要功能是处理 与用户的交互、按照某种应用逻辑实现与数据库系统的交互;服务器端软件的主 要功能是数据库系统根据客户端软件的请求进行数据库操作,然后将结果传送到 客户端软件。客户端软件与服务器端软件之问的通信主要是通过SQL语句。两层 C/S结构应用软件的开发工作主要集中在客户端,客户端端软件不但要完成用户

应用型ArcGIS开发的三种实现方式

应用型ArcGIS开发的三种实现方式 (1)独立开发 指不依赖于任何GIS工具软件,从空间数据的采集、编辑到数据的处理分析及结果输出,所有的算法都由开发者独立设计,然后选用某种程序设计语言,如Visual C++、Delphi等,在一定的操作系统平台上编程实现。这种方式的好处在于无须依赖任何商业GIS工具软件,减少了开发成本,但一方面对于大多数开发者来说,能力、时间、财力方面的限制使其开发出来的产品很难在功能上与商业化GIS工具软件相比,而且在购买GIS工具软件上省下的钱可能还抵不上开发者在开发过程中绞尽脑汁所花的代价。 (2)单纯二次开发 指完全借助于GIS工具软件提供的开发语言进行应用系统开发。GIS工具软件大多提供了可供用户进行二次开发的宏语言,如ESRI的ArcView提供了Aven ue语言,MapInfo公司研制的MapInfo Professional提供了MapBasic语言等等。用户可以利用这些宏语言,以原GIS工具软件为开发平台,开发出自己的针对不同应用对象的应用程序。这种方式省时省心,但进行二次开发的宏语言,作为编程语言只能算是二流,功能极弱,用它们来开发应用程序仍然不尽如人意。 (3)集成二次开发 集成二次开发是指利用专业的GIS工具软件,如ArcView、MapInfo等,实现GIS的基本功能,以通用软件开发工具尤其是可视化开发工具,如Delphi、V isual C++、Visual Basic、Power Builder等为开发平台,进行二者的集成开发。 集成二次开发目前主要有两种方式: 1.OLE/DDE 采用OLE Automation技术或利用DDE技术,用软件开发工具开发前台可执行应用程序,以OLE自动化方式或DDE方式启动GIS工具软件在后台执行,利用回调技术动态获取其返回信息,实现应用程序中的地理信息处理功能; 2. GIS 控件 利用GIS工具软件生产厂家提供的建立在OCX技术基础上的GIS功能控件,如ESRI的MapObjects、MapInfo公司的MapX等,在Delphi等编程工具编制的应用程序中,直接将GIS功能嵌入其中,实现地理信息系统的各种功能。

ArcGIS进行二次开发别人经验

请问怎样利用ArcGIS进行二次开发? 2012-10-05 17:42|分类:|浏览1995次 我装了arcgis10.上面有arcGlobe,arcSence,arcCatalog,arcMap.只有这些能进行开发吗?l 另外需要装arcgis object和arcEngine吗? 分享到: 2012-10-07 16:10提问者采纳 安装ArcGIS10.0后,装(如Visual Studio),如果已经有,跳过这一步直接安装ArcGIS SDK 及AE并授权,即可在中使用来做。 ArcGIS Map、Server、Catalog、Scene、Globe都是基于ArcGIS Object开发出来的产品;ArcGIS Engine也是基于ArcGIS Object的类库封装起来的一个开发产品,用来自定义开发C/S端应用GIS。 追问 我比较擅长使用C#,但是好像所提供的开发包没有支持c#语言的??我装的vs2010也是C#环境。 回答 好,C#属于.NET,装SDK For .NET就行了。 提问者评价 谢谢你耐心的指导,问题算是解决了。 想自学ArcGIS二次开发,Java语言 2012-03-28 12:11|分类:|浏览529次 想自学ArcGIS二次开发,使用Java语言,本人目前水平:C语言一点基础,做过谭浩强C程序设计上的大部分题,无实际开发经验,会一点ArcGIS简单操作。请问各位高手、大侠:我该如何入手,学习步骤、方法,再推荐一些书籍。谢谢! 分享到:

2012-03-28 15:25提问者采纳 要学开发,必须要先学Java语言,了解编程;之后要熟悉软件的架构与原理,然后你就可以进行的学习了。不过现实中用的ArcGIS Server开发比较多,学习的时候可以偏重些。 追问 能推荐些书籍吗,哪些书比较好,有没有一些相关学习资源? 回答 学习Java的话当然是《Java入门经典》 学习Server的话,比较好的书比较少,不过你可以看一下AE的书籍。当然如果你的英语比较好的话建议你上https://www.wendangku.net/doc/d812144862.html,和程序中自带的一些例子 用JAVA进行ARCGIS二次开发的源代码 2012-09-03 16:56提问者悬赏:5分||分类:|浏览19次 我有更好的答案 分享到: 1条回答 2012-09-04 20:00|三级最快回答 可用装好sdk for java,在program lifes下会有实例。。

ArcGIS二次开发测量功能

ArcGIS二次开发之实现测量功能 ArcGIS二次开发之实现测量功能,源代码如下:copyright dedecms public override void OnMouseDown(int Button, int Shift, int X, int Y) https://www.wendangku.net/doc/d812144862.html, { // TODO: Add Tool2.OnMouseDown implementation m_bInUse = true; m_pStartPoint = m_hookHelper.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y); } public override void OnMouseMove(int Button, int Shift, int X, int Y) { // TODO: Add Tool2.OnMouseMove implementation bFirstTime = false; IPoint pPoint; IRgbColor pRGBColor; ILine pLine; ISymbol pSymbol = null; double dAngle; double dDeltaX; double dDeltaY; double dDistance; IPolyline pPolyline; ISegmentCollection pSegmentCollection; 内容来自dedecms if (m_pLinePolyline == null) { bFirstTime = true; }

Arcgis Engine二次开发实验报告

GIS二次开发实验报告 学号:201420310115 姓名:李梦南 班级:1423101 专业:地理信息系统 任课老师:李小龙 二零一七年六月十二日

目录 1实验一:AOI书签开发 (1) 1.1实验目的 (1) 1.2实验内容 (1) 1.3实验步骤与结果 (1) 2.1实验目的 (5) 2.2实验内容 (5) 2.3实验步骤与结果 (5) 2实验三:地图渲染 (9) 3.1实验目的 (9) 3.2实验内容 (9) 3.3实验步骤结果 (9) 3实验四:空间数据处理 (16) 4.1实验目的 (16) 4.2实验内容 (16) 4.3实验步骤与结果 (16) 4实验五:GIS分析 (25) 5.1实验目的 (25) 5.2实验内容 (25) 5.3实验步骤与结果 (25) 5实验六:栅格数据处理 (33) 6.1实验目的 (33) 6.2实验内容 (33) 6.3实验步骤与结果 (33) 6实验总结 (43)

1实验一:AOI书签开发 1.1 实验目的 ?掌握AOI书签程序开发 1.2 实验内容 ?实现AOI书签的创建 ?实现AOI书签的调用 1.3 实验步骤与结果 实验思路、关键代码(全面注释)、运行结果截图 实验思路: 空间书签是用户定义创建的标志某个特定地理位置的快捷方式,创建好书签后能够很方便的找到某个地理位置。在本实验中我们需要创建的是AOI书签,即用户所关心的一个范围,通过调用该书签,用户可以马上找到书签所指范围。 实现本实验主要包括以下几个方面: 1.添加控件和类库引用:添加创建书签控件、保存和调用书签控件,添加 Geometry类库 2.添加“创建书签”函数:创建书签,保存当前感兴趣范围,将书签名加入 组合框,以便调用 3.添加“书签名称设置”窗体:获取书签名,传递给主窗体 4.添加两个事件响应函数:“创建书签”菜单项的点击事件,作用是打开“书 签名称设置”窗体;“确认”按钮的点击事件,作用是调用创建书签函数 5.实现与调用书签:添加组合框的事件响应函数,作用是当组合框中选项 改变时,地图将刷新显示出书签所记录的范围。

GIS二次开发方法与实现

中图分类号:TP311.52文献标识码:A文章编号:1009-2552(2008)08-0065-03 GIS二次开发方法与实现 杨宏鹏,王阿川,王妍玮 (东北林业大学信息与计算机工程学院,哈尔滨150040) 摘要:介绍了地理信息系统二次开发的三种方法:独立二次开发、单纯二次开发和集成二次开发。随后比较各自的优缺点。采用ESRI公司提供的ArcObjects组件库和M apControl控件以及Scene View er C ontrol控件。用VisualC++6.0在ArcGIS8.3环境下进行了G IS的二次开发。 关键词:地理信息系统;ArcO bjects;二次开发 Method and implementation of GIS secondary development YA NG Hong2peng,WA NG A2chuan,W AN G Yan2w ei (School of Information and Computer Engineer ing,Nor theast For estr y University,Harbin150040,China) Abstract:The paper introduces three methods of GIS sec ondary development,they are independent secondary development,simple secondary development and integrated secondary development.Then it c ompares the advantages and disadvantages of each https://www.wendangku.net/doc/d812144862.html,ing A rcO bjects component library and M apControl controls and Scene View er Control controls provided by ESRI company,this paper makes secondary development of GIS under ArcGIS8.3environment based on VisualC++6.0. Key w or ds:GI S;ArcObjects;secondary development 20世纪中叶以后,伴随着计算机科学、现代数学、计算机图形学和虚拟现实技术的发展,地理信息系统(GIS)应运而生,该技术将数字地图和地理分析功能以及数据库操作集合在一起,可对地理信息进行综合分析和处理。现有的地理信息系统软件主要集中于描述二维空间信息,将实际的三维事物采用二维的方式表示,具有很大的局限性,大量的多维空间信息无法得到利用。而且在许多实际应用中,诸如:环境仿真、设施管理、森林防火的模型分析与辅助决策,用户需要三维可交互GIS的支持,以便三维可视化、动态交互地处理、分析、显示他们的多种地理相关数据。现有的GIS系统已经不能满足用户在个别领域的专项研究,因此对地理信息系统进行二次开发,尤其是进行三维可视化的开发与设计就具有非常重要的意义。 目前,在软件开发领域,一场新的革命正在悄悄兴起,这是由日趋成熟的组件技术引发的[1]。组件化技术从根本上改变了传统的软件开发思想,实现了软件的复用和健壮更新。 1GIS的开发方法 应用型GIS的二次开发通常有三种方法[2]:独立二次开发、单纯二次开发和集成二次开发。 1.1独立二次开发 独立二次开发是指不依赖任何GIS工具软件,从空间数据的采集、编辑到数据的处理分析及结果输出,所有的算法都由开发者独立设计,然后选用某种程序设计语言,如Visual C++,D elphi,C++Builder, VJ++等,在一定的操作系统平台上编辑实现。 这种方式的好处在于无需依赖任何商业GIS工具软件,减少了开发成本,同时程序员可以对程序的各个方面进行总体控制。因此,系统各个组成部分之间的联系最为紧密,综合程度和操作效率最高。但由于地理信息系统的复杂性,开发的工作量是十分庞大的,开发周期长。对于大多数开发者来说,能力、时间、财力方面的限制使其开发处理的产品很难在功能上与商业化GIS工具软件相比。 1.2单纯二次开发 单纯二次开发指完全借助于地理信息系统工具 收稿日期:2007-12-18 作者简介:杨宏鹏(1982-),男,东北林业大学信息与计算机工程学院硕士研究生,主要研究方向为人工智能与智能控制。 ) 65 )

ArcGIS二次开发

第一章z开发基础 1.1组件对象模型 在明确讨论COM之前,有必要先一般性地思考一下软件组件使用的广泛性。在软件组件背后有许多的驱使因素,但最基本的就是软件开发是个昂贵和耗时的风险行为。 在理想的世界里,假如曾经写了一段代码,然后通过不同的开发工具一次一次的反复使用它,这种情况是可能的,即便是在最初的开发者不能预见的环境下也能使用。理想情况下,对最初开发者生成的函数功能的改变能在不需要目前用户改变和重编译他们的代码情况下实现。 早期重用代码块的尝试就是创建类库的进展,这些类库通常用C++开发。早期的尝试有很多的限制,较为明显的是:共享系统组件的困难(共享二进制C++组件是非常困难的——大部分的尝试是共享源代码);不重新编译就很难保存和更新C++组件的问题;缺乏好的建模语言和工具以及属性接口和定制工具。 为了解决这样那样的一些问题,许多软件工程师开始采用基于组件的方法进行系统开发。一个软件组件就是一个可重用代码的二进制单元。 已经出现了几个不同但相互重叠的开发和共享组件标准。微软的COM已成为建立交互式桌面应用程序事实上的标准。在互联网上,JavaBean是可行的技术。对象管理组(OMG)制定了粗粒度层次上适用于应用程序互操作的公用对象请求代理架构(CORBA)。

为了理解COM(以及所有基于COM的技术),认识到其不是一种面向对象语言而是一个协议或标准是非常重要的。COM不仅仅是一种技术,还是软件开发的一种方法论。COM定义了一种连接软件组件或模型的协议。通过使用这种协议,可以建立能在分布式系统中动态交互的可重用软件组件。 COM还定义了一种称作基于接口的编程模式。对象封装了能体现定义良好的接口后每个实例化对象特征的操作方法和数据。这增强了系统开发的结构化和安全性,因为一个对象的客户并不知道某个特定方法如何实现的任何细节。COM不规定应如何构建一个应用程序。语言、结构和实现细节都由使用COM的应用程序开发人员决定。 COM的确规定了一个对象模型和使COM对象能与其他COM对象交互的编程需求。这些对象可以位于单个过程中,在不同的过程中,或者甚至在远程机器上。它们可以用其他语言编写,也可以用完全不同的方式开发。这就是COM被认为是二进制规范或标准的原因—它是一个在程序被编译为二进制机器代码后才应用的标准。 COM允许对象在二进制水平上重用,意味着第三方开发者即使从最底层扩展系统也不需要访问这些对象的源代码、头文件或对象库。 组件、对象、客户和服务器 不同的文件中组件(components)、对象(objects)、客户(clients)和服务器(servers)表示不同的意思(各种文件用这些术语指代相同的事物,使得术语使用更加混乱)。因此,定义这本书所要使用的术语是非常有必要的。

ArcGIS主要功能简介

ArcGIS 主要功能简介 通过在课堂上以及在课外的研究课题中对GIS的学习探究和应用,我对GIS 的主体功能有了较为明晰的认识,我认为ArcGIS的主要功能包括以下几个方面: 一、信息的输入和转换 信息的输入和转换是将从外部各种渠道收集所得的原始数据输入到 GIS系统内部并转换为系统便于处理的内部格式的过程。 1、信息的输入包括对空间数据和属性数据这两类数据的输入,其中输入点、线、面这类带有空间位置和几何特性的要素为空间数据输入,而文字、表格和其他非几何数据的输入为属性数据输入。 2、信息的转换包括将我们常用的其他软件文件转换到GIS中,通过多个软件之间的联动获取比单纯用GIS输入来得更丰富的外界信息,例如将DWG格式文件转换输入到GIS中;除此之外还有通过ArcToolbox这一强大的工具集进行的GIS内部的矢量数据和栅格数据之间的转换。 二、数据的编辑 数据的编辑是对已有的数据进行修改更新以及建立它们之间的联系的过程。 主要包括拓扑关系的建立、数据的投影变换、扭曲拉伸、裁剪、拼接和提取、以及坐标校正等。其中我们可以借助拓扑关系来编辑要素和检验数据质量。 三、数据的储存与管理 GIS的这项功能提供空间与属性数据的储存和灵活调用的能力。如今随着数据容量和复杂度不断增大、对数据储存速度的要求越来越高,GIS的储存功能也在不断发展,于是出现了网络GIS数据储存、基于微电子机械系统的储存器等新功能、新产品。 四、数据的查询 数据的查询包括两个方面功能:通过空间位置查属性和通过属性查空间位置,即“某个特定位置有什么”和“某个特定要素在哪里”。 五、数据的分析 空间数据的分析是GIS的核心功能,它能够通过对基础数据的分析并叠加其

相关文档
相关文档 最新文档