ArcObject应用开发 ——课程实践.

Slides:



Advertisements
Similar presentations
題目:徽章之記憶 南台科技大學 機械系 車輛一乙 學號:4A 姓名:黃冠嘉 教師:謝慶存
Advertisements

計算機程式及實習 期末報告 題目:超級猜一猜
第二章 VB的编程机制 【授课时间】第3周,第2次课 【授课题目】 2.1 面向对象程序设计概述 2.2 VB中的对象
本章重點 認識衣物的基本保養程序 處理不同污漬的方法 不同布料的保養方法
計算機概論 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 演算法與流程圖 4-3 視窗程式語言設計 4-4 資料結構.
計算機程式及實習 期末報告 題目:商店結帳系統
ooxx這個遊戲程式,非常的簡單只要你小時候會玩井字遊戲即可把電腦打敗,可以說是一種考智力取勝的遊戲。
有关血荒的讨论 张嘉然 杨晶 潘剑阳 马浩君 黄欣驰.
課程名稱:程式設計 授課老師:________
第四章 控制结构.
本章重點 認識香港不同年代時裝的特色 透過對服裝歷史的認識,了解香港的穿衣文化 透過服裝歷史加強對時裝潮流循環的洞悉力
第四章 基于VB的AO开发 (入门篇) 主讲:秦昆 博士
葉詠兒老師.
南台科技大學 機械工程系 車輛一甲 學號:4A 學生:黃信成 老師:謝慶存
Access数据库程序设计 总复习.
第二章 地理空间与空间数据基础 地理空间 地理空间的表达 空间数据模型与结构 空间数据的质量 空间数据的元数据 思考题.
客户端用Net-Library和SQL SERVER连接
課程名稱:程式設計 授課老師:________
地理資訊系統概論 第三章 地理資訊系統之組成架構.
网 络 课 程 马 鞍 学 网 络 山 课 程 大 络 网 Visual Basic程序设计 第 一 讲 最容易接受的编程语言
第五章 数组.
VBA应用开发与实例 李 辉 微软课程培训讲师. VBA应用开发与实例 李 辉 微软课程培训讲师.
題目:台灣客運 南臺科技大學 機械工程系 班級:奈米一乙 學號:4A 姓名:蔡政堯 授課教師:謝慶存
Visual Basic程序设计.
Chapter 1 複習.
CH11.
ArcGIS Server Mobile ADF
課程名稱:程式設計 授課老師:________
第16章 Windows Form與資料繫結 16-1 資料繫結的基礎 16-2 在專案新增資料來源 16-3 使用資料來源建立單筆編輯表單
Basis基本操作、使用者 管理與權限設定
(Exec1) GIS 空间分析-使用ArcGIS (Exec1)
第9章 GIS新技术与”数字地球”简介 北京建筑工程学院 王文宇.
第三章 空间数据处理 空间数据的输入与编辑 空间数据的压缩与编码 地理空间数据库 可视化与空间查询 思考题.
程式語言 -Visual Basic 變數、常數與資料型態.
1 巨集 2 資料型態 3 物件、屬性、方法與事件 4 陳述式與副函式 5 其他注意事項 6 範例
ASP动态网页设计实用教程 主讲教师: 开课单位:.
第4章 視窗應用程式的基本輸出入 4-1 物件基礎程式設計 4-2 表單控制項 4-3 按鈕控制項 4-4 資料輸出的標籤控制項
Access VBA程序设计 本章重点 Access Basic编程语言 运算符、函数与表达式 Access Basic语句 模块的使用
第4章 程序控制结构与算法基础.
新觀念的 VB6 教本 第七章 讓程式轉彎的控制敘述.
Visual Basic 程序设计教程 机械工业出版社同名教材 配套电子教案 2003 年 6月.
流程控制、陣列 台南市聖功女子高級中學 毛全良.
第12章 VBA模块设计.
地理資訊系統概念 第三章 地理資訊系統之組成.
新觀念的 VB6 教本 第 6 章 資料型別.
PCR300 (13.56MHz) Reader RS232/USB.
第四章 命令按钮、标签和文本框 大多数应用程序中都有命令按钮CommandButton控件,用户可以单击按钮执行某项操作。
算法与程序设计 周少品.
第 8 章 VB.NET与数据库应用程序 本章主要内容: ADO.NET体系结构; VB.NET与SQL Server数据库的连接;
VB程序设计语言 主讲教师:王 杨.
VB程序设计语言 主讲教师:王 杨.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
第4章 視窗應用程式的基本輸出入 4-1 物件基礎程式設計 4-2 表單控制項 4-3 按鈕控制項 4-4 資料輸出的標籤控制項
For x = 0 To 9 For y = 0 To 9 z = *x + 10*y …… Next y
江西财经大学信息管理学院 《数据库应用》课程组2007
1 城市心情分析 目的: 数据: 单元: 算法: 表达方式: 参考文献:
小结 郭清溥.
Ch04 VB.NET的流程控制 網頁程式設計.
现代信息技术 微电子技术 计算机技术 传感技术 通信技术 处理、存储信息的技术 传感、采集技术 传递信息的技术
第二章、第三章错题分析.
北投溫泉博物館 建築特色 ★小組成員:高103林孟璇、林念儀、施妤柔★.
选择结构设计 第 4 章 程序流程有三种最基本的控制结构,即顺序结构、选择结构和循环结构。
计算机应用基础 潍坊学院 计算机工程学院 主讲人:丁素英.
Create and Use the Authorization Objects in ABAP
1位选手参加了歌唱比赛,评委们的评分如下:
空间分析建模.
算法与Visual Basic程序基础(二)
程序调试与错误处理.
講師:劉俊民(金剛) Idea 創意應用科技有限公司
Presentation transcript:

ArcObject应用开发 ——课程实践

内容简介 ArcGIS产品介绍 结合ArcGIS软件介绍系统开发方式 COM编程基础 ArcObject简介 如何阅读OMD 简单的AO开发实例

ArcGIS介绍 ArcGIS概述 统一的地理信息系统平台 灵活性 信息技术标准 功能强大 ArcGIS由三个重要部分组成 ArcGIS 桌面软件 ,一个一体化的高级的GIS应用 ArcSDE通路,一个用数据库管理系统管理空间数据库的接口 ArcIMS软件,基于Internet的分布式数据和服务的GIS

ArcGIS桌面软件 ArcView ArcEditor ArcInfo

ArcSDE 是在数据库管理系统中存储和管理多用户空间数据库的通路。ArcGIS Desktop通过它来应用和管理Geodatabase数据。 ArcIMS 为ArcGIS系统增加了Internet地图服务能力 所有的ArcGIS桌面客户端可以通过Web从ArcIMS服务器动态地获取矢量数据流。

ArcGIS桌面系统 ArcMap ArcCatalog ArcToolBox

系统开发方式 自主开发:从底层做起 二次开发:利用专业软件提供的开发工具 组件式开发:针对功能生成动态链接库或控件 软件成本低,独立性强,但耗时耗力 软件成本高,独立性弱,开发周期短 4 可重用,针对具体应用需作相应修改

组件接口设计

ArcGIS开发方式 VBA+ ArcGIS(8.0)

ArcGIS开发方式 VBA+ ArcGIS(8.0) VB、VC+ArcObject VB、 VC+ArcEngine 7

ArcObject简介 ArcObject是一套ArcGIS的可重用的通用的二次开发组件集 ArcGIS ArcObject

ArcObject发展历程 1999年:ArcInfo8 2001年:ArcGIS8.1 2004年:ArcGIS9 ArcGIS Engine是嵌入式GIS产品 它将ArcObject中的一些组件单独打包出来,灵活性高,费用低 AO是指ArcGIS Desktop版本的组件集ArcObject,即ArcObject Desktop Development Kit(最完整版) fyuuijijklllkl

ArcObject对象模型图 ArcGIS9.0的Desktop版本中AO的枚举对象是647个,结构对象是35个 3073个接口,组件类2389个 一共是6144个对象,而且随着新版本的出现在不断增加

AO编程基础 基于接口的编程,基础是COM COM(Component Object Model)不是接口也不是类,而是一种二进制基本的组件通信标准,因此它是语言独立的。COM组件间所有通讯都通过组件的接口实现,一旦一个接口被添加,就不能被删除。 什么是接口?为什么要使用接口? 过程、函数 类 接口

接口和类 接口是一种用来定义程序的协定。它可以包含方法、属性和事件,但它本身并不提供它所定义的成员的实现,而只是指定实现该接口的类或接口必须提供的成员。 接口可以看作是一个特殊的类形式,除了不能被实例化为一个对象外,它可以实现类能够完成的任何任务,如声明对象为某种接口类型,接口也可以继承等。

接口和类的关系 Class Properties and Methods Interfaces DOG IDog Color Bark Growl Color CallPet Name IPet IDog Class Properties and Methods Interfaces

对象模型图的标记 组件类 抽象类 例化 类 继承 关联 组成 方法 属性 通过赋值来给对象属性分配一个值 通过引用设置对象的属性 Bird Chicken Nest Feather Wing Egg 2 *

对象模型图中的类 在OMD中有三类class,分别是抽象类(AbstractClass)、组件类(CoClass)和普通类(Class)。抽象类的主要目的是为它的子类定义公共接口,一个抽象类将把它的部分或全部实现延迟到子类中,因此,一个抽象类不能被实例化。一个组件类对象可以被直接创建,普通类对象虽然不能直接创建,但它可以作为其它类的一个属性或者从其它类的实例化来创建。 Dim pFeatureClass As IFeatureClass Set pFeatureClass = pFeatureLayer.FeatureClass Dim pMap As IMap Set pMap = pMxDoc.FocusMap

类的实例化 A和B为普通类对象,C为组件类对象,D为一普通类,如下面代码: A = B.writeA() A = C.writeA() A = New D X 普通类不能通过New方法产生 A的生命周期是由产生它的对象B和C控制的

类的继承 接口类型继承,并非继承其实现

接口继承和调用 父类接口所具有的方法和属性对派生接口都有效 IFeatureClass继承IClass接口 Inherit 父类接口所具有的方法和属性对派生接口都有效 IFeatureClass继承IClass接口 一个类同时支持这两个接口,则接口之间可相互调用

类和接口的关系 接口和类的关系 一个类可以支持多个接口,一个接口也可以由多个类实现。在接口中仅定义了接口需要实现的属性和方法,属性和方法的具体实现是在类中完成的。 查询接口:是指在同一个对象上使用附加的接口 Polygon类支持IPolygon和IArea接口,通过IPolygon接口中的Length属性可以得到其周长,通过IArea接口的Area属性可以得到其面积。 set pArea=New Polygon (X) set pArea=pPolygon (√)

用VB和ESRI Map Control开发初步 显示包含多个图层的地图 控制图层的漫游和放大 创建工具条 根据设置的比例尺范围显示地图 完成空间和属性查询 通过编程实现图层的加载

在VB中加载 Map Control控件

引用相应的类库 为了保证能使用所有可用的ArcObject组件,必须添加对相应类库的引用

使用Map control控件 2. 向Map control地图中添加数据 4. 保存工程,检查运行效果 3. 设置图层显示属性

实现漫游和放大功能 添加漫游功能 添加全景按钮

添加工具条 1. 在窗体中添加Toolbar和ImageList控件 2. 向ImageList控件中添加图片(ArcGIS\bin) 5. 修改MouseDown事件 6. 响应Toolbar的ButtonClick事件

添加属性查询工具 1. 在窗体中添加Label和Textbox控件 2. 在Textbox的KeyPress事件中添加代码 If KeyAscii = vbKeyReturn Then ' Find the States layer Dim i As Integer Dim pFeatLyr As IFeatureLayer For i = 0 To MapControl1.LayerCount - 1 Set pFeatLyr = MapControl1.Layer(i) If pFeatLyr.Name = "states" Then ' Found it and exit loop Exit For End If Next i ' Create a string to use in the query Dim queryStr As String queryStr = "STATE_NAME = '" & Text1.Text & "'" ' Create the query filter Dim pQueryFltr As IQueryFilter Set pQueryFltr = New QueryFilter pQueryFltr.WhereClause = queryStr ' Perform the selection Dim pFeatSeln As IFeatureSelection ' QI for IFeatureSelection from the ' IFeatureLayer Set pFeatSeln = pFeatLyr pFeatSeln.SelectFeatures _ 添加属性查询工具 pQueryFltr, esriSelectionResultNew, False ' Get the selection set Dim pSelSet As ISelectionSet Set pSelSet = pFeatSeln.SelectionSet ' Get the cursor from the selection set Dim pFeatCursor As IFeatureCursor pSelSet.Search Nothing, True, pFeatCursor ' Assume only one feature Dim pFeature As IFeature Set pFeature = pFeatCursor.NextFeature If Not pFeature Is Nothing Then ' Get the extent of the selected feature Dim pExtent As IEnvelope Set pExtent = pFeature.Shape.Envelope ' And set the Map control's extent MapControl1.Extent = pFeature.Shape.Envelope End If End Sub 1. 在窗体中添加Label和Textbox控件 2. 在Textbox的KeyPress事件中添加代码

设置图层显示的比例尺范围 1. 在Map control属性页中添加图层,调整图层显示顺序 2. 根据指定字段值渲染图层 Dim pLayer As ILayer Dim i As Integer ' Iterate through all layers For i = 0 To MapControl1.LayerCount - 1 Set pLayer = MapControl1.Layer(i) ' Note case sensitivity If UCase(pLayer.Name) = "COUNTIES" Then pLayer.MaximumScale = 0 pLayer.MinimumScale = 15000000 ElseIf UCase(pLayer.Name) = "STATES" Then pLayer.MaximumScale = 14999999 pLayer.MinimumScale = 0 End If Next i 1. 在Map control属性页中添加图层,调整图层显示顺序 2. 根据指定字段值渲染图层 3. 在Form_Load事件中设置图层显示比例尺范围

实现空间查询功能 在Map control的Mouse Down事件中添加代码 With Toolbar1.Buttons If .Item("Zoom").Value = tbrPressed Then MapControl1.Extent = MapControl1.TrackRectangle ElseIf .Item("Pan").Value = tbrPressed Then MapControl1.Pan ElseIf .Item("SelectByPolygon").Value = tbrPressed Then Dim pSearchShape As IPolygon ' Create the search shape Set pSearchShape = MapControl1.TrackPolygon ' Do the actual selection With MapControl1 .Map.ClearSelection .Refresh esriViewGeoSelection .Map.SelectByShape pSearchShape, Nothing, False ' And refresh the map End With End If 在Map control的Mouse Down事件中添加代码

通过编程实现图层加载 AddLayerFromFile:layer文件(.lyr) AddShapeFile:Shapefile文件 ' Change the paths to reflect your installation Dim pFactory As IWorkspaceFactory Dim pWorkspace As IFeatureWorkspace Dim pFeatLayer As IFeatureLayer ' Create a new ShapefileWorkspaceFactory object Set pFactory = New ShapefileWorkspaceFactory Set pWorkspace = pFactory.OpenFromFile("C:\Data\USA", 0) ' Create a new FeatureLayer and assign a shapefile to it Set pFeatLayer = New FeatureLayer Set pFeatLayer.FeatureClass = pWorkspace.OpenFeatureClass("States") pFeatLayer.Name = pFeatLayer.FeatureClass.AliasName ' Add the FeatureLayer to the map With MapControl1 .AddLayer pFeatLayer .AddShapeFile "C:\Data\USA", "counties" .AddShapeFile "C:\Data\USA", "USHigh" End With AddLayerFromFile:layer文件(.lyr) AddShapeFile:Shapefile文件 AddLayer:Coverages, TIN, Raster, or ArcSDE

利用Catalog实现数据处理 建立所需数据库 在数据库中创建新图层 设置图层相应属性 图层导入导出

ArcCatalog树状视图 文件和文件夹 * 地图、图层和图形 Feature Dataset GeoDatabase 1 Feature Class * 地图、图层和图形

数据组织

创建新图层