地理信息系统基本功能开发技术课件.ppt

上传人:小飞机 文档编号:1486914 上传时间:2022-12-01 格式:PPT 页数:96 大小:2.11MB
返回 下载 相关 举报
地理信息系统基本功能开发技术课件.ppt_第1页
第1页 / 共96页
地理信息系统基本功能开发技术课件.ppt_第2页
第2页 / 共96页
地理信息系统基本功能开发技术课件.ppt_第3页
第3页 / 共96页
地理信息系统基本功能开发技术课件.ppt_第4页
第4页 / 共96页
地理信息系统基本功能开发技术课件.ppt_第5页
第5页 / 共96页
点击查看更多>>
资源描述

《地理信息系统基本功能开发技术课件.ppt》由会员分享,可在线阅读,更多相关《地理信息系统基本功能开发技术课件.ppt(96页珍藏版)》请在三一办公上搜索。

1、GIS设计与开发,草环学院农资系 努尔麦麦提.艾尔肯 2014年3月,第二章GIS基本功能开发技术,主要内容ArcGIS开发平台介绍ArcGIS Engine的组件GIS基本功能开发信息检索功能的设计与实现,1,ArcGIS 产品组成,四个关键部分:,ArcGIS Desktop,ArcGIS Engine,ArcGIS Server,ArcIMS,ArcGIS,第一节 ArcGIS 开发平台介绍,2.1.1,ArcGIS简介,1,ArcGIS 9产品组成,第一节 ArcGIS 开发平台介绍,2,ArcObjects与ArcGIS产品,2,ArcObjects与ArcGIS产品,3,ArcOb

2、jects组件库,ArcObjects组件库有3000多个对象可供开发人员调用,其中有细粒度的小对象,例如:Geometry对象,也有粗粒度的大对象,例如:Map对象可以通过ArcObjects来扩展ArcGIS Desktop,定制ArcGIS Engine应用,使用ArcGIS Server实现企业级GIS应用采用ArcObjects可以在多种编程环境中开发,包括C+、支持COM的编程语言、.NET、Java等,3,ArcObjects组件库,可以应用ArcGIS Desktop SDK来扩展ArcGIS Desktop的功能,如添加新的工具、定制用户界面、增加新的扩展模块等,甚至对Arc

3、GIS Desktop应用程序进行完全扩展以提高专业GIS生产能力ArcGIS Server实现了一套标准的Web GIS服务,支持企业级应用,可以建立集中式的GIS服务器来实现GIS功能,发布基于Web的GIS应用,执行分布式GIS运算等,2.1.2 ArcGIS的开发方式1)VBA开发VBA自动包含了ESRI对象库参考,用户可以编写并调试在ArcMap或ArcCatalog中使用的VB宏以及ESRI的对象库,宏命令可以将VB的功能和GIS的功能集成起来。可以使用ArcObjects的所有组;其运行离不开ArcGIS系统框架;,第一节 ArcGIS 开发平台介绍,2.1.2 ArcGIS的开

4、发方式2)插件开发采用COM技术开发基于AE的标准DLL3)基于COM的可执行应用程序开发,第一节 ArcGIS 开发平台介绍,2.1.3 ArcGIS Engine简介ArcGIS Engine是一个简单的、独立于应用程序的ArcObjects编程环境。其SDK提供了一系列嵌入式、应用于ArcGIS Desktop应用程序框架之外的ArcGIS组件。ArcGIS Engine是开发人员用于建立自定义应用程序的嵌入式GIS组件的一个完整类库,第一节 ArcGIS 开发平台介绍,一,ArcGIS Engine的功能,分图层显示专题图,如:道路,河流,行政边界等浏览、缩放地图查看地图上特征要素的信

5、息在地图上显示文本注记在地图上叠加卫星影像或航摄影像在地图上绘制点、线、面几何体通过矩形、圆形或多边形选中地图上的要素通过SQL语句查找要素用各种渲染方式绘制图层,如分级渲染、柱状图渲染、点密度渲染、按比例尺渲染等动态绘制实时数据转换空间数据的坐标系编辑空间数据空间建模与分析,二,ArcGIS Engine的组成,基本服务-几乎所有GIS应用程序都需要的GIS核心模块ArcObjects构成,如几何要素和显示数据存取-可以对栅格和矢量格式,包括Geodatabase进行数据的存取操作地图表达-创建和显示带有符号、注记的地图和专题图开发组件-快速开发应用程序的界面控件扩展模块-ArcGIS En

6、gine运行时,可以与标准功能或其他高级功能一起部署,ArcGIS Engine由一个软件开发工具包(SDK)和一个运行时(Runtime)组成,二,ArcGIS Engine的组成,ArcGIS Engine Developer Kit是一个基于组件的开发产品,主要面向开发人员,能与开发环境集成,提供了开发帮助、类库对象模型以及代码示例等ArcGIS Engine的另一个组件就是其运行时。在部署应用程序时,必须安装相应版本的ArcGIS Engine运行时,二,ArcGIS Engine的组成,ArcGIS Engine的授权文件*.ecp文件授权文件控制用户可以使用哪些功能例如:编辑空间数

7、据ArcGIS Engine开发包使得用户可以创建、修改或者删除在Geodatabase或者shapefile中的矢量要素。标准ArcGIS Engine Runtime可以编辑shapefile和简单的Personal Geodatabase要素,若需要编辑Enterprise Geodatabase数据,则应使用Geodatabase Update扩展,第二节,ArcGIS Engine的组件,一,ArcGIS Engine包含的主要控件:MapControlPageLayoutControlSceneControlGlobeControlToolbarControlTOCControlS

8、ymbologyControlLicenseControlToolbarControl,二,组件的加载,示例:如何使用MapControl, ToolbarControl, TOCControl如何向工具栏添加ArcGIS Engine内置的工具和命令,三,MapControl控件,MapControl的功能管理控件的外观、显示属性和地图属性添加并管理控件中的数据层装载Map文档(mxd)到控件中从其他应用程序拖放数据到控件中显示绘制图形实现的主要接口IMapControlDefaultIMapControl2IMapControl3IMapControlEvents2(事件接口),三,Map

9、Control控件,IMapControlDefault接口该接口是地图控件的缺省接口,多数开发环境自动使用这个接口定义的属性、方法,这个接口也代表了控件最新版本的接口如果需要使用这个接口,则用如下代码:IMapControlDefault pMapControl;pMapControl = axMapControl1.Object as IMapControlDefault;,三,MapControl控件,IMapControl2接口这个接口是任何一个与MapControl相关的任务的出发点,如设置控件外观,设置Map对象或控件的显示属性,添加或者管理数据图层、地图文档,在控件上绘制图形和返

10、回Geometry等控制控件外观界面的属性:Appearance、BorderStyle、BackColor方法:获取Geometry对象:TrackLine, TrackPolygon, TrackRectangle, TrackCircle在控件上绘制图形:DrawShape,DrawText,三,MapControl控件,IMapControl3接口该接口继承于IMapControl2,增加了8个属性和1个方法CustomProperty:设置自定义控件属性DocumentFilename:返回MapControl装入的地图文档的文件名DocumentMap:返回MapControl最后

11、装入的地图名称KeyIntercept:返回或设置MapControl截取键盘按键的信息Object:返回潜在的MapControl控件,三,MapControl控件,当使用IMapControl2接口时:IMapControl2 pMapControl;pMapControl = axMapControl1.Object as IMapControl2;或pMapControl = axMapControl1.GetOcx() as IMapControl2;,三,MapControl控件,ShowMapTips:确定是否显示地图的Map TipsTipDelay:设置Map Tips的延迟

12、时间TipStyle:设置Map Tips的显示样式SuppressResizeDrawing():当控件尺寸发生变化时组织数据实时重绘,三,MapControl控件,IMapControlEvents2接口事件接口,定义了MapControl能够处理的全部事件,如OnMouseDown, OnAfterDraw, OnMouseMove等,其他如OnAfterscreenDraw是绘屏结束后触发的事件,OnExtentUpdated是地图的Extent属性发生变化时触发的事件,四,PageLayoutControl控件,1)Page对象-管理PageLayout对象中页面2)SnapGrid

13、对象-用于摆放元素而设置的辅助点,便于使用者对齐元素3)RulerSettings对象-辅助尺4)MapSurround对象,五,ToolbarControl控件,主要用于提供操作地图对象的工具条,是一个集成多种控制地图操作的控件。ToolbarControl上添加工具1)通过向导添加;2)通过代码添加;,五,ToolbarControl控件,主要接口:IToolbarControl,IToolbarControlDefaultIToolbarControlEventsToolbarControl上可以驻留三类命令:1)实现了Icommand的单击命令;2)实现了ICommand和ITool的

14、命令工具;3)实现了ICommand和IToolControl接口的工具控件,用户界面组件;,六,TOCControl控件,是一个集成图层控制操作的控件,一般是通过与其他几个地图显示控件相互关联一起工作。SetBuddyControl(object obj)TOCControl通过上述函数来关联其他控件。,string strToolID = ;strToolID = esriControlTools.ControlsMapZoomInTool; this.axToolbarControl1.AddItem(strToolID, -1, -1, false, 0, esriCommandSty

15、leIconOnly);strToolID = esriControlTools.ControlsMapZoomOutTool;axToolbarControl1.AddItem(strToolID, -1, -1, false, 0, esriCommandStyles.esriCommandStyleIconOnly);strToolID = esriControlTools.ControlsMapZoomInFixedCommand;axToolbarControl1.AddItem(strToolID, -1, -1, false, 0, esriCommandStyles.esriC

16、ommandStyleIconOnly);strToolID = esriControlTools.ControlsMapZoomOutFixedCommand;axToolbarControl1.AddItem(strToolID, -1, -1, false, 0, esriCommandStyles.esriCommandStyleIconOnly);strToolID = esriControlTools.ControlsMapPanTool;this.axToolbarControl1.AddItem(strToolID, -1, -1, false, 0, esriCommandS

17、tyles.esriCommandStyleIconOnly);strToolID = esriControlTools.ControlsMapFullExtentCommand;axToolbarControl1.AddItem(strToolID, -1, -1, false, 0, esriCommandStyles.esriCommandStyleIconOnly);strToolID = esriControlTools.ControlsMapZoomToLastExtentBackCommand;axToolbarControl1.AddItem(strToolID, -1, -1

18、, false, 0, esriCommandStyles.esriCommandStyleIconOnly);strToolID = esriControlTools.ControlsMapZoomToLastExtentForwardCommand; axToolbarControl1.AddItem(strToolID, -1, -1, false, 0, esriCommandStyles.esriCommandStyleIconOnly);,六,TOCControl控件,2.2.7控件之间的关联1)通过向导关联2)通过代码关联,第二节,ArcGIS Engine的组件,七,控件之间的

19、关联,示例1:1)通过向导关联,七,控件之间的关联,示例2:2)通过代码关联SetBuddyControl(Object 被关联控件);,第三节 GIS基本功能的设计开发,2.3.1图层的加载 在ArcEngine中需要使用MapControl来显示地理数据,用TOCControl进行图层操作。 MapControl控件中可以添加各种常用数据格式,如:SHP、mdb、CAD数据、Coverage数据、TIN数据等。,Shapefile数据是一种比较常用的,而且是容易获得(从其他格式的数据转换而来)的文件数据格式。 Shapefile采用早期的dBase数据的管理模式,即以文件夹作为数据库,文件

20、夹下的文件组成了数据库中的表,对于Shapefile文件来说就是图层。 一个Shapefile图层至少需要三个文件:*.SHP,*.SHX,*.DBF,它们分别用于存储空间数据、空间索引信息和属性数据。,1 加载图层,使用属性向MapControl中添加图层 在窗体上添加MapControl控件成功后,在控件上点击右击查看其属性框。打开属性对话框的”Map”选项卡,点击 按钮可以任意加载几个图层。,1 加载图层,使用程序动态地添加图层图层的常规加载方法首先向工程里添加如下引用:ESRI.ArcGIS.DataSourcesFile;ESRI.ArcGIS.GeoDataBase;ESRI.Ar

21、cGIS.Carto;,1 加载图层,打开图层的常用步骤:1.创建一个类工厂2.使用类工厂创建一个要使用的工作区3.使用工作区打开并得到图层的dataset4.把dataset装入到新建的图层实例5.把图层加载到MapControl控件,1 加载图层,涉及的类和接口,相关类说明WorkSpace类WorkSpace类是一个包含空间数据集和非空间数据集的数据容器。根据数据集的物理存储形式可以分为三种类型:1) 基于文件形式的FileSystemWorkspace2) 基于本地数据库文件形式的LocalDatabaseWorkspace3) 基于远程数据库管理系统(RDBMS)并通过ArcSDE访

22、问的RemoteDatabaseWorkspace,1 加载图层,WorkSpaceFactory类WorkSpaceFactory是工作空间分配者,用户进行相应的属性设置并通过它来连接各种工作空间。从该类中派生出了很多其他的类,如用于连接本地shp格式数据的ShapeFileWorkspaceFactory,以及用于连接远程SDE数据的SdeWorkspaceFactory还有:RasterWorkspaceFactoryAccessWorkspaceFactoryCadWorkspaceFactoryArcinfoWorkspaceFactoryTinWorkspaceFactory等。,

23、涉及的类和接口,1 加载图层,IWorkspaceFactory接口 该接口主要用于打开和创建工作空间,并提供Workspace的相关信息。该接口共提供了1种属性和11种方法。下面介绍其中两种方法。,涉及的类和接口,1 加载图层,Open方法该方法通过连接属性打开工作空间,其形式为:IWorkspace Open(IPropertySet propSet, int hWnd ); 参数: propSet连接属性,IPropertySet对象。hWnd整型变量,一般为0。,涉及的类和接口,1 加载图层,OpenFromFile方法通过文件路径和名称打开指定的本地工作空间,其形式为:IWorksp

24、ace OpenFromFile (string fileName,int hWnd ); 参数:fileName表示所要打开工作空间的路径文件名称。hWnd整型变量,一般为0。,涉及的类和接口,1 加载图层,IPropertySet接口该接口提供了1种属性和7种方法来管理连接属性。常见属性和方法有: SetProperty方法该方法用于设置指定的连接属性值。 GetProperty方法返回指定连接属性值。,涉及的类和接口,1 加载图层,IFeatureWorkspace:提供创建和打开各种数据集等有关的功能。OpenFeatureClass:打开一个要素类,就是存在于FeatureWorks

25、pace里面的一个FeatureClass,涉及的类和接口,1 加载图层,AddLayer:地图空间上添加指定图层。用法:AddLayer (pLayer )pLayer:是一个图层对象AddLayerFromFile:将图层文件加载到地图控件上指定的位置。这里的位置是各图层在Mapcontrol上的Index。用法: MapControl1.AddLayerFromFile (C:TempmyLayer.lyr“,2 );“C:TempmyLayer.lyr“:图层文件路径名称;2:是在MapControl上的图层的显示指数;,涉及的类和接口,1 加载图层,IWorkspaceFactory

26、 wsf = new ShapefileWorkspaceFactory();IWorkspace ws= wsf.OpenFromFile(E:博湖县表三移动, 2); IFeatureWorkspace fws = ws as IFeatureWorkspace; IFeatureClass fc= fws.OpenFeatureClass(博湖县调查点.shp); IFeatureLayer fl = new FeatureLayerClass(); fl.FeatureClass = fc; ILayer lyr = fl as ILayer; lyr.Name = fc.AliasN

27、ame; this.axMapControl1.Map.AddLayer(lyr);,1 加载图层,上面演示的是图层的常规加载方法,但是Shapefile作为一种应用非常广泛的地理数据格式,MapControl控件提供了更方便的加载方法,省去了建工作区、找数据集等步骤。可以用下面代码完成:object.AddShapeFile (Path, fileName ) Map Control1.AddShapeFile (“F:Shapefile”,“县界.shp);参数:F:Shapefile:是包含要打开的shp文件的路径;县界.shp:是在上面的路径下shape文件的文件名。,1 加载图层,向

28、MapControl中加载栅格数据 ArcEngine支持的栅格数据格式有:IMG,TIF,JPG,SID,BMP等,1 加载图层,ArcEngine的功能既强大也很灵活,直接从文件创建Raster图层也是被支持的: using ESRI.ArcGIS.DataSourcesRaster; /创建栅格图层类IRasterLayer rasterLayer = new RasterLayerClass(); /从路径创建栅格图层rasterLayer.CreateFromFilePath(“E:test县界.tif”);/图层添加到地图控件this.axMapControl1.AddLayer(

29、rasterLayer);,1 加载图层,向MapControl中加载CAD数据 DWG数据是GIS的一个重要数据源,ArcEngine对CAD数据支持得非常好。下面示例程序加载文件”F:testdl.dwg”,1 加载图层,/设置workspace IWorkspaceFactory pWorkspaceFact = new CadWorkspaceFactoryClass();/Open the Workspace IWorkspace pWorkspace;pWorkspace = pWorkspaceFact.OpenFromFile(d:test, 0);/设置CadDrawingW

30、orkspace ICadDrawingWorkspace pCadDwgWorkspace = (ICadDrawingWorkspace)pWorkspace; /Open the CadDrawingDataset ICadDrawingDataset pCadDwgDataset;pCadDwgDataset = pCadDwgWorkspace.OpenCadDrawingDataset(dl.dwg);/在Mapcontrol中打开图形if (pCadDwgDataset = null) return;ICadLayer pCadLayer = new CadLayerClass(

31、);pCadLayer.CadDrawingDataset = pCadDwgDataset;this.axMapControl2.AddLayer(pCadLayer, 0);,1 加载图层,向MapControl中加载Coverage数据 Coverage数据的格式为”*.adf”示例给出加载Coverage数据的一个方法:,IWorkspaceFactory wf = new ArcInfoWorkspaceFactoryClass();IWorkspace ws = wf.OpenFromFile(d:testadfdata, 0);IFeatureWorkspace fws = ws

32、 as IFeatureWorkspace;IFeatureClass fc = fws.OpenFeatureClass(w001001);IFeatureLayer flr = new FeatureLayerClass();flr.FeatureClass = fc;ILayer lyr = flr as ILayer;this.axMapControl1.AddLayer(lyr);,1 加载图层,向MapControl中加载TIN数据示例代码如下:IWorkspaceFactory pTinWSFactory;ITinWokspace pTinWS;ITinLayer pTinLyr

33、;pTinWSFactory=new TinWorkspaceFactoryClass();pTinWS=pTinWSFactory.OpenFromFile(“F:TIN”,0);pTinLyr=new TinLayerClass();pTinLyr.Dataset=pTinWS.OpenTin(“地形”);pTinLyr.Name=“地形”;axMapControl1.AddLayer(pTinLyr);,1 加载图层,图层的选择 MapControl通过对图层进行索引来定位图层,如果想得到索引为2的图层(首先保证其存在),方法如下:layer=axMapControl1.get_laye

34、r(2) ;但在程序开发中,我们不容易知道具体的图层索引号,因此用名称来获取图层比较合适,下面定义的函数可用名称来获得图层,代码如下:,1 加载图层,调用以上函数可以获得相应的图层。 private ILayer GetLayerByName(AxMapControl mapCtrl,string lyrName) ILayer lyr=null; for (int i = 0; i mapCtrl.LayerCount;i+ ) if (mapCtrl.get_Layer(i).Name = lyrName) lyr = mapCtrl.get_Layer(i); else lyr = nu

35、ll; return lyr; ILayer lyer=GetLayerByName(axMapControl1,”分市州”);Lyer.Visible=false; /隐藏分市州图层axMapControl1.Refresh();,1 加载图层,图层的卸载 卸载指定图层:axMapControl1.DeleteLayer(3); 卸载所有图层:axMapControl1.ClearLayers();axMapControl1.Refresh();,1 加载图层,控制图层显示的范围当MapControl中加载了很多图层之后,在缩放过程中,用户并不希望所有图层都显示,比如在浏览中国轮廓的时候,县

36、级的行政区划就不必要再显示了,这样可以减小地图负载,使地图更清晰。实现这个功能,具体的做法就是设置图层的可见比例尺范围,代码如下:axMapControl1.get_Layer(3).MaximumScale=500000;axMapControl1.get_Layer(3).MinimumScale=1000000;axMapControl1.Refresh();,1 加载图层,第三节 GIS基本功能的设计开发,2.3.2鹰眼功能的实现,ArcEngine实现鹰眼功能,下面给出一个简单鹰眼模块示例。关于鹰眼的实现方式,最常用的是用一个MapControl控件显示地图全图,并在上面画一个红色矩

37、形框表示当前地图的显示范围,并实现鹰眼MapControl与主窗体的MapControl互动。1、添加鹰眼控件2、鹰眼的实现当地图载入到主Map控件时,同时也载入到鹰眼控件,代码如下:,鹰眼功能的实现,ArcEngine实现鹰眼功能,1、添加鹰眼控件,鹰眼功能的实现,数据的同步加载OnMapReplaced,private void axMapControl2_OnMapReplaced (object sender, IMapControlEvents2_OnMapReplacedEvent e) IMap pMap = this.axMapControl2.Map; for (int i

38、= 0; i = pMap.LayerCount - 1; i+) this.axMapControl1.Map.AddLayer(pMap.get_Layer(i); this.axMapControl1.Extent = this.axMapControl2.FullExtent; this.axMapControl1.Refresh(); ,鹰眼功能的实现,绘制鹰眼矩形框private void axMapControl2_OnExtentUpdated(object sender, IMapControlEvents2_OnExtentUpdatedEvent e) IEnvelope

39、 pEnvelope = e.newEnvelope as IEnvelope; IGraphicsContainer pGraphicsContainer = this.axMapControl1.Map as IGraphicsContainer; IActiveView pActiveView = pGraphicsContainer as IActiveView; pGraphicsContainer.DeleteAllElements(); IRectangleElement pRectangleElement = new RectangleElementClass(); IElem

40、ent pElement = pRectangleElement as IElement; pElement.Geometry = pEnvelope; IRgbColor pColor = new RgbColorClass(); pColor.RGB = 255; pColor.Transparency = 30; ILineSymbol pLineSymbol = new SimpleLineSymbolClass(); pLineSymbol.Width = 1; pLineSymbol.Color = pColor; pColor = new RgbColorClass(); pCo

41、lor.RGB = 255; pColor.Transparency = 0; IFillSymbol pFillSymbol = new SimpleFillSymbolClass(); pFillSymbol.Color = pColor; pFillSymbol.Outline = pLineSymbol; IFillShapeElement pFillShapeElement = pElement as IFillShapeElement; pFillShapeElement.Symbol = pFillSymbol; pElement = pFillShapeElement as I

42、Element; pGraphicsContainer.AddElement(pElement, 0); pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);,鹰眼功能的实现,鹰眼与主Map控件互动private void axMapControl1_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e) if(this.axMapControl1.Map.LayerCount!=0) /按下鼠标左键移动矩形框 if (e

43、.button = 1) IPoint pPoint = new PointClass(); pPoint.PutCoords(e.mapX, e.mapY); IEnvelope pEnvelope = this.axMapControl2.Extent; pEnvelope.CenterAt(pPoint); this.axMapControl2.Extent = pEnvelope; this.axMapControl2.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); /按下鼠标右键绘

44、制矩形框 else if (e.button = 2) IEnvelope pEnvelop = this.axMapControl1.TrackRectangle(); this.axMapControl2.Extent = pEnvelop; this.axMapControl2.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); ,鹰眼功能的实现,现按下鼠标左键的时候移动矩形框,同时也改变主的图控件的显示范围,rivate void axMapControl1_OnMouseMove(ob

45、ject sender, IMapControlEvents2_OnMouseMoveEvent e) /如果不是左键按下就直接返回 if(e.button!=1)return; IPoint pPoint = new PointClass(); pPoint.PutCoords(e.mapX, e.mapY); this.axMapControl2.CenterAt(pPoint); this.axMapControl2.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); ,鹰眼功能的实现,第

46、三节 GIS基本功能的设计开发,2.3.3地图浏览功能的实现,地图浏览功能的实现,地图的浏览功能包括漫游、放大、缩小和全屏等操作,这也是GIS最基本的功能。,利用ArcEngine开发的GIS中实现这些功能有多种方法。最简单的方法是利用ArcEngine的内置Command控件来与地图显示控件进行交互,也可以通过ArcEngine类库的相应接口和方法来实现。,地图浏览功能的实现,漫游 漫游操作直接使用MapControl的Pan方法。MapControl1.Pan();拉框放大拉框放大就是把用鼠标拖出来的方块区域放大到全屏。axMapControl1.Extent=MapControl1.Tr

47、ackRectangle();,地图浏览功能的实现,除此之外,还可以利用IEnvelope接口的PutCoords方法IEnvelope:是指地物的外接矩形,用来表示地物图形的大体位置和形状,一般可用于检索地物,判断地物间的拓扑关系,可以使得检索、判断的速度加快,因为有了IEnvelope,可以首先判断该外接矩形是否在检索范围内,而判断一个外接矩形是比较简单的。,IEnvelope接口,Envelope也称包络线,是一个矩形区域,是每个几何形体的最小外接矩形。每个Geometry都拥有一个Envelope,包括Envelope自身。IEnv是包络线对象的主要接口,定义了XMax、XMin、YM

48、ax、YMin、Height和Width等属性,用于获取或设置一个存在的包络线对象的空间坐标。方法:Expand、offset、CenterAt、PutCoords等。Expand方法用于按比例缩放包络线的范围,产生一个新的包络线对象;offset是一个偏移方法,通过一个给定的(x,y)移动包络线;CenterAt方法则通过改变包络线的中心点来移动包络线;PutCoords方法为按指定的坐标点来构造包络线。,IEnvelope接口,IEnvelope接口的PutCoords方法(XMin, YMin,XMax,YMax) (将新建的一个边框的4个极坐标设置为输入的参数) IEnvelope接口

49、的Expand方法(dx, dy, asRatio) (按照输入的dx与dy参数来放大或者缩小当前的边框,用与对ArcMap窗体的中心放大或缩小,或者点击屏幕获得点击点的坐标,并将中心点设置成点击点,并进行一定比例的放大或者缩小),IEnvelope接口,Expand scales the size of the Envelope. If asRatio = FALSE, the expansion is additive. XMin= XMin - dx YMin = YMin dy XMax = XMax + dx YMax= YMax + dy If asRatio = TRUE, th

50、e expansion is multiplicative. XMin = (XMin - dx*Width)/2 YMin = (YMin - dy*Height)/2 XMax = (XMax + dx*Width)/2 YMax = (YMax + dy*Height)/2 The Envelope remains centered at the same position.,IEnvelope接口,拉框缩小 拉框缩小和拉框放大是对应的操作,它是把全屏区域缩小到鼠标拖出的方块区域中。 这个操作要计算缩小后的地图的显示范围,因此稍微有一点复杂.,地图浏览功能的实现,中心放大中心放大,就是以

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号