第四章 基于VB的AO开发 (入门篇) 主讲:秦昆 博士

Slides:



Advertisements
Similar presentations
第二章 VB的编程机制 【授课时间】第3周,第2次课 【授课题目】 2.1 面向对象程序设计概述 2.2 VB中的对象
Advertisements

計算機程式及實習 期末報告 題目:商店結帳系統
第10章 处理图形 Visual Basic 程序设计教程.
第四章 控制结构.
插入超链接 高邮市第一实验小学 范太国 任务一:设置文本超链接 任务一:设置文字超链接 步骤:1、选定文字并右击,在快捷菜单 中选择“超链接”命令。 2、在弹出的对话框中选择左侧“链接到:”中的“本文档中的位置(A)”项,在“请选择文档中的位置(C):”中选择需要链接的幻灯片,单击“确定”按钮。
1.了解VB6.0的功能特点 、集成环境。 2.理解面向对象程序设计的几个概念。 3.掌握VB应用程序设计的步骤。
客户端用Net-Library和SQL SERVER连接
Visual Basic程序设计 主 编  柳青.
网 络 课 程 马 鞍 学 网 络 山 课 程 大 络 网 Visual Basic程序设计 第 一 讲 最容易接受的编程语言
新觀念的 VB6 教本 第 3 章表單設計.
在PHP和MYSQL中实现完美的中文显示
題目:台灣客運 南臺科技大學 機械工程系 班級:奈米一乙 學號:4A 姓名:蔡政堯 授課教師:謝慶存
Visual Basic程序设计.
CH11.
課程名稱:程式設計 授課老師:________
第2章 建立Visual Basic應用程式 2-1 如何設計Visual Basic應用程式 2-2 建立主控台應用程式
第2章 建立Visual Basic應用程式.
程式語言 -Visual Basic 變數、常數與資料型態.
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
初识Visual Basic.
第一章 VB概述 本章重点和难点 1.1 VB 概述 1.2 面向对象的程序设计方法基础
Visual Basic程序设计基础 计算机科学学院.
第4章 程序控制结构与算法基础.
Visual Basic 程序设计教程 机械工业出版社同名教材 配套电子教案 2003 年 6月.
第4章 基本的控制结构 4.1 顺序结构 4.2 选择结构程序设计 4.3 循环结构 4.4 综合实例 退出.
走进编程 程序的顺序结构(二).
辅导课程六.
程式設計 Visual Basic簡介 週次:1 建國技術學院 資管系 饒瑞佶 2003年9月17日.
Hub Web System 主要功能: 1.查询库存(Query Current Storage) 2.创建PL(Create PL) 3.查询、打印PL单(Query & Print PL) 4.查询允交量、在途量 5.修改用户的基本信息(Update Password) 6.查询GR(Query.
PCR300 (13.56MHz) Reader RS232/USB.
第四章 命令按钮、标签和文本框 大多数应用程序中都有命令按钮CommandButton控件,用户可以单击按钮执行某项操作。
Visual Basic程序设计.
第二章 创建用户界面 本章重点和难点 2.1 基本属性 2.2 创建窗体 2.3 Visual Basic的常用控件 2.4 制作菜单.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
算法与程序设计 周少品.
VB程序设计语言 主讲教师:王 杨.
VB程序设计语言 主讲教师:王 杨.
POWERPOINT TEMPLATE HI.
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
VB语言程序设计教程.
107學年度高一程式設計 上機考試 投影片 加減乘除.
ArcObject应用开发 ——课程实践.
产品推广 PRODUCT PROMOTION PRESENTED BY OfficePLUS.
電腦軟體設計丙級 Visual Basic簡介 建國科技大學 資管系 饒瑞佶 2010年.
第二章、第三章错题分析.
姚金宇 MIT SCHEME 使用说明 姚金宇
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
CLICK HERE TO ADD YOUR TITLE
第4章 Excel电子表格制作软件 4.4 函数(一).
Visual Basic 程序设计及应用教程 (6.0版)
iSIGHT 基本培训 使用 Excel的栅栏问题
3.16 枚举算法及其程序实现 ——数组的作用.
計算機程式 Visual BASIC 程式設計
计算机应用基础 潍坊学院 计算机工程学院 主讲人:丁素英.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
算法及VB初步实现1.
程式設計 Visual Basic簡介 週次:4 建國技術學院 資管系 饒瑞佶 2003年10月18日.
VRP教程 2011.
Delphi 7.0开发示例.
1位选手参加了歌唱比赛,评委们的评分如下:
熟悉PowerDesiner12操作环境 菜单栏 标题栏 工具栏 导航栏 工作区 浮动工具条 导航选项卡 控制信息栏 状态栏.
Print方法和函数 2019/5/19.
Python 环境搭建 基于Anaconda和VSCode.
程式設計 Visual Basic簡介 週次:4 建國技術學院 資管系 饒瑞佶 2003年11月1日.
VB程序设计初体验 主讲:林赛雅.
回归分析实验课程 (实验三) 多项式回归和定性变量的处理.
YOUR SUBTITLE GOES HERE
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
Presentation transcript:

第四章 基于VB的AO开发 (入门篇) 主讲:秦昆 博士   第四章 基于VB的AO开发 (入门篇) 主讲:秦昆 博士 Email:qqqkkk@263.net 武汉大学遥感信息工程学院 二零零四年十二月

第四章 基于VB的AO开发(入门篇) 下面介绍如何一步一步进行基于VB的简单的AO程序的开发。 1、设置环境 (1)打开一个Visual Basic工程,并创建一个标准的EXE工程。 如下图所示。

第四章 基于VB的AO开发(入门篇) (2)点击VB的Project菜单,然后点击Components. (3)在Components对话框中,点击ESRI MapControl, 然后点击”确定”

第四章 基于VB的AO开发(入门篇) MapControl将出现在VB工具盒中。

第四章 基于VB的AO开发(入门篇) (4) 点击Project菜单,然后点击References. (5)在References对话框中,点击ESRI Object Library 和ESRI Controls Support Library8.3,然后点击OK。

第四章 基于VB的AO开发(入门篇) 2、添加MapControl 可以在一个VB窗体中添加一个或多个MapControl。 (1)点击VB工具箱中的MapControl图标。 (2)点击并拖动到VB窗体的适当位置。 或者是双击MapControl图标,MapControl将自动放置在窗体上。 如下图所示。

第四章 基于VB的AO开发(入门篇) 3、MapControl的属性页。 MapControl有5个属性页:General, Layers, Map, Color和Picture。 (1)右键点击MapControl,然后点击Properties,打开MapControl的属性页。

第四章 基于VB的AO开发(入门篇) (2) 使用What’s This按钮,获取属性页的帮助。 ( 1)在属性页对话框中,右键点击某个控件或标签 ( 2)然后点击What’s This按钮,将显示相关的帮助信息。 3)点击属性页的其他的任何地方,关闭帮助。

第四章 基于VB的AO开发(入门篇) (3)直接点击属性页对话框的“帮助”按钮,获取相关的AO的帮助。

第四章 基于VB的AO开发(入门篇) (4)使用属性页添加数据 1)右键点击MapControl,然后点击Properties,然后打开MapControl 属性页。 2)点击Layers标签。 3)点击Add Layers 按钮(“+”按钮)。

第四章 基于VB的AO开发(入门篇) 4)在Add Layers对话框中,导航到包含数据的文件夹。 5)点击并高亮显示需要添加的数据,如果需要选择多个数据,通过同时按住shift键的方式进行选择。  6)点击Add按钮,将选中的数据添加到MapControl中。 7)点击“确定”按钮,应用选中的图层,并自动关闭属性页对话框。

第四章 基于VB的AO开发(入门篇) 8)点击“Run”菜单,并点击“Start”子菜单,运行程序(或者直接按F5)。 运行程序,得到如下图所示的结果。

第四章 基于VB的AO开发(入门篇) 5、示例数据的安装 点击安装盘的SampleMaps文件,进行示例数据的安装。

第四章 基于VB的AO开发(入门篇) 6、从Map Document中添加数据。 (1)右键点击MapControl,然后点击“Properties”,在属性页对话框中,点击“Layers”标签。 (2)点击浏览图形文档(Browse Map Document button)按钮。如下图所示。

第四章 基于VB的AO开发(入门篇) (3)在Map Documents对话框中,导航到包含所需要选择的map document的文件夹。 (4)点击并高亮显示目标map document,然后点击“打开”按钮。

第四章 基于VB的AO开发(入门篇) (5)在“Maps in MapDocument”对话框中选择所需要的图形。 (6)点击“Load Selected Map”按钮,添加所有的图层。 或者,在“Layers in Selected Map”中选择某个确定的图层,然后点击“Load Selected Layer”按钮,添加所选择的图层。也可以通过按住shift键,选择多个图层。 (7)点击“确定”按钮, 应用所作的选择。

第四章 基于VB的AO开发(入门篇) (8)点击“Run”,运行程序,得到如图所示的结果。

第四章 基于VB的AO开发(入门篇) 7、使用属性页管理数据。 (1)如下图所示,可以通过点击移动图层顺序的按钮,移动图层的上下顺序,一般将栅格数据放在下面。

第四章 基于VB的AO开发(入门篇) (2)如上图所示,点击“Properties button”(属性按钮),弹出如下图所示的图层属性的设置对话框。可以修改图层的相关属性,例如,将符号(Symbol)该为玫瑰色,如下图。

第四章 基于VB的AO开发(入门篇) (3)运行结果为:

第四章 基于VB的AO开发(入门篇) 8、使用属性页设置控件的外形。 在如图所示的属性页的“General”选项卡,选中“Preview in Design Mode”,然后点击“确定”。 然后改变控件的相关外形,如边界的类型,然后点击“应用”, 就可以在设计模式下观察修改的结果。

第四章 基于VB的AO开发(入门篇) 9、使用属性页设置图形属性 利用“Map” 属性页可以设置图形的相关属性,如坐标系统、比例尺、图形的旋转角度等。 如下图所示,在属性页的“Map”选项卡中,将旋转角度改为30度,运行结果如下图所示。

第四章 基于VB的AO开发(入门篇) 旋转30度的图 原图

第四章 基于VB的AO开发(入门篇) 10、更新属性,编辑代码 (1)更新属性:点击MapControl激活,然后按F4,或者是View菜单,然后点击Properties Windows子菜单,如下图所示。

第四章 基于VB的AO开发(入门篇) 点击Custom属性的(…)按钮,打开MapControl的属性页,如下图,更新相关的属性。

第四章 基于VB的AO开发(入门篇) (2)编辑代码 点击MapControl激活。 点击F7,或双击MapControl,或者点击View菜单,然后点击Code子菜单,进行代码的编辑。

第四章 基于VB的AO开发(入门篇) 11、使用ArcObjects开发帮助 ArcObjects开发帮助提供了关于ArcObjects中的每个对象(object), 属性(property),方法(method)和事件(event)的相关帮助。 (1)打开ArcObjects Developer Help 1)点击MapControl 、激活MapControl。 2)按F1,打开 ArcObjects Developer Help, 如图所示。

第四章 基于VB的AO开发(入门篇) (2)从对象浏览器(Object Browse)中获取帮助 1)点击F2或者点击View菜单,选择Object Browser子菜单。 2)从Project/Library下拉列表中选择esriMapControl。 3)在类列表(Classes)中选择MapControl,然后从成员列表(Members of ‘MapControl’)中选择一个事件、方法或属性。 4)点击Help button(帮助按钮),打开相关的帮助信息。

第四章 基于VB的AO开发(入门篇) 如下图,显示方法AddLayer的相关帮助信息。

第四章 基于VB的AO开发(入门篇) (3)从编辑窗口中获取帮助 在编辑窗口中,移动光标到ArcObjects的某个对象、属性、事件、方法的词上(如下图所示),然后点击F1获取相关的帮助。

第四章 基于VB的AO开发(入门篇) 12、添加ZoomIn(放大)功能 在OnMouseDown程序中添加如下代码:

第四章 基于VB的AO开发(入门篇) 运行程序以后,用鼠标点击图形,然后拉动一个矩形,释放鼠标。 图层将放大显示。

第四章 基于VB的AO开发(入门篇) 13、添加Pan(漫游)功能 修改前面的OnMouseDown程序,如果点击左键,则执行放大操作,如果点击右键,则执行移动操作。代码如下: 运行程序,执行相关的放大和漫游操作。

第四章 基于VB的AO开发(入门篇) 14、添加移动到全范围(Zoom to Full Extent)的功能 (1)在VB的窗体上添加一个命令按钮(CommandButton)。修改命令按钮的Caption属性为”Full Extent” (2)双击Full Extent命令按钮,添加代码。 Private Sub Command1_Click() MapControl1.Extent = MapControl1.FullExtent End Sub (3)点击MapControl控件,修改ShowScrollbars属性为False。 (4)运行程序,测试成果。

第四章 基于VB的AO开发(入门篇) 15、创建Find(寻找)工具 给定一个州的名字,找到该州,并放大显示。 例子数据位于:\\arcgis\arcexe83\\ArcObjects Developer Kit\Samples\Data\Usa 操作如下: (1)使用属性页添加图层states.shp和ushigh.shp。 (2)添加一个Label按钮,并修改其Caption属性为:“State”。 (3)添加一个TextBox按钮,并清除其text属性。 (4)双击TextBox按钮,进入代码编写环境。 (5)选择KeyPress事件,然后添加如下代码。

Private Sub Text1_KeyPress(KeyAscii As Integer) 第四章 基于VB的AO开发(入门篇) Private Sub Text1_KeyPress(KeyAscii As Integer) 'if the return key has been pressed If KeyAscii = vbKeyReturn Then Dim i As Integer Dim pFeatureLayer As IFeatureLayer 'Loop through the MapControl layers to find the States layer For i = 0 To MapControl1.LayerCount - 1 Set pFeatureLayer = MapControl1.Layer(i) If pFeatureLayer.Name = "States" Then Exit For End If Next i

第四章 基于VB的AO开发(入门篇) 'Create a query string Dim sQuery As String sQuery = "STATE_NAME = '" & Text1.Text & "' " 'Create the query filter Dim pQueryFilter As IQueryFilter Set pQueryFilter = New QueryFilter pQueryFilter.WhereClause = sQuery 'Query interface for IFeatureSelection and perform selection Dim pFeatureSelection As IFeatureSelection Set pFeatureSelection = pFeatureLayer pFeatureSelection.SelectFeatures pQueryFilter, esriSelectionResultNew, True 'Get the selection set Dim pSelectionSet As ISelectionSet

第四章 基于VB的AO开发(入门篇) Set pSelectionSet = pFeatureSelection.SelectionSet 'Get the feature cursor Dim pFeatureCursor As IFeatureCursor pSelectionSet.Search Nothing, True, pFeatureCursor 'Get the selected feature Dim pFeature As IFeature Set pFeature = pFeatureCursor.NextFeature If pFeature Is Nothing Then Exit Sub 'Set the MapControl extent to the extent of the selected feature MapControl1.Extent = pFeature.Shape.Envelope End If End Sub

第四章 基于VB的AO开发(入门篇) (6)运行程序 输入美国各州的名称,然后回车,将放大显示相关的图形,例如: 新泽西州

第四章 基于VB的AO开发(入门篇) 俄亥俄州

第四章 基于VB的AO开发(入门篇) 德克萨斯州

第四章 基于VB的AO开发(入门篇) (7)代码的解释: Private Sub Text1_KeyPress(KeyAscii As Integer) 'if the return key has been pressed If KeyAscii = vbKeyReturn Then Dim i As Integer Dim pFeatureLayer As IFeatureLayer 'IFeatureLayer 可以代表某一个具体的图层,可以改变该图层的的一些属性

第四章 基于VB的AO开发(入门篇) 'Loop through the MapControl layers to find the States layer For i = 0 To MapControl1.LayerCount - 1 Set pFeatureLayer = MapControl1.Layer(i) If pFeatureLayer.Name = "States" Then Exit For End If Next i '以上代码表示找到图层名为“States”的图层。

第四章 基于VB的AO开发(入门篇) 'Create a query string Dim sQuery As String sQuery = "STATE_NAME = '" & Text1.Text & "' " ‘定义一个查询条件的一部分,条件为:STATE_NAME(州名)等于文本编辑框给出的名称。 'Create the query filter Dim pQueryFilter As IQueryFilter Set pQueryFilter = New QueryFilter pQueryFilter.WhereClause = sQuery '创建一个查询过滤条件,IQueryFilter用来确定一个查询过滤条件

第四章 基于VB的AO开发(入门篇) 'Query interface for IFeatureSelection and perform selection Dim pFeatureSelection As IFeatureSelection 'IFeatureSelection提供特征选择集 Set pFeatureSelection = pFeatureLayer pFeatureSelection.SelectFeatures pQueryFilter, esriSelectionResultNew, True 'SelectFeatures:基于特定的判定条件选择符合条件的特征。 'Get the selection set Dim pSelectionSet As ISelectionSet 'ISelectionSet:提供对选中的特征的管理

第四章 基于VB的AO开发(入门篇) Set pSelectionSet = pFeatureSelection.SelectionSet 'Get the feature cursor Dim pFeatureCursor As IFeatureCursor 'IFeatureCursor:列出选中的特征集合 pSelectionSet.Search Nothing, True, pFeatureCursor '将搜索的到的特征赋给pFeatureCursor

第四章 基于VB的AO开发(入门篇) 'Get the selected feature Dim pFeature As IFeature Set pFeature = pFeatureCursor.NextFeature '设定选中的特征对象 If pFeature Is Nothing Then Exit Sub 'Set the MapControl extent to the extent of the selected feature MapControl1.Extent = pFeature.Shape.Envelope '放大到选中的对象的范围,并显示边界 End If

第四章 基于VB的AO开发(入门篇) 16、响应窗体大小的改变 当窗体大小改变时,MapControl的大小不能自动改变,下面介绍如何使MapControl随着窗体大小的改变而改变。 在窗体的resize函数中添加以下代码: Private Sub Form_Resize() If (ScaleWidth <> 0) Then 'Constant spacing Dim iSpace As Integer iSpace = Text1.Top - (MapControl1.Top + MapControl1.Height) 'y coordinate for text box, label and command Dim iYCoord As Integer

第四章 基于VB的AO开发(入门篇) iYCoord = ScaleHeight - Text1.Height - iSpace 'MapControl height Dim iMapHeight As Integer iMapHeight = iYCoord - iSpace 'Move the controls If (iMapHeight > 0) Then Command1.Move ScaleWidth - Command1.Width, iYCoord Text1.Move Text1.Left, iYCoord Label1.Move Label1.Left, iYCoord MapControl1.Move 0, 0, ScaleWidth, iMapHeight 'ScaleWidth, iMapHeight:内部的水平方向和垂直方向上的度量值。

第四章 基于VB的AO开发(入门篇) End If End Sub 同时,在Form_Load程序中添加如下代码: Private Sub Form_Load() Form_Resize 运行程序,测试成果。

第四章 基于VB的AO开发(入门篇) 17、基于比例尺显示图层 添加一个新的图层到MapControl,通过代码确定某个图层是否可见。在某个比例尺下,不必显示太多的细节。 (1)利用属性页将counties.shp添加到MapControl中。 (2)将counties图层移动到states图层之下。

第四章 基于VB的AO开发(入门篇) (3) (3)点击属性按钮,显示counties图层的属性,点击Symbology选项卡,点击Categories,然后点击Unique Values。 (4)选择STATE_NAME字段,然后点击Add All Values按钮,然后点击“确定”。

第四章 基于VB的AO开发(入门篇) (5)然后在Form Load程序中添加如下代码: Dim pLayer As ILayer Dim i As Integer 'Loop through the MapControl layers For i = 0 To MapControl1.LayerCount - 1 Set pLayer = MapControl1.Layer(i) 'Set scale thresholds If UCase(pLayer.Name) = "COUNTIES " Then 'Layer.MaximumScale = 0# 'pLayer.MinimumScale = 15000000#

第四章 基于VB的AO开发(入门篇) pLayer.MinimumScale = 0# pLayer.MaximumScale = 15000000#   ElseIf UCase(pLayer.Name) = "STATES" Then pLayer.MaximumScale = 14999999# End If Next I 运行程序,放大图形,直到counties图层可见为止。 当点击Full Extent按钮后,counties图层不再可见。

第四章 基于VB的AO开发(入门篇) 18、通过代码添加图层 解释: AddShapefile方法:添加一个新的图层到MapControl的顶部图层。 AddLayer方法:在确定的顺序添加一个图层。图层可以是不同的格式的,如TIN, Raster, coverage, 或者是ArcSDE的。 LoadMxFile和AddLayerFromFile方法也可以用来添加数据到MapControl。 (1)在属性页中删除MapControl中的所有图层。 (2)在代码区添加如下代码:

第四章 基于VB的AO开发(入门篇) Private Sub LoadMapData() 'Change this path to reflect your ArcGIS installation Dim sPath As String sPath = "d:\arcgis\arcexe83\ArcObjects Developer Kit\Samples\Data\usa" 'Create a new shapefileWorkspaceFactory object Dim pWorkspaceFactory As IWorkspaceFactory Set pWorkspaceFactory = New ShapefileWorkspaceFactory 'Create a feature workspace Dim pFeatureWorkspace As IFeatureWorkspace Set pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(sPath, 0)

第四章 基于VB的AO开发(入门篇) 'Create a new feature layer and assign it a shapefile Dim pFeatureLayer As IFeatureLayer Set pFeatureLayer = New FeatureLayer Set pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass("states") pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName 'Add the feature layer to the map MapControl1.AddLayer pFeatureLayer MapControl1.AddShapeFile sPath, "counties" MapControl1.AddShapeFile sPath, "ushigh" End Sub

第四章 基于VB的AO开发(入门篇) 在Form Load事件中的Form_Resize后面添加如下语句。 LoadMapData 运行程序,测试成果。

End! Thanks!