最新第5.1讲 组件式GIS二次开发关键技术讲学课件
GIS二次开发使用PPT教案
Class flyBird inherit from Bird{ String Name; Publice fly { … }
}
第15页/共45页
在OOP中,继承的概念很好的支持了代码的重用 性(reusability),也就是说,我们可以向一 个已经存在的类中添加新的特性,而不必改变 这个类。这可以通过从这个已存在的类派生一 个新类来实现。这个新的类将具有原来那个类 的特性,以及新的特性。而继承机制的魅力和 强大就在于它允许程序员利用已经存在的类 (接近需要,而不是完全符合需要的类),并 且可以以某种方式修改这个类,而不会影响其 它的东西。
第23页/共45页
第24页/共45页
DCOM
基于分布式环境下的COM被称作 DCOM(Distribute COM,分布式组件对象模 型)。
DCOM是ActiveX的基础,它实现了COM对象 与远程计算机上的另一个对象之间直接进 行交互。
第25页/共45页
ActiveX与ActiveX控件
第26页/共45页
ActiveX的内容
ActiveX控件(ActiveX Control):
用于向WEB页面、Microsoft Word等支持 ActiveX 技术的容器(Container)中插入 COM对象;
ActiveX文档(ActiveX Document):
用于在Web Browser或者其它支持ActiveX的 容器中浏览复合文档(非HTML文档),例如 Microsoft Word文档、Microsoft Excel文 档或者用户自定义的文档等
第27页/共45页
ActiveX的内容
ActiveX脚本-(ActiveX Scripting)
GIS二次开发第二章AO基本理论
属性页
事件
“伙伴”控件
GIS二次开发
2.4 Arcobjects的常用控件
2.4.2 主要控件简要
在ArcGIS 中,Arcobjects包含的控件最多、最全。
主要包括:
地图控件(MapControl) 布局控件(PagelayoutControl) 工具条控件(ToolbarControl) 图层控件 (TOCControl) 三维显示控件(SceneControl) 全球显示控件(GlobeControl) 地图浏览控件(ReaderControl)
表示符号:
实例化(Instantiation)指定一个类的对象具有
能够创建另外一个类对象的方法。
GIS二次开发
2.3 使用对象模型图(OMD)
2.3.3 类与类之间的关系
聚合关系
表示符号: 聚合(Aggregation)是一种不对称的关联方式, 在这种方式下一个类的对象被认为是一个“整 体”,而另一个类的对象被认为是“部件”。
GIS二次开发
2.1 COM基础
2.1.2 什么是COM
COM(Component Object Modal的简写),即组 件对象模型,是组件类、组件接口和组件间相互说明的 集合。
COM不是一种面向对象的编程语言,而是微软公司推 出一种协议或者标准。 COM不仅仅是一种技术,更是一种软件开发的方法 (论)。
GIS二次开发
第2章 Arcobjects的基本知识
图2-1 控件、组建库、类和接口之间的关系
GIS二次开发
第2章 Arcobjects的基本知识
2.3 使用对象模型图(OMD)
基于组件式地理信息系统的二次开发
文章编号:1000-582x(2000)06-0121-03基于组件式地理信息系统的二次开发Ξ宋 扬,李见为,曾 航,钟 建(重庆大学光电工程学院,重庆 400044) 摘 要:组件式地理信息系统是符合软件组件化潮流的新一代地理信息系统。
笔者阐述了组件式地理信息系统的基本概念和技术基础,并以G eomdaei平台为例讨论了基于组件式地理信息系统的二次开发。
关键词:地理信息系统;组件式软件;二次开发;G eomedia 中图分类号:TP315;TP311 文献标识码:A1 Com GIS(Components GIS,简称Com GIS)1.1 Com GIS的基本概念自从微软提出OL E/ActiveX控件规范以来,组件式软件技术已经成为当今软件发展的潮流之一。
在面向对象的编程技术发挥了它的全部潜力之后,它已经成为一群对象的孤岛,这些对象不能穿越应用程序的边界这一海洋,因而不能以一种有意义的方式彼此交流信息。
而组件式设计思想的关键点在于:程序代码片段可直接使用,无需重新编译;开发人员不需程序源码;组件不限于一种编程语言,即所谓“二进制重用”。
地理信息系统(G eographic Information System)技术本身正处于一个重要的发展时期,计算机技术和In2 ternet的飞速发展,对GIS产生了巨大的冲击, Com GIS和万维网GIS(Web GIS)等新技术应运而生。
GIS软件象其它软件一样,已经或正在发生着革命性的变化,即由过去厂家提供了全部系统或者具有二次开发功能的软件,过渡到提供组件由用户自己再开发的方向上来。
Com GIS基于标准的组件式平台,各个组件之间不仅可以进行自由、灵活的重组,而且具有可视化的界面和符合ActiveX控件’96规范的标准接口。
系统集成的本质就在于对已有的软件系统功能进行再利用,以满足当前的需要。
可见控件技术的出现为系统集成在编程上提供了巨大的支持,考虑到GIS对控件功能的特殊要求,已有GIS专用的所谓空间ActiveX控件(Spatial ActiveX Component Object)出现。
GIS二次开发第五章空间分析
程序代码:
第一步:界面设计;
程序代码:
第二步:数据添加;
程序代码:
第三步:查询条件设置;
程序代码:
第四步:查询结果显示;
GIS二次开发
第5章 空间分析
5.3.2 基于空间位置查询
基于空间位置查询是根据对象空间位置查询有关的信 息,又称为“图形查属性”。
要素间的空间关系主要有以下几种:
➢ 相交(Intersect) ➢ 相接(Touch) ➢ 叠加(Overlap) ➢ 穿越(Crosses) ➢ 在内部(Within) ➢ 包含(Contains)
➢5.1.3 常用GIS平台空间分析 功能比较
第5章 空间分析
5.1 空间分析概述
5.1.1 空间分析概念
空间分析的概念,从不同的角度理解有不同的定义方式:
➢从侧重于空间实体对象的图形与属性的交互 查询角度考察
空间分析是从GIS目标之间的空间关系中获取派 生的信息和新的知识。
分析对象是地理目标的空间关系;
GIS二次开发
第五章
空间分析
GIS二次开发
第五 章空间分析
5.1 空间分析概述 5.2 空间几何图形集合运算 5.3 空间查询 5.4 缓冲区分析 5.5 叠置分析 5.6 网络分析
GIS二次开发
第5章 空间分析
5.1 空间分析概述
➢5.1.1 空间分析的概念 ➢5.1.2 基于GIS的空间分析
这些关系之间的运算属于关系运算,可以 通IRelationalOperator接口实现;
所有支持ITopologicalOperator接口的几 何对象的类都实现了IRelationalOperator接 口,包括Envelope。
第5章 空间分析
MAPGIS二次开发讲义
MAPGIS二次开发讲义成熟实用的地理信息系统(GIS)的重要标志就是它提供给用户的二次开发能力。
MAPGIS提供完整的二次开发函数库。
用户完全可以在MAPGIS平台上开发面向各自领域的应用系统。
操作系统、MAPGIS开发库及MAPGIS应用程序的相互关系如下图所示:MAPGISMAPGIS应用程序空间分析窗口操作…图库操作图形、图象I/O开发库工作区管理MAPGIS二次开发函数库包括下表所列部分,这些库函数都支持Window3.某,Window95和NT操作系统。
MAPGIS二次开发函数库支持的语言包括Borlandc++,Viualc++,Viualbaic等高级语言程序设计环境。
函数库名称动态库文件32位函数库(支持Window95,NT)c,c++连接文件工作区基础函数图形显示输出工作区管理函数图形窗口操作空间分析函数地图库读取显示图形编辑函数ba32.dllMapdp32.dllw32_area.dllW32_oper.dllW32_anly.dllD32_view. dllMaped32.dllBa32.libMapdp32.libW32_area.libW32_oper.libW32_anl y.libD32_view.libMaped32.lib表1MAPGIS函数库c,c++说明文件Win_area.hMap_out.hWin_area.hWin_oper.hSpc_anly.hDb_view.hMapedi t.hvb说明文件W32_area.baMapdp32.baW32_area.baW32_oper.baW32_anly.baMaped32.ba Window3.某、Window95、WindowNT基于MAPGIS平台的应用程序MAPGIS二次开发函数采用匈牙利命名法,即动宾结构命名法,并且所有函数都以下横线开始,以便和Window函数以及其他语言函数明显区别开来,如_GetLin表示取线实体;在ViualBaic环境下,由于ViualBaic语言不能识别以下横线开始的函数名,所以库函数都以字母b开始,如bGetLin表示取线实体。
组件式GIS二次开发
4.9 属性查询
.SearchByDistance()函数的用法
Set variable = object.SearchByDistance( shape, tolerance, expression) .
FlashShape()函数的用法 object.FlashShape shape, nTimes MXFlexGrid控件的使用
注意!
在将对象的引用赋给变量、数据类型的元 素或可写对象的属性时,须使用关键字 “set”; 在创建对象类的实例时,须使用关键字 “new”。
4.2地图放大、缩小、漫游等操作
Map1.Extent Map1.pan set map1.extent = map1.fullextent
4.3 打开影像文件
4. 功能的实现
4.1.打开shp文件
1)学会使用CommonDialog控件 2)学会简单错误处处理方法
3)学会从全路径中截取文件名称的方法
4)学会从全路径中截取目录的方法
学会 .DataConnection 的定义和使用方法 学会.Database的定义和使用方法 学会.GeoDataset的定义和使用方法 学会.FindGeoDataset的定义和使用方法 学会.Layers.Add的定义和使用方法
3.2 Shp文件
ESRI Shapefiles use a simple, nontopological format for storing the geometric location and attribute information of geographic features.
ShapeFile文件通常包含三个文 件:.shp .shx .dbf,.shp存储了图元图形坐标数据,.dbf 存储了图元属性数据,.shx存储了每个图元记录在.shp文件 中的位置。同时.shp .shx .dbf记录顺序是一致的。在GIS 中,总体上有两种类别的查询: 图元查属性,就是通过对图元.shp文件的查询,定位到 对应的.dbf属性数据记录。而对.shp的查询,需要对图形建 立空间索引,以便加速图元查找的速度。确定需要查找的图 元在.shp中的记录位置,以确定是第多少条记录,由于三文 件记录顺序是一致的,同时.dbf记录是等长的,可以迅速通 过计算得到对应的图元属性数据所在的位置,读取属性数据 即可。
地理信息系统二次开发 精品
1 gis软件技术经理了五个阶段:集成式GIS、模块式GIS、核心式GIS、组件式GIS、万维网GIS2 gis由4个要素组成:硬件、软件、数据、人员3 gis分为工具性软件(GIS二次开发平台、am/fm专用开发平台软件、其他工具性软件)应用型软件(制图软件、资源调查、信息管理、空间分析与预测)4 gis用户分为:最终用户、GIS专业人员、GIS开发商/系统集成商5 gis自身的特点:(1)GIS处理的是空间数据,具有数据量庞大、实体种类繁多、实体间的关联复杂等特点(2)GIS设计以空间数据为驱动(3)GIS工程投资大、周期长、风险大、涉及部门繁多6 gisS设计的理论思想:GIS工程学思想7GIS工程学体系主要由任务(运用系统论的理论和方法实现GIS工程的最优设计、最优管理和最有运行,以求得到系统总体的最优化)、基础理论(系统学、地理信息科学、系统工程学)和方法论组成8地理信息科学是研究地球信息的本质和运动规律的一门学科,其研究对象是地理信息。
他通过对地理信息技术中的一般性问题和规律性问题进行研究,对GIS工程学提供指导。
9 地理信息科学体系划分为三个层次:;理论地理信息科学、市局地理信息科学和应用地理信息科学10gis设计与一般信息系统设计的差异:设计重心(GIS处理的是海量空间数据,数据库设计在GIS设计中尤其重要,一般系统设计的中心是软件功能)数据库建设(gis不仅要进行属性数据库的设计,更要进行空间数据库的设计,包括空间数据结构、存储方式、管理机制。
而一般的只需要建立属性数据库)设计方法(GIS以业务需求为导向、异空间数据为驱动进行系统设计,而一般的以业务需求为导向,以功能为驱动进行系统设计)11gis设计包括软件设计和数据库设计12 实现地理信息资源共享,必须具备:(啊)数据资源储备(2)有技术支撑系统的保障(3)共享规则的制定,被广泛采纳和遵循13标准化是空间信息共享和系统集成的重要前提,也是GIS产业化和社会化的必经之路。
GIS二次开发方法与实现
中图分类号:TP311.52文献标识码:A文章编号:1009-2552(2008)08-0065-03GIS二次开发方法与实现杨宏鹏,王阿川,王妍玮(东北林业大学信息与计算机工程学院,哈尔滨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 developmentYA 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 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 development20世纪中叶以后,伴随着计算机科学、现代数学、计算机图形学和虚拟现实技术的发展,地理信息系统(GIS)应运而生,该技术将数字地图和地理分析功能以及数据库操作集合在一起,可对地理信息进行综合分析和处理。
ArcGIS Engine二次开发入门(课堂PPT)
.
72
.
73
如上图所示,对象模型图展示了每个对象内的各类之间的接口,继承、派生关系,属性及方法之 间的联系等,是对整个对象最完整的定义。对象模型图可视化的表达了ArcObjects的继承关系, 因而您能识别关键对象,查看哪些对象之间具有联系(如对象的创建关系),理解接口继承和派 生类型的定义,并且找出实现了一个类所实现的全部接口。参考对象模型图与参看帮助系统中具 体的接口所获得的信息是一致的,只不过查看具体的接口信息将更方便获得具体的使用方法,属 性设置方法等,而参看对象模型图是从全局来把握整个对象,更容易找出各接口之间的联系和调 用方式等。 对象模型图的放置路径为“X:\Program Files\ArcGIS\DeveloperKit\Diagrams”(X代表ArcGIS 安装所在的盘符)。 对象模型图的书写类似于UML图,对象模型图中也对其基本规则也有所解释,因而UML的具体语 法规则、定义等这里不再赘述,如果需要更加详细的信息,您可以参考UML方面的相关书籍,或 者参考《Exploring ArcObjects》中的相关章节。
.
3
5.6 BaseTool开发实例
.
4
.
mapgis二次开发培训课件
M A P G I S 二次开发培教程前言MAPGIS是武汉中地信息工程有限公司研制的具有自主版权的大型基础地理信息系统平台。
它是一个集当代最先进的图形、图像、地质、地理、遥感、测绘、人工智能、计算机科学于一体的大型智能软件系统,是集数字制图、数据库管理及空间分析为一体的空间信息系统,是进行现代化管理和决策的先进工具。
MAPGIS连续四年在全国GIS测评中名列第一,并成为唯一连续四年获得国家科技部向社会推荐的国产GIS软件平台。
中地软件丛书之MAPGIS二次开发培训教程是根据最新推出的MAPGIS软件平台编写而成,主要介绍进行MAPGIS二次开发必须具备的基础知识、主流开发工具以及MAPGIS系统的基本概念、结构体系和操作方法。
该教程分为三个部分,共十一讲。
其中:第一部分(即第一讲的内容):介绍Windows编程的概念。
包括类与数据封装、继承、重载、虚拟函数与多态性以及内存管理。
该部分为可视化编程的基础,有可视化编程经验的读者可以略过此讲,直接进入下一部分的学习。
第二部分(即第二讲的内容):编程工具VC。
对于在VC这样一个编程环境中开发应用程序所应熟悉的概念,术语和最基本的框架、构件实现过程等知识做了一个简明扼要的介绍。
已掌握一定VC编程基础知识的读者可以略过该部分。
第三部分(即第三讲至第十一讲的内容):详细讲述了地理信息系统的基本概念(包括GIS原理概述、空间数据类型、空间数据库、空间数据结构与数据管理等内容);MAPGIS 的基本概念和体系结构(简要描述了MAPGIS二次开发的基本概念、术语、工作区、空间实体及其数据、C++类组织和开发环境介绍的内容);MAPGIS空间数据存取和属性编辑(包括工作区、空间实体和属性的操作及其网络介绍);图形显示输出及窗口操作、图形编辑、类库和控件开发;矢量空间分析和属性查询;投影变换、图框生成和工程管理;图库管理和查询系统(包括基于图库的应用程序开发、MAPGIS图库介绍、开发的一般步骤以及结合图库显示说明图库主要函数的功能等方面的内容)以及图象分析与处理。
ArcGISEngine二次开发矢量数据空间分析PPT教案
EndnMouseDown 事件,并在实践中添加如下代码:
Private Sub AxMapControl1_OnMouseDown(ByVal sender As Object, ByVal e As AxMapContro向工程中添加 SystemUI 、System、Geometry、GeoDatabase、Display、 DataSourcefile、DataSourceGDB、Carto和 Contr法添加代码,依次双击叠置求和与叠置求交,在相应的区域 添加函数调用,以叠置求和为例:
双击菜单栏上的 缓冲区分析 ,添加如下代码:
Private Sub 缓冲区分析ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 缓冲区分析 ToolStrip分析指为了识别某一地理实体或空间物体对其周围地物影响度而在其周围 建立的具有一定宽度的区域,以确定哪些实体落在了被影响的区域范围之内。下 面是个 项目,向 Form1 中添加如下控件:MenuStrip、ToolbarControl 、 MapControl 和 LicenseControl ,结果见上鹰眼程序。为 ToolbarControl 添加地图 浏览的功能按钮,包括添加数据、添加图层、放大、缩小、漫游等 首先通过 Generic 下设置 Buddy 项,将 ToolbarControl 和 MapCotems选项中,点击 Add—>添加—>Windows 窗体,然后点击 VisualBasic 选项,选择对话框,改其名称为 Tolerance.vb,再点添加, 即向工程添加了一个对话框,用于接收用户输入缓冲半径。如下两图:
组件式GIS概述
GIS 软件技术的发展经历了从简单到复杂、从单一功能到多功能 的逐渐成熟完善的发展过程。传统GIS大多是基于十多年前甚至更早的 技术体系设计和开发的,在很大程度上限制了 GIS 软件的进一步发展 和应用。计算机技术和全球信息技术的飞速发展,特别是面向对象 (Object-Oriented)、可视化程序设计、组件式软件(Components Software)、 分布式计算(Distributed Computing)、多媒体(Multimedia)和 Internet/Intranet 等技术的不断出现和广泛应用,对 GIS提出了新的技术 要求,GIS软件发展到一个全新的阶段,出现了组件式 GIS (Components GIS)和网络 GIS(简称 WebGIS)。
•
地形的挖/填方计算
16
第1章 组件式GIS概述
陕西省府谷新区三维地形分析
17
第1章 组件式GIS概述
陕西省府谷新区高程等值线分析图
18
第1章 组件式GIS概述
陕西省府谷新区坡度分析
19
第1章 组件式GIS概述
陕西省府谷新区坡向分析图
20
第1章 组件式GIS概述
地形剖面分析图
21
第1章 组件式GIS概述
GIS开发与应用
——SuperMap二次开发
杜福光 E-mail:dufug@ 公共邮箱:zyglgh@
唐山师范学院 ·资源管理系 2012年2月
1
课 程 安 排
Super Map二次开发
第1章 组件式GIS概述 第2章 理解Super Map GIS二次开发 第3章 SuperMap Objects开发基本知识 第4章 空间数据的显示和基本操作 第5章 空间查询 第6章 空间对象编辑 第7章 跟踪层(TrackingLayer)的应用 第8章 制图
gis二次开发概述
云南大学 杨克诚
kecheng@
2
第 1 章 GIS 二次开发
1.2.2 什么是面向对象程序设计?
面向对象程序设计(OOP)技术汲取了结构化程序设计中好的思想,并将这些思想与一些新 的、强大的理念相结合,从而给你的程序设计工作提供了一种全新的方法。通常,在面向对象的 程序设计风格中,你会将一个问题分解为一些相互关联的子集,每个子集内部都包含了相关的数 据和函数。同时,你会以某种方式将这些子集分为不同等级,而一个对象就是已定义的某个类型 的变量。当你定义了一个对象,你就隐含的创建了一个新的数据类型。
目前许多软件公司都开发了很多 ActiveX 控件,合理选择和运用现成的控件,减少了开发者 的编程工作量,使开发者避开某些应用的具体编程,直接调用控件,实现这些具体应用,不仅可 以缩短程序开发周期,使编程过程更简洁,用户界面更友好,可以使程序更加灵活、简便。
1.2 面向对象的开发 (OOP: Object Oriented Programmin-
1.1 GIS 开发模式
z 独立开发 指不依赖于任何 GIS 工具软件,从空间数据的采集、编辑到数据的处理分析及结果输出,所
有的算法都由开发者独立设计,然后选用某种程序设计语言,如 Visual C++、Delphi 等,在一定 的操作系统平台上编程实现。这种方式的好处在于无须依赖任何商业 GIS 工具软件,减少了开发 成本,但一方面对于大多数开发者来说,能力、时间、财力方面的限制使其开发出来的产品很难 在功能上与商业化 GIS 工具软件相比,而且在购买 GIS 工具软件上省下的钱可能还抵不上开发者 在开发过程中绞尽脑汁所花的代价。
z 对象 在一个面向对象的系统中,对象是运行期的基本实体。它可以用来表示一个人或者说一个银
ArcGIS_Engine二次开发高级讲义
ArcGIS Engine二次开发实习高级讲义遥感信息工程学院地理信息工程方向实习材料指导教师:秦昆文档编写:张文、郭善昕、余万里、刘文涛武汉大学遥感信息工程学院Contents1. 缩略图(鹰眼) ..............................................错误!未定义书签。
添加控件及代码............................................错误!未定义书签。
代码说明..................................................错误!未定义书签。
小结......................................................错误!未定义书签。
2. 缓冲区分析................................................错误!未定义书签。
添加控件..................................................错误!未定义书签。
添加引用和代码............................................错误!未定义书签。
代码说明..................................................错误!未定义书签。
小结......................................................错误!未定义书签。
3. 叠置分析..................................................错误!未定义书签。
添加控件..................................................错误!未定义书签。
添加引用和代码............................................错误!未定义书签。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实现基本的浏览功能
• 1. 添加资源
• 2. 添加枚举型成员变量
– enum BROWSERTASK
–{
–
eViewUndefined,
–
eViewZoomIn,
•
}
•}
VC++中使用ArcGIS控件
• 建立各控件的关联
– //设置同伴控件buddy control – m_ctrlToolbar.SetBuddyControl(m_ctrl
Map.GetObject()); – m_ctrlTOC.SetBuddyControl(m_ctrlMa
p.GetObject());
第5.1讲 组件式GIS二次开发 关键技术
主要内容
• ArcGIS控件 • 地图表现 • 数据操作 • 地图编辑 • 地图分析
VC++中使用ArcGIS控件
1. 添加控件 2. 设置控件
VC++中使用ArcGIS控件
VC++中使用ArcGIS控件
3. 添加成员变量
VC++中使用ArcGIS控件
m_ctrlMap.SetMousePointer(53);
•}
• void CMyMapView::OnViewZoomin()
•{
•
// TODO: Add your command handler code here
•
m_eCurView = eViewZoomIn;
•
m_ctrlMap.SetMousePointer(51);
第二节 地图表现
• 地图浏览 • 图层渲染 • 显示注记
第二节 地图表现
• 地图可视化揭示的空间联系:
– 哪些特征与其他特征连接; – 哪些特征与其他特征毗邻; – 哪些特征包含在一个面中; – 哪些特征相交; – 哪些特征在其他特征附近; – 特征高程上的差异; – 特征间的相对位置。
第二节 地图表现
// status line indicator
• 地图能做什么?
– 识别在某个位置有某物 – 定位你在何处 – 识别分布、关系不易看清的趋势 – 将各种来源的数据集成到一个公共的地理参考中 – 通过组合和叠置数据来解决空间问题 – 找到一地到另一地的最佳路径 – 对未来的事件进行建模
第二节 地图表现——地图 浏览
• 地图浏览包括漫游、缩放、全图显示、 显示前一视图、显示后一视图等,是包 括一个图形系统的最基本的功能。
–
eViewZoomOut,
–
eViewPan
– } m_eCurView;
实现基本的浏览功能
3. 创建事件处理函数
4. 添加浏览功能函数
实现基本的浏览功能
• void CMyMapView::OnViewFullview()
•{
•
// TODO: Add your command handler code here
•
long x, long y, double mapX, double mapY)
•{
•
switch(m_eCurView)
{
•
case eViewZoomOut:
{
•
IEnvelopePtr
ipCurExt;
•
ipCurExt = m_ctrlMap.GetExtent();
•
ipCurExt->Expand(1.5,1.5,VARIANT_TRUE);
•
m_ctrlMap.SetExtent(ipCurExt);
•
m_ctrlMap.UpdateWindow();
•
}
•
break;
•
case eViewZoomIn:
•
m_ctrlMap.SetExtent(m_ctrlMap.TrackRectangle());
•
break;
•
case eViewPan:
•
m_ctrlMap.SetExtent(m_ctrlMap.GetFullExtent());
•}
• void CMyMapView::OnViewPan()
•{
•
// TODO: Add your command handler code here
•
m_eCurView = eViewPan;
•
•
int(cx*0.4),
•
cy-3*nBorderSize-20);
•
m_ctrlMap.MoveWindow((int(cx*0.4))+(2*nBorderSize),
•
20+2*nBorderSize,
•
((int)(0.6*cx))-(3*nBorderSize),
•
cy-20-3*nBorderSize);
•}
• void CMyMapView::OnViewZoomout()
•{
•
// TODO: Add your command handler code here
•
m_eCurView = eViewZoomOut;
•
m_ctrlMap.SetMousePointer(52);
•}
• void CMyMapView::OnOnMouseDownMapcontrol(long button, long shift,
•
m_ctrlMap.Pan();
•
break;
•
default: break;
•
}
•}
实时地图坐标显示
• 1. 添加状态指示窗格
– static UINT indicators[] =
–{
– ID_SEPARATOR,
// status line indicator
– ID_SEPARATOR,
•
if(m_ctrlMap.GetSafeHwnd() != NULL)
•
{
•
m_ctrlToolbar.MoveWindow(nBorderSize,
•
nBorderSize,
•
cx-2*nBorderSize,
•
20);
•
m_ctrlTOC.MoveWindow(nBorderSize,
•
20+2*nBorderSize,
• 设置地图控件大小
• void CMyMapView::OnSize(UINT nType, int cx, int cy)
•{
•
int nBorderSize = 1;
•
CFormView::OnSize(nType, cx, cy);
•
•
// TODO: Add your message handler code here