使用ArcGISEngine开发自定义GIS应用doc图文精Word文档下载推荐.docx
《使用ArcGISEngine开发自定义GIS应用doc图文精Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《使用ArcGISEngine开发自定义GIS应用doc图文精Word文档下载推荐.docx(105页珍藏版)》请在冰豆网上搜索。
六、结论
第一部分主要是讲ESRI的白皮书,主要是考虑这个白皮书简单而又充分地说明了
ArcEngine是一个什么产品以及其能实现的功能等,具有很明显的意义。
对于了解了
ArcEngine开发的朋友,可以跳过第一部分。
这里主要内容是<
白皮书>
>
你也可以参看www.esrichina-中的
<
一书.
1、为何对发布自定义GIS或嵌入式应GIS用软件感兴趣?
当面对海量的原始信息时,组织机构应充分意识到地理分析和空间可视化的重要性,
因为这可以提高机构内部的运行效率及决策制定。
可以称之为商业智能、分析应用软件
或决策支持,知识分子可从软件应用中获益,因为这些软件可为迅速而准确估测形势和
行为提供信息支持。
有许多潜在的增强型GIS应用软件用户,他们不是GIS专业人员;
而
且没有经过系统学习,不会有效地利用市场上可得到的综合工具。
为了向非GIS专业的用
户提供空间分析方案,开发人员需要具有构建领域专用且易于使用的应用软件的能力,
该软件需将广泛应用的GIS技术与友好用户的经验结合起来。
这些软件如果从头开始构建
,将是一项繁冗的开发工作,会很耗费时间,并且成本不菲,所以为了构建原有功能基
础上的GIS部分,才能大量使用ArcEngine来构建我们的GIS应用,并能应用到我们的各行
各业中。
2、高效GIS开发的解决方案
对于繁冗的GIS开发工作而言,理想的解决方案是一个基于组件的开发框架的实用性,且
该框架允许解决方案提供商或机构内部开发人员快速构建行业专用GIS应用软件。
一个
GIS开发框架应提供应用软件所需的必要的空间分析功能,并允许软件开发人员集中精力
构建软件的特定逻辑。
ESRI公司的ArcGISEngine就是这样一个GIS框架,它是为响应
ESRI用户的请求而创建的,可以把丰富的ArcGIS技术按产品进行分类,并将其空间分析
功能嵌入新的或已有应用软件中。
这本白皮书主要是对ArcGISEngine产品的概述,将会引起编程人员和项目管理人员的特
别注意,因为他们想要将制图与GIS功能性嵌入新的或已有的自定义应用软件中,并可能
在一个跨平台环境中,以一种适宜成本的方式来配置这些应用软件。
3、ArcGIS开发概述
ArcGIS是一组集成家庭式的GIS软件产品,可在单项工程、工作组以及企业级项目
中用于发布完善的、可升级的GIS系统。
它是基于一个可共享的GIS组件——ArcObjects
的公用库来构建的。
ArcGIS包括以下几个主要组成部分:
ArcGISDesktop:
一套集成的高级GIS产品(ArcReader,ArcView,ArcEditor,
ArcInfo,ArcGIS扩展模块等);
ArcGISEngine:
嵌入式GIS组件库,可使用C++,COM,.NET和Java来构建自定义的
、面向行业的应用软件;
ArcGISServer:
GIS软件对象的共享库,用于构建企业和网络计算框架内的应用软件
。
它使用.NET/ASP和Java/JSP来构建基于SOAP的网络服务和网络应用程序;
ArcIMS:
GIS网络服务,通过开放的因特网协议发布地图、数据和元数据;
ArcSDE:
在大量的数据库管理系统(DBMSs)中进行地理数据管理的界面。
ArcGIS系统利用ArcObjects组件进行构建和扩展。
ArcObjects是由平台独立的C++
软件对象组成的,这些对象在Windows和UNIX平台下均可运行,并具有多个开发应用程序
接口(API),包括COM,.NET,Java和C++等。
开发人员可以利用这些应用程序接口
(API)和ArcObjects功能构建应用程序。
ArcObjects是ArcGIS产品——ArcGISDesktop
、ArcGISEngine和ArcGISServer的核心,它提供了一个贯穿所有ArcGIS产品的共同开
发经验。
利用ArcGIS进行开发时存在多种可能,开发人员可以:
配置/定制ArcGISDesktop产品;
扩展ArcGIS结构与数据模型;
使用ArcGISEngine在其他应用软件中嵌入制图和GIS功能;
使用ArcGISEngine构建和配置自定义桌面应用程序;
使用ArcGISServer构建网络服务和应用程序。
ArcObjects是ArcGIS产品的基本组件技术。
ArcGISEngine为开发人员提供了新型改良工具,以及新的配置选项和资源。
ArcGIS
Engine是一组打包的核心ArcObjects组件,开发人员可以用来构建自定义GIS和制图应用
程序。
这些对象是平台独立的,可以从不同的平台来访问。
开发人员可以扩展对象库,
并且完全控制应用软件用户界面的外形和感觉。
我们可以从下面的ARCGIS产品结构图中清楚地知道ArcGISEngine在整个ARCGIS休系中是
一个什么位置
二、ArcEngine介绍
1、ArcGISEngine是一组完备的并且打包的嵌入式GIS组件库和工具库,开发人员可用
来创建新的或扩展已有的桌面应用程序。
使用ArcGISEngine,开发人员可以将GIS功能
嵌入到已有的应用软件中,如自定义行业专用产品;
或嵌入到商业生产应用软件中,如
MirosoftfWord和Excel;
还可以创建集中式自定义应用软件,并将其发送给机构内的多
个用户。
使用ArcGISEngine构建的应用软件可以授权并分配给终端用户
ArcGISEngine由两个产品组成:
构建软件所用的开发工具包以及使已完成的应用程序能够运行的可再发布的Runtime(运行时环境)。
ArcGISEngine开发工具包是一个基于组件的软件开发产品,可用于构建自定义GIS和制图应用软件。
它并不是一个终端用户产品,而是软件开发人员的工具包,适于为Windows、UNIX或Linux用户构建基础制图和综合动态GIS应用软件。
ArcGISEngineRuntime是一个使终端用户软件能够运行的核心ArcObjects组件产品,并且将被安装在每一台运行ArcGISEngine应用程序的计算机上。
在熟悉的软件程序中,许多用户需要集中式的行业专用GIS方法,他们的需求要比一般GIS产品要少得多,但他们却可能需要复杂的GIS逻辑方法。
ArcGISEngine就提供了一种相对于一般GIS软件的选择方案,以防用户需要定制GIS方法。
ArcGISEngine可用于:
在自定义应用软件中嵌入GIS逻辑;
有效构建和配置GIS应用软件;
从简单的应用软件中提供高级GIS逻辑方法;
在其他应用软件中嵌入GIS逻辑和制图;
使用C++或Java构建跨平台应用软件。
作为一名开发人员,可以在用ArcGISEngine开发工具包构建的程序中实现以下功能以及许多其他功能:
显示具有多个地图图层(如公路,河流和边界)的地图。
漫游与缩放地图。
通过单击来识别地图上的要素。
搜索地图上的要素。
显示字段值的文本标注。
绘制来自于航空照片或卫星影像的图像。
绘制图形要素(如点、线、圆以及多边形)。
绘制描述性文本。
沿线或在方框、区域、多边形及圆内选择要素。
在其它元素的特定距离内选择要素。
使用SQL表达式查找并选择要素。
使用主题方法为要素着色(如值映射图、分类图和点密度图)。
动态显示即时或时间序列数据。
根据提供的街道地址或交点在地图上查找位置。
转换地图数据的坐标系统。
执行形状的几何操作,来创建缓冲区;
计算差值;
或查找形状的交集,联合或反转交集。
操作形状或旋转地图。
创建和更新几何特征及其属性。
交互操作个人地理数据库与主地理数据库。
ArcGISEngine非常适合于构建高级GIS应用软件的基础制图。
在VisualBasic中构建ArcGISEngine房地产应用软件
2、ArcGISEngine的主要特征
标准的GIS框架:
ArcGISEngine为开发GIS应用软件提供了标准框架。
世界上最受欢迎的软件产品(ArcView,ArcEditor和ArcInfo)就是由这套相同的软件对象构建的。
ArcGISEngine既耐用,又具有可扩展性,而且其丰富的功能允许开发人员集中于解决机构问题,而不是从头开始构建GIS功能。
成本适宜的配置:
ArcGISEngineRuntime在每台计算机上都可得到授权。
这允许多个ArcGIS应用软件在同一台计算机上运行,因此只需要一个单用户运行时(runtime)授权成本。
开发控制器:
ArcGISEngine提供了一套公用的开发控制器,它允许开发人员轻松配置高性能的具有共同外形和感觉的应用软件。
一个普通用户的经验说明这可以缩短用户学习时所走的弯路,因而可以迅速在开发应用软件时得到回报。
跨平台功能:
ArcGISEngine及其所有相关对象与控制器可用于多种平台,包括Windows、Linux和UNIX。
自定义GIS应用软件将适用于标准计算环境;
而不需要在目前的计算基础结构中改变或添加运行环境。
跨开发语言:
ArcGISEngine支持多种开发语言,包括COM,.NET,Java以及C++等。
这就允许使用大量的工具对对象进行编程,而且编程人员不需要学习一门新的或专用的语言。
ArcGIS的扩展功能:
ArcGISEngine开发工具包包括以下扩展功能,如更新和创建多用户地理数据库,还有ArcGIS3D分析,ArcGIS空间分析以及ArcGISStreetMap产品等。
开发资源:
连同对象模型图和范例编码,ArcGISEngine开发工具包提供了一个帮助系统来帮助开发人员进行学习。
此外,它还包含了多个开发工具和应用工具来帮助开发。
3、ArcGISEngine开发工具包
ArcGISEngine开发工具包是一套制图组件,它使程序员能够向现有应用软件中添加动态制图和GIS功能,或者构建自定义制图与GIS解决方案。
使用ArcGISEngine开发工具包,编程人员在创建制图与空间分析的用户化界面时便拥有了空前的灵活性。
可以使用几种工业标准的编程语言来创建特定的应用软件,或者将ArcGISEngine组件与其他软件组件相结合,来利用地图与用户收集管理的信息的相互关系。
ArcGISEngine开发工具包包含了所有的开发资源,以支持综合开发任务。
连同每部分的对象模型图和范例,ArcGISEngine为几种应用程序接口(APIs)(COM、Java、.NET及C++)提供了一个完整的帮助系统。
ArcGISEngine开发工具包并不是一种终端用户产品。
它确实是为开发应用软件的人而设计的。
开发人员可以以ArcGISEngine为基础构建应用程序,并将那些程序发送给终端用户。
ArcGISEngine的一个重要特征就是地图显示既可以是应用软件的附带元素,也可以是中心元素。
该特征使ArcGISEngine特别适合于纵向市场应用软件。
例如,如果应用程序的核心是用于出租的商业房产信息的数据库,那么当终端用户对数据库执行查询时,该程序可以以地图的形式高亮显示感兴趣的商业位置。
进一步说,应用程序应该能够显示附近区域的建筑物、地板设计、停车场以及人口统计信息等。
ArcGISEngine开发工具包不仅提供了访问ArcObjects组件集的方法,而且还包含了几种用于创建用户高质量制图界面的可视化开发控制器。
ArcGISEngine包含了以下辅助应用程序开发的可视化组件:
地图控制器;
页面布局控制器;
工具条控制器;
阅读程序控制器;
球体控制器;
场景控制器;
内容表控制器;
工具条上命令集和工具控制器。
地图控制器
页面布局控制器
球体控制器
场景控制器
ArcGISEngine可视化控制器实例
作为ActiveX控制器,JavaBeans,.NETWidows控制器以及Motifwidgets,这些可视化组件均可加以利用。
ArcGISEngine开发工具包控制器可以与其他控制器和组件相结合,来创建个性化的用户界面、显示和报表。
1、框架/结构
ArcGISEngine开发人员有权使用一系列的控制器,这些控制器准许很多属性、事件和方法的使用。
尽管一个简单的应用软件仅仅通过高级控制器就能够构建,但是ArcGISEngine实用软件需要熟悉组成ArcGISEngine的不同对象库。
对象库是ArcObjects组件的逻辑集合,从纹理细密的对象(如单独的几何对象)到纹理粗糙的对象,它聚集了功能的逻辑集合。
在实现ArcGISEngine应用软件时,编程人员将对几种基于标准的应用程序接口(COM、.NET、Java和C++)进行选择。
以下内容是使用ArcGISEngine编程时所用到的对象库的简要描述。
2、ArcGISEngine对象库
System库是ArcGIS结构中最低级的对象库。
该库包含了揭示ArcGIS中其他对象库所使用的服务的组件。
SystemUI库主要定义了ArcGIS系统中所使用的用户界面组件的类型。
Geometry库包含了核心几何对象,如点、多边形、线及其几何类型和定义等。
Display库包含了支持向输出装置绘制符号体系的组件。
Server库包含了用于获取到ArcGISServer的连接的对象。
该连接通过本库中的对象进行管理。
Output库包含了生成输出所必需的对象,通常是从地图或页面布局输出到打印机、绘图仪,或者导出到文件中。
Geodatabase库包含了所有与数据访问相关的定义的类型。
GISClient库包含了操作远程GIS服务的对象。
ArcIMS或ArcGISServer都可以提供这些服务。
DataSourcesFile库包含了适用于地理数据库应用程序接口(APIs)所支持的矢量数据格式的工作空间工厂和工作空间。
DataSourcesGDB库包含了适用于存储在RDBMS中的地理数据库所支持的矢量和栅格数据格式的工作空间工厂和工作空间。
GeoDatabseDistributed库包含了支持分布式地理数据库的检出/检入操作所必需的对象。
DataSourcesOleDB库提供了操作“基于对象连接和嵌入数据库”(OLE_DB-based)的数据源的工作空间。
DataSourcesRaster库包含了适用于基于文件的栅格数据格式的工作空间工厂和工作空间。
Carto库包含了用于显示数据的对象。
Location库包含了与位置数据操作相关的对象。
位置数据可以是路径事件,或者地理编码的位置。
NetworkAnalysis支持应用网络的创建和分析。
Controls库包含了用于应用软件开发的控制器,包括通过控制器来使用的命令和工具。
GeoAnalyst库包含了核心空间分析的操作,这些操作可以通过空间分析和3D分析扩展模块来使用。
3Danalyst库包含了用于进行数据3D分析以及支持3D数据显示的对象。
该库中有一控制器可供开发人员使用,并且操作该库中的对象需要一个3D分析扩展授权。
GlobeCore库包含用于进行球体数据分析以及支持球体数据显示的对象。
SpatialAnalyst库包含了用于进行栅格与矢量数据空间分析的对象。
操作该库中的对象需要一个空间分析授权。
对于一些ArcGISEngine9.2中新增的库将在第二部分中介绍,详细请看本讲尝的第二部分.
ArcGISEngine开发工具包提供了几种预制的工具和命令,可以与工具条控制器结合起来使用,以便快速向应用软件中添加基础制图功能。
以下是一些常用元素。
对象库地图控制器或页面布局中使用的要素选择工具
n选择要素;
n图形选择;
n在屏幕上选择要素;
n清除选中要素;
n缩放至选中要素。
地图控制器或页面布局中使用的图形元素工具
n选择元素;
n新建矩形;
n新建多边形;
n新建圆;
n新建椭圆;
n新建线;
n新建曲线;
n新建手写线。
地图控制器或页面布局中使用的地图导航工具
n缩小;
n放大;
n固定放大;
n固定缩小;
n漫游;
n全部范围;
n回到前一范围;
n转到后一范围。
页面布局中使用的页面布局工具
n缩放至整个页面;
n缩放至100%;
n转到后一范围;
n缩放控制。
用ArcGISEngine构建应用软件
开发人员可以在以下所选的集成开发环境(IDE)中构建ArcGISEngine应用软件:
nMicrosoftVisualStudio和Delphi(适用于Windows开发人员);
nEclipse,SunONEStudio和BorlandJbuilder(适用于Java开发人员)。
开发人员可以在其集成开发环境(IDE)中注册ArcGISEngine开发工具包,然后通过添加ArcGISEngine组件和编写代码来创建基于表单的应用程序,
例如,一名Java开发人员可以通过添加地图控制器,内容表控制器以及所选择的工具条来创建集中式GIS制图软件。
开发人员可以将ESRI的ArcMap地图定义文件(.MXD)、ArcScene文件(.SXD)、或ArcGlobe文件(.3DD)与控制器联系起来,可以为集中式任务编写附加按钮和其他功能的程序。
已完成的应用程序可以安装在任一ArcGISEngineRuntime(包含于ArcGISDesktop软件)中来进行配置。
除了上述应用软件可以在一个“球体”背景中对数据进行制图外,这里还有其他几个类型的应用软件范例,它们均受益于ArcGISEngine技术。
城市政府部门可能想构建一系列的以地块评价为中心的应用软件,能够从GIS数据库中获取信息,并将其和其他重要单位的工作集成在一起,如许可证、税收、规划评审等等。
ArcGISEngine组件可以嵌入到MicrosoftWord文档中,来帮助在文本与表格信息和空间数据之间建立联系。
ArcGISEngine应用软件需要将ArcGISEngineRuntime软件安装在终端用户的机器上。
为确保ArcGISEngineRuntime已安装,开发人员可以让用户直接运行ArcGISEngineRuntime的安装程序并安装授权码(licensekey),或者将ArcGISEngineRuntime安装程序包含在应用软件的安装程序组里。
安装ArcGISEngineRuntime可通过多种方法在应用软件的安装过程中完成,其详细介绍参阅《ArcGISEngineDeveloperGuide》。
配置ArcGISEngineRuntime有两种值得推荐的方法:
n直接从光盘安装ArcGISEngineRuntime的安装程序。
ArcGISEngineRuntime安装程序可以在应用软件的光盘上重新分配。
开发人员可以复制ArcGISEngineRuntime光盘内容并创建附加的光盘;
或者与ESRI联系,获得附加的ArcGISEngineRuntime光盘。
n将ArcGISEngineRuntime安装程序并入应用软件的安装程序组里运行。
ArcGISEngine可以在没有用户界面的情况下进行安装,即通过WindowsInstaller命令行参数来运行安装程序。
这种方法使终端用户产品的安装简单化。
使用ArcGISEngine开发的每个单机应用软件必须通过相配的授权(license)才能初始化,以确保其能够在所安装的任意一台机器上成功运行。
在访问任一ArcObjects组件之前,授权初始化须在应用程序启动时被执行。
如果授权初始化在是在ArcObjects组件被访问以后才执行,将导致应用程序出错。
授权文件由ESRI客户服务中心提供给购买ArcGISEngineRuntime的团体——或者是生产应用软件的开发人员;
或者是从开发人员处取得应用软件的终端用户,他们自己负责从ESRI购买Runtime,以使授权文件能够运行。
《ArcGISEngineDeveloperGuide》一书分别为开发人员(将授权文件打包到应用软件中)和终端用户(需要独立于开发人员安装授权文件)提供了详细说明。
下面的话题将讲述ArcGIS开发人员可用到的一些附加资源。
这包括了确保ArcGISEngine应用软件构建和配置的各个方面能够取得成功的书籍、指南以及各种帮助系统。
无论是对ArcGISEngine的初学者来说,还是对富有经验的开发人员来说,ArcGIS开发人员帮助系统是一种重要的资源。
它包含了使用ArcObjects进行开发的许多信息:
范例代码、技术文档以及对象模型图等。
此外,它还是一本参考指南,包含了ArcObjects中每个对象的信息。
该系统是为VisualBasic,.NET,Java和C++开发人员设计的,并在安装ArcGISEngine开发工具包时放到了硬盘上。
ArcGIS系统的每一部分(Desktop,Engine,andServer)都有一个开发指南,来帮助开发人员从头学习ArcObjects及其各自支持的API。
《ArcGISEngineDeveloperGuide》一书为开发人员提供了基于ArcGISEngine来创建和配置自定义软件的信息,以及不同的开发控制器和组件的信息。
《ArcGISDesktopDeveloperGuide》一书则提供了如何定制或扩展ArcGIS桌面应用软件(如ArcMap、ArcCatalog)的信息。
开发人员可以使用VBA定制应用软件,也可以使用V