当前位置:文档之家› 第5章 ArcGIS Engine二次开发初级讲义

第5章 ArcGIS Engine二次开发初级讲义

第5章 ArcGIS Engine二次开发初级讲义
第5章 ArcGIS Engine二次开发初级讲义

ArcGIS Engine二次开发实习初级讲义遥感信息工程学院地理信息工程方向实习材料

指导老师:秦昆

文档编写:张文、郭善昕、余万里

武汉大学遥感信息工程学院

目录

1 ArcGIS、ArcObjects和ArcGIS Engine简介.................................................................... - 3 -

1.1 ArcGIS简介 ................................................................................................................ - 3 -

1.2 ArcObjects简介 .......................................................................................................... - 4 -

1.3 ArcGIS Engine简介.................................................................................................... - 5 -

2 ArcGIS控件介绍.................................................................................................................... - 7 -

2.1 ArcGIS控件简介 ........................................................................................................ - 7 -

2.2重要控件简介............................................................................................................... - 9 -

3 ArcGIS Engine二次开发入门 ............................................................................................ - 16 -

3.1 ArcGIS Engine开发起步——第一个简单的地图显示程序 .................................. - 16 -

3.2 属性查询.................................................................................................................... - 23 -

3.3 空间查询.................................................................................................................... - 27 -

3.4 BaseCommand开发实例 .......................................................................................... - 36 -

3.5 BaseTool开发实例.................................................................................................... - 38 -

3.6通过代码添加图层..................................................................................................... - 42 -

3.7基于比例尺显示地图................................................................................................. - 44 -

3.8 构建一个简单的GIS应用........................................................................................ - 46 -

4.问题解决方法及帮助文档的使用........................................................................................ - 58 -

4.1使用ArcObjects开发帮助系统............................................................................... - 58 -

4.2阅读对象模型图(Object Model Diagram)......................................................... - 62 -

1 ArcGIS、ArcObjects和ArcGIS Engine简介

1.1 ArcGIS简介

ArcGIS提供了一个可伸缩的框架,可以为独立用户或者多用户,既可以在桌面端也可以在服务器端提供GIS。ArcGIS 9是用来构建一个完整GIS应用的GIS软件产品集成。它是基于共享的GIS软件组件——ArcObjects。ArcGIS 9由以下四部分组成:

●ArcGIS Desktop——高级GIS应用的集成

●ArcGIS Engine——根据应用程序接口来构建基本应用的嵌入式GIS组件库

●ArcGIS Server——在企业级或者网络框架下构建服务器端GIS应用的平台,用来

构建Web服务和Web应用

●ArcIMS——通过公开的因特网协议来发布地图、数据和元数据的GIS Web服务器

图1 ArcGIS产品结构图

每一个GIS框架同样包含ArcSDE网关,这是在关系数据库(RDBMS)上组织地理数据的接口。

ArcGIS是构建地理信息系统的平台。ArcGIS 9在地理数据处理、3D可视化表达和开发工具方面做了新的扩展。两个新的产品——ArcGIS Engine和ArcGIS Server在这个版本中发布,是ArcGIS成为一个应用程序及服务端开发的完整产品。

●使用ArcGIS能够开发出一系列的产品,开发者可以:

●配置/定制ArcGIS的应用,例如ArcMap和ArcCatalog

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

●利用ArcGIS Engine在其他应用程序中嵌入地图和GIS功能

●使用ArcGIS Engine构建并部署桌面版应用程序

●使用ArcGIS Server构建Web服务和应用

ArcGIS系列产品是通过称之为ArcObjects的软件组件加以构建和扩展的。ArcObjects 包括一系列不同的程序组件,从高度封装的组件(例如独立的geometry objects)到低级组件(例如能够同已有的ArcMap文档集成的地图组件)。这些组件为开发者集成了大量的GIS 功能。

ArcGIS 9的全线产品都具备开发功能(Engine,Server和Desktop)。作为一个开发者,您能够使用标准程序框架结合ArcObjects来扩张ArcGIS Desktop;能够用ArcGIS Engine定制应用;能够使用ArcGIS Server构建企业级的GIS应用。

图2 ArcGIS开发结构图

ArcGIS Desktop包含了一些列的Windows桌面应用程序(例如,地图、目录、工具箱、地球方面的应用)。ArcGIS Desktop包含了三种功能级别(ArcView,ArcEditor和ArcInfo),使用ArcGIS Desktop开发包能够进行客户化和扩展。

ArcGIS Desktop的软件开发包(software developer kit,SDK)包含在ArcView,ArcEditor和ArcInfo内,支持COM(Component Objects Mode l,组件对象模型)和.NET 程序框架。许多开发者利用Desktop SDK扩展功能,创建新的GIS工具,定制用户界面,完善ArcGIS Desktop应用中专业GIS产品的扩展功能。

ArcGIS Server不仅定义和实现了一系列标准的GIS Web服务(例如,地图、数据访问、地理编码等),同时还支持利用ArcObjects进行企业级的服务端应用开发。

ArcGIS Server开发包让开发者能构建GIS服务器用来向多用户提供可供访问的GIS 功能,能通过客户端对大型GIS中央服务器进行处理,能构建和分发GIS Web应用,能进行分布式GIS运算。

1.2 ArcObjects简介

ArcObjects是ArcGIS Desktop的开发平台。

ArcGIS Desktop是一系列GIS软件系统:ArcInfo,ArcEditor和ArcView。这些系统服务于GIS,例如地理数据组织、控件编辑、分级可视化等功能。

ArcGIS Desktop系统包含一系列的应用,例如ArcCatalog、ArcMap、ArcT oolBox和ArcScene,并且能够集成大量不同的扩展产品,例如ArcGIS Spatial Analyst(空间分析模块),ArcGIS Geostatistical Analyst(地理统计分析模块),ArcGIS 3D Analyst(三维分析模块)等。

ArcObjects是使用微软的组件对象模型(Component Objects Model,COM)书写。因此,凡是支持COM标准的开发语言都能使用ArcObjects。您能向ESRI(Environment System Research Institute,环境系统研究所)的开发者一样,使用同样的方式来扩展ArcObjects中的任何一部分。

1.3 ArcGIS Engine简介

ArcGIS Engine是开发者用来构建应用程序的一整套嵌入式GIS组件。使用ArcGIS Engine,您可以将一些GIS功能嵌入到已有的应用程序中,这包括Microsoft Office产品,例如Word和Excel,建造有针对性的客户应用程序用来将高级GIS系统与他人分享。ArcGIS Engine由一个软件开发包(software development kit,SDK)和一个给所有ArcGIS应用提供平台的运行许可(runtime)构成。

构成ArcGIS Engine的五部分分别如下:

1)基本服务——几乎任何GIS应用都需要的核心GIS ArcObjects,例如几何(geometry),显示(display)等。

2)数据访问——ArcGIS Engine提供许多栅格和矢量数据的访问方式,包括与geodatabase相当的能力和灵活性。

3)地图表达——ArcObjects使用符号、注记和专题地图来生成和表达地图。

4)开发组件——用来快速定制应用开发程序的高度封装用户接口以及开发过程中全面的帮助系统。

5)运行许可——ArcGIS Engine运行许可可以部署标准功能或者加入一些附加的高级功能。

这中间除了运行许可之外的任何一部分,都打包集成到ArcGIS Engine开发包(SDK)中。ArcGIS Engine运行许可及其选项,尽管是开发完整的GIS应用程序中的一部分,但包含了应用部署,所以被单独打包。

1.3.1 ArcGIS Engine Software Developer Kit

ArcGIS Engine SDK是用来开发和部署GIS及地图方面应用程序的组件化软件开发产品。ArcGIS Engine SDK不是终端产品而是共应用开发者使用的软件包。它能构建基本的地图浏览或者全面的、动态的GIS编辑工具。使用ArcGIS Engine SDK,作为开发者,您在定制地图功能接口方面有空前的自由。您可以使用许多API中的一些来构建独一无二的应用程序或者将ArcGIS Engine组建与其他软件组建整合,来实现地图和用户需要的其他信息之间的完美结合。

使用ArcGIS Engine,地图既能够作为应用程序的核心,也可以作为一个可选项。例如,如果您的应用主要是数据库中的商务信息,当您查询数据库的时候,ArcGIS Engine能够将您感兴趣的商业信息在地图上高亮显示定位出来。

ArcGIS Engine SDK提供了大量的GIS组件,或者称为ArcObjects,按照之前的介绍,包括基本服务、数据访问和地图表达。之前提到的ArcGIS Engine的第四部分,也就是开发组件,也包含在SDK中间。这些都是用来构建一个高质量地图接口的开发控件。下面列

出的ArcGIS控件,或者说可视化控件,用来辅助应用程序开发(下文将针对控件进行更加详细的介绍)。

●MapControl

●PageLayoutControl

●SceneControl

●GlobeControl

●ToolbarControl

●TOCControl

●ReaderControl

●ToolbarControl中所用到的commands(命令)、tools(工具)和menus(菜单)

1.3.2 ArcGIS Engine Runtime

ArcGIS Engine的最后一部分是运行许可。所有用ArcGIS Engine SDK构建出的应用程序都需要不同级别的ArcGIS Engine运行许可才能够正常运行。ArcGIS Engine Runtime 是ArcGIS Desktop(ArcGIS桌面版)构建的平台,如果得到ArcGIS Engine应用开发许可,ArcGIS Desktop的用户就能够执行基本的基于Engine的应用。ArcGIS Engine Runtime 从标准功能到企业级功能之间有许多不同的选择。

1.3.3 ArcGIS Engine的功能

ArcGIS Engine的功能十分强大。作为ArcGIS Engine开发者,您可以实现以下列出的和其他更多的功能,这包括:

●用多个图层来显示地图,例如道路、水系、边界等

●地图的漫游和缩放

●地图上要素的确认

●地图上要素的查询和定位

●根据属性值显示注记

●根据航片或者卫片显示图像

●绘制几何图形,例如点、线、弧、多边形

●添加描述性的文字

●沿着线选择或者选择矩形、某一范围内、多边形等内部的要素

●选择距离在某一范围内的要素

●利用SQL语言来寻找和选择要素

●利用专题地图来渲染要素,如唯一值法、分级法和点状密度法

●动态显示实时地图或者时序数据

●根据地理编码来寻找位置

●转换您地图的坐标系

●根据几何操作来生成缓冲区、计算差值,或者进行求交、求并等运算

●编辑要素形状或者旋转地图

●创建并更新要素的几何形状及其属性

编辑要素(Editing Features)

ArcGIS Engine开发包让您构建出能创建、修改和删除geodatabase中矢量要素或者shapefile文件的应用程序。标准的ArcGIS Engine Runtime能够让编辑shapefile文件或者personal geodatabase中简单要素的程序运行。然而,要构建企业级geodatabase的全部

功能,就需要ArcGIS Engine Runtime中的Geodatabase Update选项。

空间建模和分析

通过增加ArcGIS Engine Runtime中的Spatial选项,您能够扩展ArcGIS Engine的功能。这个选项(Spatial选项)能提供一系列强劲的空间建模和分析功能。您能够创建、查询、表达和分析基于象元的栅格数据,能够集成栅格和矢量数据进行分析,能够从已有数据挖掘出新的信息,能够从多层数据中查询信息,能够在ArcGIS Engine应用程序中完美集成基于象元的栅格数据和矢量数据。

例如,您能够:

●将要素(如点、线或者面)转化成栅格图

●基于距离或者要素、栅格间的关系来创建栅格缓冲区

●根据点状要素生成密度图

●生成等高线、坡度、可视化区域、方向和山体阴影

●栅格图的分类及显示

●兼容TIFF,BIL,IMG,USGS DEM,SDTS,DTED等标准格式及多种其他格式

数据

●三维可视化等

ArcGIS Engine Runtime中的3D选项让您通过使用Scene和Globe控件来有效的表达和分析区域及全球数据。您能够从多个不同的视点查看表面;您能够查询表面,决定从某个选中的位置看,哪些要素是可见的;您能够将栅格和矢量数据贴在表面以构建真实的透视影像。

例如,您能够:

●显示Scene和Globe文档

●展示交互性的透视图,包括漫游、缩放、旋转、倾斜、模拟飞行以便于表达和分

●显示真实世界的表面要素,例如楼房

●展示视域和可见范围分析、场景高度内插、剖面分析和最短距离分析

2 ArcGIS控件介绍

在ArcGIS Engine的二次开发中,ArcGIS控件给我们提供了具体的开发环境和方法。在ArcGIS Engine中共有7个控件,另外在部署过程中还有一个LicenceControl。下面将首先介绍ArcGIS控件,再详细介绍实习中可能用到的MapControl,TOCControl以及ToolbarControl。

2.1 ArcGIS控件简介

ArcGIS的控件是高度集成化的,首先能够让开发者构建和扩展ArcGIS的功能,其次能够提供图形用户界面(graphical user interface,GUI)。

下列展示出的每一个ArcGIS控件都可以被作为ActiveX控件,.NET控件或者可视化的JavaBean:

●MapControl——类似于“数据”

●PageLayoutControl

●ToolbarControl

●TOCControl(Tablet of Contents Control)

●SceneControl

●GlobeControl

●ReaderControl

使用ArcGIS控件,可以用两种方式来构建应用程序,首先,ArcGIS控件可以被嵌入到已有的应用程序中,将地图相关的功能作为辅助添加进去,或者其次,ArcGIS控件可以用来创建一个独立的应用程序。不管使用哪种方式,一个独立的ArcGIS控件能够被嵌入到已有程序中或者TOCControl和T oolbarControl能够和其他ArcGIS控件联合使用,提供应用程序的部分框架。

对于所有的ArcGIS控件来说,有一些共同的主题、概念和应用方法等,在有效的使用这些控件来构建应用程序之前,有必要先有一定的理解。

2.1.1 嵌入式控件(Embeddable Components)

每个ArcGIS控件都是一个可嵌入的控件,能被放置到提供可视化编程环境的窗体或者对话框内。被放置之后,这些ArcGIS控件能够连同别的嵌入式控件(例如命令按钮,下拉列表框等)一样重新定义尺寸和位置以构建应用程序中的用户界面。

2.1.2 属性页(Property Pages)

当每一个ArcGIS控件被放置到窗体或者对话框中之后,鼠标右键点击控件,从弹出菜单中选择“Properties”(属性),都会分别弹出一系列的属性页。这些属性页提供了控件的部分属性和方法,并且允许开发者不使用或使用极少的代码来完成应用开发。

2.1.3 ArcObjects

每一个ArcGIS控件都封装了一些粗粒度(coarse grained)的ArcObjects以简化用户的开发工作,但同时也提供了访问高粒度(finer grained)ArcObjects的方法。例如,PageLayoutControl控件封装了PageLayout对象(PageLayout Object)。PageLayout对象包含了至少一个MapFrame元素,其中有一个包含有多层矢量图、要素或者通常所说的Layer对象的Map对象。每一个ArcGIS控件提供了封装在ArcObjects中最频繁使用的属性和方法的访问方法。例如,MapControl中的SpatialReference(空间参考)属性项,提供了设置地图对象中空间参考属性的方法。每一个ArcGIS控件同时也有一些实现简单任务的方法。例如,MapControl有AddShapeFile(用来添加ShapeFile文件)方法。ArcGIS 控件是典型应用开发的起点,不仅因为它们提供用户界面,同时也提供对象模型的直接方法。

2.1.4 事件(Events)

每一个ArcGIS控件都能相应终端用户的键盘和鼠标操作。其他的事件用于相应控件内部的操作。例如,当一个地图文件被载入到MapControl中时,会触发OnMapReplaced事件,或者说当一个对象被拖拽到MapControl上时,会触发OnOleDrop事件。

2.1.5 伙伴控件(Buddy Controls)

ToolbarContro l和TOCControl需要和其他“伙伴控件”协同工作。通常说来,“伙伴控件”指的是MapControl,PageLayoutControl,ReaderControl,SceneControl或者GlobeControl。“伙伴控件”可以在设计时通过控件的属性页来设置(在支持属性页的编译

环境中设置)或者在程序中用SetBuddyControl方法来设置。

2.1.6 控件命令(Control Commands)

ArcGIS Engine提供了与ArcGIS控件一起工作的一系列命令(commands),工具(tools)和菜单(menus)。例如,MapControl和PageLayoutControl可以使用地图浏览,要素选择和图形元素命令等。类似的,也有许多可供SceneControl,GlobeControl和ReaderControl使用。对于使用独立控件的程序来说,在程序中新建一个命令的实例,并将这个实例通过OnCreate事件传递给控件就可以直接使用。对于连同“伙伴控件”一起使用ToolbarControl的应用程序来说,这些命令可以被直接添加到ToolbarControl中,既可以在设计时通过属性页加入,也可以在程序运行过程中书写代码加入,如果在运行过程中,ToolbarControl处于客户定制状态,还可以由终端用户添加。

开发者可以使用ArcGIS Engine创建自己的命令、工具和菜单来扩展ArcGIS控件。HookHelper,GlobeHookHelper和SceneHookHelper对象能够用来简化开发。具体的开发方法将在第五章详细列出。

2.1.7 地图组织(Map Authoring)

ArcGIS Desktop应用程序能够创建预定义好的地图文件,之后载入到ArcGIS控件中以快速获得高质量的地图。例如,ArcMap能创建可被载入到MapControl和PageLayoutControl中的地图文件。预定义地图文件能够在组织地图数据和地图符号方面节省大量的时间。当地图文件被载入到ArcGIS控件中之后,在需要改变地图外观的时候,对象模型仍然提供了通过程序来访问图层、元素和符号的方法。

下表小结了能够被载入到ArcGIS控件中的文件格式:

表1 ArcGIS控件对应的文件格式

*ArcReaderControl只有选择ArcGIS Publisher扩展之后才能获得。然而,这里将其列出来是因为与ReaderControl相似。

**ArcGIS控件还不提供直接载入图层文件(*.lyr)的方法。然而,它们可以通过MapDocument 对象间接载入。

2.2重要控件简介

本次实习可能用到MapControl,PageLayoutControl,TOCControl和T oolbarControl,下面分别介绍这四种控件。

2.2.1 MapControl和PageLayoutControl

MapControl和PageLayoutControl分别对应ArcMap Desktop应用中的“数据”和“发布”视图。MapControl中封装了Map对象,PageLayoutControl中封装了PageLayout对象。ArcMap应用程序中组织的地图文件能够直接载入到MapControl和PageLayoutControl中,以省去程序配置地图的时间。

地图文件能够在设计时通过MapControl和PageLayoutControl的属性页(在支持属性页的开发环境中)设置,控件可以被设置为“链接”(link)或者“包含”(contain)地图文件。当选择“链接”时,控件将在生成的时候将地图载入并显示出地图文件的最新更新;而选择“包含”时,控件将会将地图文件中的内容复制到控件中,并且不再显示至此之后发生的文件更新。同时,您也可以选择使用LoadMxFile方法在程序运行过程中载入地图文件(这种方法在之后的章节中会有详细介绍)。下面详细介绍MapControl和PageLayoutControl的属性页。

1. MapControl

在MapControl控件上点击鼠标右键,选择属性,打开MapControl

的属性页。

属性页中包含General、Map、Color、picture四个选项卡。

General选择卡:

Border Style:用于设置

MapControl控件边界的样式

Appearance:用于设置

MapControl控件的表现方式。

Mouse Pointer:用于设置鼠标在

MapControl上的样式。

Enabled:设置控件是否可用,这

与属性表中的Enabled属性在功

能上是相同的。

Enable OLE Drop Event:设置控

件是否响应拖拽事件,例如:直接

将地图拖入MapControl

Preview in Design Mode: 设置是

否在控件设计模式下显示地图。

Arrow Key Intercept:设置是否容

许控件响应键盘

Tooltip Style:设置地图T ooltip的

样式(ToolTip是地图上的一种动

态标注。)

Map Document:用于载入

ArcMap产生的MXD文件,如果

您的文件时MXD类型的,可以选

择这种方式载入地图,或代码在程

序中载入。关于后一种方法会在

《通过代码载入图层》小节中加以

介绍。

选择地图载入的方式,有两种方式

载入地图,第一种是将地图数据载

入到MapControl中,这种方式下,

地图数据在生成程序时被载入到

内存中,之后所有对地图的操作,

在没有保存的前提下对原始的地

图文件没有影响。

第二种方式,通过连接方式载入地

图,表示对于地图的操作会影响到

原始数据。在MapControl中只是

保持着与地图数据的链接。

Map选项卡

Scale:显示地图比例尺

Reference Scale:地图参考比例尺

Rotation:设置地图的旋转角度

Units:设置单位

Spatial Reference:设置或更改地图的

空间参考。

Initial Map:初始化地图

从左到右按钮的功能依此是:

加载图层(图层可以是单图层文件,可

以使GoeDatabase,也可以是

Shapefile)

向上移动图层、向下移动图层、删除图

层、查看图层属性信息。

Color选项卡主要对地图颜色进行相关的设置,但通常关于地图的配色我们是通过代码来完成的,这个选项卡很少涉及。

Picture 选项卡主要是对控件中的相关图片资源进行管理,例如鼠标样式等。

2. PageLayoutControl

对于PageLayoutControl控件的属性页而言,唯一与MapControl不同的是他存在page 选项卡,该选项卡提供了页面大小,页面宽度和高度等修改的窗口。

MapControl和PageLayoutControl不仅可以读地图文件,同时也能写地图文件(*.mxd)。两个控件都实现了IMxdContents接口,使得MapDocument对象能将MapControl 和PageLayoutControl能够将其中的内容写入地图文件。

辅助方法(Helper Methods),例如MapControl中的TrackRectangle(鼠标绘制矩形),TrackPolygon(鼠标绘制多边形),TrackLine(鼠标绘制多段线)和TrackCircle(绘制弧形)方法能够在视口中绘制出可擦出的图形。VisibleRegion属性能够改变MapControl中显示区域的形状。辅助方法,例如PageLayoutControl中的FindElementByName和LocateFrontElement方法能帮助开发者组织元素,同时Printer和PrinterPageCount属性能够协同PrintPageLayout方法完成打印输出任务。

2.2.2 TOCControl

TOCControl需要与一个“伙伴控件”一同工作。“伙伴控件”可以是一个MapControl,PageLayoutControl,ReaderControl,SceneControl或者GlobeControl。“伙伴控件”能够在设计的时候通过TOCControl的属性页设置(在支持属性页的编译环境中),或者在程序运行中通过SetBuddyControl方法来设置。对每个TOCControl,“伙伴控件”都实现了ITOCBuddy接口。TOCControl利用“伙伴控件”来显示交互性的树结构目录,包括“伙伴控件”的地图、图层、符号等内容,并且保持树结构的内容与“伙伴控件”的内容一致。例如,如果TOCControl以MapControl作为其“伙伴”,则当一个图层从MapControl中移除的时候,这个图层也会同时从TOCControl中移除。同样的,如果终端用户通过交互式的TOCControl 设置,取消了某个图层的可见性,则MapControl中的相应图层也会不可见。

与MapControl不同的是,TOCControl的属性表中包含Buddy Control,如果你已经添加了MapControl,那么在下拉列表中你就会看到它,选择他就可以讲TOCControl与MapControl 绑定。

2.2.3 ToolbarControl

ToolbarControl需要与一个“伙伴控件”一同工作。“伙伴控件”可以是一个MapControl,PageLayoutControl,ReaderControl,SceneControl或者GlobeControl。“伙伴控件”能够在设计的时候通过T oolbarControl的属性页设置(在支持属性页的编译环境中),或者在程序运行中通过SetBuddyControl方法来设置。T oolbarControl包含了与“伙伴控件”的显示相关的一系列的命令(commands),工具(tools),工具控件(tool controls)和菜单(menus)。

对每个ToolbarControl,“伙伴控件”都实现了IToolbarBuddy接口。这个接口是用来设置“伙伴控件”的CurrentT ool属性。例如,一个ToolbarControl中包含有一个“PageZoomIn”(页面放大)工具,并且将PageLayoutControl设置为“伙伴”,则当终端用户单击ToolbarControl上的“PageZoomIn”时,“PageZoomIn”将会成为PageLayoutControl的当前工具。“PageZoomIn”工具将查询ToolbarControl以访问其“伙伴控件”(PageLayoutControl)并且作用于PageLayout(页面视图),然后它将提供给终端用户显示和使用鼠标拉框的方法以改变PageLayout的显示范围。

ToolbarControl实现了ArcGIS 中的所有功能,用户可以在不编写一行代码的情况下,轻松构架出一个功能庞大的GIS软件,只要是ArcGIS中含有的功能,你都会在ToolbarControl中找到。但是这些功能都是事先封装好的,如果你想对这些功能进行进一步的扩展,难度很大。所以不要以为有了ToolbarControl 就可以摆脱学GIS二次开发的过程。让我们来看看我们是如何使用T oolbarControl 的。

在ToolbarControl的属性页中有一个Items的选项卡,通过选项卡中的Add按钮可以添加相应的功能按钮。点击Add,会出现以下对话框。

该对话框包含了很多已经封装好的工具,包括复杂的空间分析功能。双击其中的功能或拖拽,就可以讲该功能添加到ToolBarControl中。需要删除时,在Items中的按钮列表中将功能拖出即可,按钮列表如下图所示:

3 ArcGIS Engine二次开发入门

3.1 ArcGIS Engine开发起步——第一个简单的地图显示程序

这个例子将引导您创建第一个简单的地图显示程序,并添加基本的缩放和漫游功能。如果您之前没有接触过ArcGIS Engine的开发,那么这个例子是您迈入ArcGIS Engine二次开发大门的极好例子,如果您之前没有接触过Visual https://www.doczj.com/doc/06730581.html,,也无需担心,这个例子将从零开始引导您一步一步完成任务。

3.1.1 创建一个新的工程

首先打开Microsoft Visual Studio 2005,点击菜单栏中的“文件”—>“新建”—>“项目”,在弹出的对话框中选择新建一个Visual Basic的Windows应用程序,之后更改项目名称为“MapView”,更改文件的路径为个人实习文件夹,点击“确定”即可。

图23 新建项目对话框

3.1.2 添加控件及引用

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

图24 工具箱

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

图25 重置工具箱

图26 选择项…

图27 选择工具箱项

图28 选择工具箱项

添加好MapControl和LicenseControl之后,调整Form1和MapControl的位置与大小,如下图所示:

图29 窗体布局

3.1.3 添加地图

在MapControl上单击鼠标右键,选择“属性”,则会弹出MapControl的属性设置面板,在之前也介绍过,通过这个面板可以完成许多简单的工作。

如图所示,点击“Map”面板,之后点击按钮,在弹出的对话框中选择下图所示的路

径(注:笔者的ArcGIS安装在D盘,若您的ArcGIS装在别的盘符,请做相应修改),再在此路径下选择“States”,点击“Open”。之后在MapControl的属性页上点击“确定”即可。

图30 文件添加路径

至此,我们已经完成了一个最简单的地图显示程序,下面一起来看一下成果吧。点击“启动调试”按钮(或者在“调试”菜单下选择相应命令,或者按键盘的F5键),可以得到如下的运行结果。

图31 “启动调试”按钮

ArcGIS应用基础

第二章ArcGIS应用基础 ArcMap、ArcCatalog和Geoprocessing是ArcGIS的基础模块,应用ArcGIS进行空间分析时,应首先掌握这三个模块的各项功能。 ArcMap是ArcGIS桌面系统的核心应用程序,用于显示、查询、编辑和分析地图数据,具有地图制图的所有功能。ArcMap提供了数据视图(Data View)和版面视图(Layout View)两种浏览数据的方式,在此环境中可完成一系列高级GIS任务。 ArcCatalog是一个空间数据资源管理器。它以数据为核心,用于定位、浏览、搜索、组织和管理空间数据。利用ArcCatalog还可以创建和管理数据库,定制和应用元数据。从而大大简化用户组织、管理和维护数据工作。 Geoprocessing空间处理框架,具有强大的空间数据处理和分析工具。框架主要包括两个部分:ArcToolbox(空间处理工具的集合)和ModelBuilder(可视化建模工具)。ArcToolbox 包括了数据管理、数据转换、Coverage处理、矢量分析、地理编码以及统计分析等多种复杂的空间处理工具。ModelBuilder为设计和实现空间处理模型(包括工具、脚本和数据)提供了一个图形化的建模框架。它们均内嵌于ArcMap和ArcToolbox中。 2.1 ArcMap基础 本节分为四部分,主要介绍ArcMap数据层的基本操作、数据的符号化、注记标注和专题地图的编制等。 2.1.1 新地图文档创建 ArcMap中,创建新的地图文档有以下两种方法: 1.启动ArcMap 在ArcMap对话框中,选择A new empty map并单击OK按钮,创建一个新的空地图。或者应用已有的地图模板创建新地图:选择A template并单击OK按钮,在New对话框中选择General标签中的LandScapeClassic.mxt,即古典景观地图版式,单击OK按钮,出现了预先设计好的地图模板,进入地图编辑环境(图2.1)。 2.若已经进入了ArcMap工作环境 单击New Map File 按钮直接创建一个空白新地图。若希望应用已有地图模板创建新地图,单击File菜单下的New命令,在New对话框里确定当前创建的文件类型为Document;进入General选项卡,选择古典景观地图版式LandScapeClassic.mxt;单击OK按钮,进入地图编辑环境。 - 15 -

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入门教程(1)——ArcMap应用基础

ArcGIS入门教程(1)——ArcMap应用基础 实验一 ArcMap应用基础 一、目的 通过实验操作,掌握ArcMap软件的基础操作,主要包括地图文档打开与保存、图层显示与数据查看、简单符号化、要素标识、注记添加、地图元素添加、地图排版与打印,对ArcMap软件的基础操作加以熟悉。 二、数据 (1)地图文档文件(airport.mxd); (2)源数据文件(airport.gdb),其中各图层含义如下:“Schools”表示初级、中级、高级和私立学校的位置;“Runways”表示机场跑道的位置;“Arterials”表示主干道;“Cne165”表示噪声等值线;“Airport_area”表示计划的机场扩建区;“county”表示县界。 三、步骤 3.1 启动ArcMap 在开始菜单中找到ArcMap并单击打开,启动ArcMap,ArcMap启动界面如图1所示。 图1ArcMap启动界面 说明:打开ArcMap时,会弹出【ArcMap 启动】对话框。该对话框提供了几种启动ArcMap对话的选项。可以在左边目录中,打开一张最近打开过的地图文件。

3.2 打开地图文档 (1)点击主菜单中的【文件】→【打开】,启动【打开】对话框,在对话框中选择到需要打开的Mxd 地图文档,如图2所示。 图2 选择地图文档 说明:地图文档(.Mxd)一种ArcMap存储地图的形式,可以被用户显示、修改或者与其他用户共享。但地图文档(.Mxd)并不存储实际的数据,而是存储实际数据在硬盘上的指针和有关地图显示的信息。地图文件一般还存储了地图的其他信息,如地图的大小、所包含的地图元素(标题、比例尺等)。同时还需要注意的是,不同版本的Mxd文件是不同的,高版本可以兼容之前的版本,但是低版本却无法打开高版本的Mxd文件。 (2)点击【打开】,将选择的地图文档加载到ArcMap中,地图文档加载结果如图3所示,左侧为内容表,列出了可用来显示的地理图层;右侧为地图显示区。

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.doczj.com/doc/06730581.html,/shugui/p/3795803.html 2.安装过程 1)安装Arcgis for Desktop 10.2 下载地址 https://https://www.doczj.com/doc/06730581.html,/share/link?shareid=4262105946&uk=1913532136#path=%252 F 安装教程:https://www.doczj.com/doc/06730581.html,/article/e73e26c0cb5c1324adb6a791.html 2)安装jdk 下载地址 https://www.doczj.com/doc/06730581.html,/technetwork/java/javase/downloads/jdk8-downloads-2133151. html

具体安装过程参考 https://www.doczj.com/doc/06730581.html,/article/6dad5075d1dc40a123e36ea3.html 3)安装Eclipse 下载地址:https://https://www.doczj.com/doc/06730581.html,/downloads/packages/release/Mars/2 解压后即可使用 安装教程参考:https://www.doczj.com/doc/06730581.html,/article/d7130635194f1513fcf47557.html 4) 安装windowbuilder插件 找到对应版本的windowbuilder,本教程使用4.5版本 https://www.doczj.com/doc/06730581.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”前面打勾)。

ArcGIS入门篇详细步骤

本科生实验报告 课程名称土地信息系统 实验名称实验一ArcMap入门 学生姓名陈土英 学生学号5105 所在专业土地资源管理 所在班级国土1131 广东海洋大学大学农学院

一、实验准备 实验名称:ArcMap入门 实验时间:2016年4月1日 1、实验目的: (1)熟悉ArcMap软件的简单入门操作; (2)掌握ArcMap地图显示和简单查询的方法; (3)熟悉地图符号,注记的初步试用; (4)掌握属性表的使用。 2、实验材料及相关设备: 计算机一台(装有软件)、《地理信息系统实习教程》一本。 二、实验内容、步骤和结果 第一步:地图显示、简单查询 ArcMap操作界面、地图显示 ArcGIS for Desktop的语言环境设置和练习数据 (1)依次点击:开始〉ArcGIS〉ArcGIS Administrator,; (2)在出现的对话框右下侧,点击“Advanced(或“高级”)按钮,选择“中文(简体)(中华人民共和国)”,再按“save”键设置为中文界面。(如图1-1)

图1-1 打开地图文档 (1)依次点击“开始>所有程序>ArcGIS>ArcMap” (2)在出现的ArcMap启动对话框右下侧,点击取消,进入默认地图文档窗口(如图1-2)(3)在主菜单中选择“文档>打开”,根据对话框提示打开\gis_ex10\ex01路径下的文档,此时当前打开的文档会自动关闭。 图1-2(空白地图文档窗口)

基本操作界面 (1)在左侧内容列表中有3个数据框:Data frame1、Data frame2、和Data frame3。当Data frame1为粗体字时,表示该数据被激活,处于可操作状态。 (2)点击Data frame1左边的加号“+”,变成减号“-”时,就展开并显示出Data frame1的内容。(如图1-3) (3)点击图层名称前的“+”或“-”,可调整为展开或关闭。 图1-3(打开地图文档) 图层的显示控制 (1)在图层名称的左侧小方格点击打勾,可打开或关闭图层。 (2)图层在内容列表上的上下排列次序代表显示的先后顺序。(多数情况下,点状图层放在最上,线状图层其次,面状图层放在最下。若无法调整显示顺序,可点击“按绘制顺序列出”按钮) 地图缩放、平移 (1)选择放大(缩小)工具,在地图上点击一下,地图按默认比例系数放大(缩小) (2)鼠标放在地图某个位置,按住左键不放,拖动出一个矩形,再松开左键,所定义的矩形及其地图内容将放大(缩小)后充满地图窗口。(如图1-4)

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.doczj.com/doc/06730581.html, Framework时的目录DeveloperKit10.2,打开该目录下的DotNet文件夹,选中ESRI.ArcGIS.AxControls.dll文件,

(完整版)ArcGIS常用的必会工具(基础篇)

ArcGIS必会的几个工具的应用 --提取、分割、融合、裁剪(矢)、合并、追加、镶嵌、裁剪(栅)、重采样 GIS思维 今天我们来聊聊ArcGIS中常用你又必须掌握的几个工具,如筛选、分割、融合、裁剪(矢量)、合并、追加、镶嵌、裁剪(栅格)、重采样。 本次文章我们会按矢量和栅格两部分来介绍几个工具。这个是ArcGIS的套路,也是大部分GIS类软件的套路,将矢量和栅格分开来。关于矢量和栅格的区别我们在GIS思维发布的《ArcGIS 10.X 入门实战视频教程(GIS思维)》介绍的较为清楚,我们不加以赘述。 本次文章的分享,也是我们《ArcGIS 10.X 入门实战视频教程(GIS思维)》的章节内容,所以要观看视频课程,获取文章分享的数据与课件可以报名参加我们的课程。下有链接。

1、筛选 第一个工具,我们来看下比较简单的筛选工具的应用。筛选(select)的用法:从输入要素类或输入要素图层中提取要素(通常使用选择或结构化查询语言 (SQL) 表达式),并将其存储于输出要素类中。我们首先来看下案例数据-福建的各县行政区划矢量图。 图1-1 图1-2 该数据属性表中,有NAME和city等字段,其中NAME代表区县名,city代表区县所在的地级市城市编码。例如,闽侯县归属福州市(3501),仙游县归属莆田市(3503)。那么,要筛选出福州下辖的所有区县,只要利用筛选工具选出city字段是3501的记录就可。 ?打开筛选工具,分析工具→提取分析→筛选 图1-3 ?有如下图的参数设置,点击确定,就得到我们想要的结果。

图1-4 运行结果如下。具体操作,可以观看学习如上所述视频教程。 图1-5 2、分割 现在我们在裁剪中福建的各县行政区划矢量图fj基础上又有了福建省各地级市的行政区划图fj5(网络数据,仅供学习参考使用),如下图。那我们的问题来了,我们要如1中那样筛选出福建九个地级市(福州、厦门、莆田、泉州、漳州、龙岩、三明、南平、宁德)区县划数据,当然我们可以如1中操作9次得到我们的结果,但这样一来操作就麻烦了,万一你来个全国地级市,那不是坑爹,所以为了提高效率我们引入了分割(split)工具的应用。

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应用基础教程 ArcGIS应用基础 ArcMap、ArcCatalog和Geoprocessing是ArcGIS的基础模块,应用ArcGIS进行空间分析时,首先应该掌握这三个模块的各项功能。 ArcMap是ArcGIS Desktop中一个主要的应用程序,是一个用于显示、查询、编辑和分析地图数据的,以地图为核心的专业制图和编辑系统,具有地图制图的所有功能。是 ArcGIS桌面系统的核心应用。ArcMap提供了数据视图(Data View)和版面视图(Layout View)两种浏览数据的方法。在此环境中可完成一系列高级GIS 任务。 ArcCatalog模块是空间数据的资源管理器。它以数据为核心,用于定位、浏览、搜索、组织和管理空间数据。利用ArcCatalog可以创建和管理数据库,可定制和利用元数据。在ArcCatalog平台支持下,可大大简化用户组织、管理和维护数据工作。 Geoprocessing空间处理框架,为空间问题的分析处理提供了完整的解决方案。框架主要包括两个部分:ArcToolbox(空间处理工具的集合)和 ModelBuilder(为建立空间处理流程和脚本提供可视化的建模工具)。框架中的工具可以用多种方式进行,如 ArcToolbox中的对话框、ModelBuilder中的模型、命令行以及脚本等。ArcToolbox包括了数据管理、数据转换、Coverage处理、矢量分析、地理编码以及统计分析等多种复杂的空间处理工具。 ModelBuilder为设计和实现空间处理模型(包括工具、脚本和数据)提供了一个图形化的建模框架。它们均内嵌于ArcMap和 ArcToolbox中。 一、ArcMap基础

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.doczj.com/doc/06730581.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.doczj.com/doc/06730581.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.实现与调用书签:添加组合框的事件响应函数,作用是当组合框中选项 改变时,地图将刷新显示出书签所记录的范围。

ArcGIS中文基础教程

A r c G I S中文基础教程 Prepared on 24 November 2020

第一章GIS的概念和需求 理解GIS的三种角度: GIS是一个用于管理、分析和显示地理信息的系统。地理信息可以通过一系列地理数据集来表达。而地理数据集则通过使用简单的,普通数据结构来为地理信息建模。GIS包含了一套用以处理地理数据的综合工具。 我们可以从多个角度来理解地理信息系统是如何工作于地理信息的: 1.从空间数据库的角度看:GIS是一个包含了用于表达通用GIS数据模型(要素、栅格、拓扑、网络等等)的数据集的空间数据库。 2.从空间可视化的角度看:GIS是一套智能地图,同时也是用于显示地表上的要素和要素间关系的视图。底层的地理信息可以用各种地图的方式进行表达,而这些表现方式可以被构建成“数据库的窗口”,来支持查询、分析和信息编辑。 3.从空间处理的角度看:GIS是一套用来从现有的数据集获取新数据集的信息转换工具。这些空间处理功能从已有数据集提取信息,然后进行分析,最终将结果导入到数据集中。 这三种观点在ESRIArcGIS中分别用ArcCatalog(GIS是一套地理数据集的观点)、ArcMap(GIS是一幅智能的地图)和ArcToolbox(GIS是一套空间处理工具)来表达。这三部分是组成一个完整GIS的关键内容,并被用于所有GIS应用中的各个层面。 从空间数据库的角度:

GIS是世界上独一无二的一种数据库――空间数据库(Geodatabase)。它是一个“用于地理的信息系统”。从根本上说,GIS是基于一种使用地理术语来描述世界的结构化数据库 这里我们来回顾一些在空间数据库中重要的基本原理。 地理表现形式 作为GIS空间数据库设计工作的一部分,用户要指定要素该如何合理的表现。例如,地块通常用多边形来表达,街道在地图中是中心线(centerline)的形式,水井表现为点等等。这些要素会组成要素类,每个要素类都有共同的地理表现形式。 每个GIS数据集都提供了对世界某一方面的空间表达,包括: 基于矢量的要素(点、线和多边形)的有序集合 诸如数字高程模型和影像的栅格数据集 网络 地形和其它地表 测量数据集 其他类型数据,诸如地址、地名和制图信息 描述性的属性 除了地理表现形式以外,地理数据集还包括传统的描述地理对象的属性表。许多表和空间对象之间可以通过它们所共有的字段(也常称为“关键字”)相互关联。就像它们在传统数据库应用中一样,这些以表的形式存在的信息集和信息关系在GIS数据模型中扮演着非常关键的角色。 空间关系:

ArcGIS入门教程(2)——ArcCatalog应用基础

ArcGIS 入门教程(2)——ArcCatalog 应用基础 ArcCatalog 应用基础 一、目的 掌握ArcCatalog 软件的基础操作,主要包括查看文件夹链接、备份数据、数据查看等,对ArcCatalog 软件的基础操作加以熟悉。二、数据 美国西北部黄石国家公园数据,其中包含个人地理数据库、coverages 文件、shape 文件、栅格数据集、TIN 数据集、dBASE 表和ArcMap 地图文档。三、步骤 3.1启动ArcCatalog 在开始菜单中找到ArcCatalog 并单击,启动ArcCatalog ,ArcCatalog 启动界面如图1 所示。图1ArcCatalog 启动界面 说明:ArcCatalog 窗口左侧为【目录树】,通过它可以大致了解数据如何组织。右侧是浏览【目录树】中选中数据项内容的各种选项卡。

3.2查看文件夹链接 在【目录树】中选中一个文件夹连接后,右边界面中【内容选项卡】会列出它所包含的数据项。与Windows资源管理器不同,ArcCatalog只会列出磁盘中存储的地理数据文件。即使一个文件夹中包含多个文件,也可能显示为空。包含地理数据的文件夹用不同的图标来显示,易于识别。 (1)选择【目录树】中的一个文件夹连接。【内容选项卡】会同步列出它所包含的数据项,图1 即为右键点击文件夹链接选择“连接到文件夹”的结果。 (2)双击【内容选项卡】中的“D:\山脊谷线”文件夹,该文件夹在【目录树】中被选中,【内容选项卡】列出它所包含的文件夹和地理数据,如图2所示。 图2 查看文件夹连接 说明:文件夹连接允许访问本机磁盘的文件夹或目录,或者网络上共享的文件夹。数据库连接可以访问数据库内容。从ArcCatalog中移除文件夹或者连接,只移除连接,并不删除数据。文件夹链接还可以用来浏览磁盘内容,查找地理数据。 3.3定位文件夹 (1)右击ArcCatalg主菜单空白出,选中“位置”,打开【位置】工具条,如图3 所示。 图3【位置】工具条 (2)在【位置】的文本框中输入数据所在路径,并回车,【目录树】中相应文件夹链接被创建和选中,如图4 所示。

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.doczj.com/doc/06730581.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 )

相关主题
文本预览
相关文档 最新文档