GIS开发B第二次作业-CUIT.doc

上传人:飞****2 文档编号:52733135 上传时间:2022-10-23 格式:DOC 页数:6 大小:169KB
返回 下载 相关 举报
GIS开发B第二次作业-CUIT.doc_第1页
第1页 / 共6页
GIS开发B第二次作业-CUIT.doc_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《GIS开发B第二次作业-CUIT.doc》由会员分享,可在线阅读,更多相关《GIS开发B第二次作业-CUIT.doc(6页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、1. ArcObjects与ArcGIS Engine的联系与区别。联系:1、ArcGIS Engine包括核心ArcObjects的功能,其是对ArcObjects中的大部分接口、类、库进行封装所构成;2、嵌入式组件ArcGIS Engine中的组件接口、方法、属性与ArcObjects是相同的。区别:(1)在开发环境上的区别ArcObjects必须依赖于ArcGIS Desktop桌面平台,即购买安装了ArcGIS Desktop的同时,安装ArcObjects,才能利用ArcObjects进行开发;ArcGIS Engine是独立的嵌入式组件,不依赖ArcGIS Desktop桌面平台,

2、直接安装ArcGIS Engine Runtime 和Developer Kit后,即可利用其在不同开发语言环境下开发。(2)在功能上的区别ArcObjects的功能更强大,ArcGIS Engine的功能相对弱些;ArcGIS Engine不具备ArcObjects的少部分功能。2. 类、接口和对象的概念。类:实现方法和属性;接口:定义方法和属性,即管理类中的方法和属性,可以封装方法和属性,但不具体实现(没有程序体);对象:对现实世界中存在的实际事物的一种抽象描述,即是由一组属性数据及对这些特定属性进行操作的一组服务所构成的“结合体”。3. 在ArcGIS Engine中,有几种类型的类?如

3、何加以区分?答:共3中,即抽象类:不能创建一个新的对象实例,不能从其他对象中获取实例对象,只能定义接口,被子类继承。在OMD中以2D的灰色矩形表示。普通类:不能用于创建一个新的对象,可以从其他对象中获取对象实例,在OMD中以没有阴影的3D矩形表示。组件类:可以直接创建,也可以从其他对象中获取,在OMD中以有阴影的3D矩形表示。4. 阐述ArcGIS Engine的类库结构。ArcGIS Engine的各个类库标出了在此类库下的所有对象以及在此类库中的各个类的类型及各个类之间的关系。5. ArcGIS Engine的常用控件有哪些,分别能实现什么功能?MapControl:主要用于地图数据的显示

4、、浏览、查询、编辑、修改、分析和地图表现。PageLayoutControl:主要用于地图的布局和打印,包含了可创建的布局类,一个视图上绘制多个元素,用来创建布局和打印。SceneControl 、GlobeControl:拥有导航功能,允许用户三维地显示地图数据。TOCControl:需要和一个伙伴控件协同工作,用来显示图层的内容以及图层的表现方式等。ToolbarControl:需要和一个伙伴控件协同工作,为伙伴控件提供命令、工具和菜单功能。LicenseControl :主要用于初始化具有有效licenses的应用程序,以保证配置在其他计算机上的该应用程序能顺利运行。6. 通过ArcGI

5、S Engine加载地图文档有几种方式,请分别加以说明。答:(1)利用控件属性加载地图文档或图层。1)右键单击MapControl控件,在弹出的对话框中选择“Properties”;2)在弹出的属性页窗体中添加地图文档或图层;3)在弹出的对话框中点击“Buddy”下拉菜单,选择要绑定的地图控件。(2)通过代码加载地图文档。1)MapControl1.LoadMxFile App.Path + dataMyMap.mxd;2)TOCControl1.SetBuddyControl MapControl1。7. 在ArcGIS Engine中,如何使用程序动态地添加图层?(1)AddLayer 用

6、法:object.AddLayer(Layer,toIndex=0)其中:Layer参数表示ILayer对象,必选参数;toIndex参数表示图层的索引,长整型,可选参数。(2)AddLayerFromFile 用法:object.AddLayerFromFile(lyrPath,toIndex=0)其中:lyrPath表示*.lyr文件的具体物理路径,必选参数;toIndex参数表示图层的索引,长整型,可选参数 。(3)AddShapeFile 用法:object.AddShapeFile(Path,fileName)其中:Path表示包含shape文件的文件夹路径,必选参数;fileNam

7、e参数表示shape文件的文件名,必选参数 。8. 如何使用ArcGIS Engine封装好的对象实现地图的操作?请举例加以说明。答:以移动地图为例:Dim Cmd As ICommand Set Cmd = New ControlsMapPanTool Cmd.OnCreate MapControl1.ObjectSet MapControl1.CurrentTool = Cmd 9. ArcGIS Engine 的TocControl控件功能比较简单,如何对其进行功能扩展。答:给图层添加右键菜单并把必要的功能集成在菜单中。10. 如何使用TextElement进行标注的绘制?写出主要代码。

8、fieldIdx = pfeature.Fields.FindField(long_name) 使用循环标注每一个要素While Not pfeature Is NothingSet pEnv = pfeature.Extent 计算标注的显示位置 Set pt = New Point 使用地理对象的包络线中心作为标注位置 pt.PutCoords pEnv.XMin + pEnv.Width * 0.5, pEnv.YMin + pEnv.Height * 0.5 创建标注文本 Set pTextEle = New TextElement With pTextEle .Symbol = pT

9、extSymbol .ScaleText = True .Text = pfeature.Value(fieldIdx) End With 设置标注位置 Set pEle = pTextEle pEle.Geometry = pt 绘制标注 pGraphicsContainer.AddElement pEle, 0 pActiveView.PartialRefresh esriViewGraphics, Nothing, pEnv Set pt = Nothing Set pTextEle = Nothing Set pfeature = pFeatCursor.NextFeature Wen

10、d11. Map对象是ArcGIS Engine的主要对象,在Map对象上能显示的图形有几类?请加以说明。答:共两类,分别为:(1)地理数据 地理数据包括矢量类型的要素数据、栅格数据、Tin等表面数据地理数据保存在Geodatabase或数据文件(如Shapefile)中地理数据用于GIS分析制图的源数据 (2)元素(图形元素、框架元素)在ArcMap中可以使用Draw工具在Map上直接绘制一个矩形、圆形、文本等对象,在布局视图上也可以给地图添加指北针、图例、比例尺等图形对象。12. 阐述地图局部刷新的几种方式。(1)Refresh layer:pActiveView.PartialRefre

11、sh esriViewGeography, pLayer, Nothing (2)Refresh all layers:pActiveView.PartialRefresh esriViewGeography, Nothing, Nothing (3)Refresh selection:pActiveView.PartialRefresh esriViewGeoSelection, Nothing, Nothing (4)Refresh labels:pActiveView.PartialRefresh esriViewGraphics, Nothing, Nothing 13. 通过IFea

12、tureLayer接口的Search方法和IFeatureSelection接口的SelectFeatures方法都可以实现从属性到图的查询,请阐述这两种查询的区别。答:Search方法:返回一个IFeatureCursor对象。SelectFeatures方法:使用过滤器把符合要求的要素放入图层的选择集中。14. ArcGIS中颜色模型有几种?在ArcGIS Engine中是用哪些类来表示这些颜色模型的?答:颜色模型及其用于表示的类:1)RGB颜色模型 RGBColor2)CMYK颜色模型 CMYKColor3)HSV颜色模型 HSVColor4)HLS模型 HLSColor5)Gray模型

13、 GrayColor15. ColorRamp类有什么用,有几种创建方式,试通过代码举例说明?答:作用:快速产生出用户需要的一组颜色;创建方式:(1)RandomColorRamp(随机颜色带)(2)PresetColorRamp(预设颜色带)(3)AlgorithmicColorRamp(起止颜色带)(4)MultiPartColorRamp(叠加颜色带)代码示例:(随机颜色带)Dim pRandomColorRamp As IRandomColorRamp Set pRandomColorRamp = New RandomColorRamp 制作一系列介于起止颜色之间的随机颜色 pRand

14、omColorRamp.StartHue = 40pRandomColorRamp.EndHue = 120pRandomColorRamp.MinValue = 65pRandomColorRamp.MaxValue = 90pRandomColorRamp.MinSaturation = 25pRandomColorRamp.MaxSaturation = 45pRandomColorRamp.Size = 5 pRandomColorRamp.CreateRamp True16. 在ArcGIS Engine中有几种符号,如何生成这些符号?ArcGIS Engine为开发人员提供了30余

15、种符号,主要分为三大类:MarkerSymbol、 LineSymbol和FillSymbol;两种特殊类型的符号:TextSymbol(用于文字标注)、3DChartSymbol (用于显示饼图等三维对象)。其通过相对应的接口进行生成这些符号。 17. 在ArcGIS Engine中,是如何通过鼠标单击地图来选择矢量地图上的点、线、多边形要素的?写出主要代码。 Dim ppoint As IPoint Set ppoint = New Point 获得地图上的一个点坐标 ppoint.PutCoords mapX, mapY 把点选中的元素放在pEnumElement中 Set pEnumE

16、lement = pGraphicsContainer.LocateElements(ppoint, 1)18. 在AE中有进行矢量数据渲染的主要类有哪些呢?通过这些类我们能够分别实现什么功能呢?请举例加以说明。答:常用的6种矢量数据渲染方式:1) ISimpleRendere (简单渲染)2) IUniqueValueRenderer(唯一值渲染) 3) IDotDensityRenderer (点密度渲染)4) IClassBreaksRenderer(分级渲染) 5) IProportionalSymbolRenderer(梯度渲染) 6) IChartRenderer(图表渲染)19.

17、 地图坐标和控件坐标有什么区别呢?试说明。在ArcGIS Engine中,是如何实现这两种坐标之间的转换的?答:地图坐标是数据本身的坐标,如经纬度;空间坐标则是以控件为基准的一种坐标,它一般表示一般的点坐标,不代表经纬度等地理坐标。在ArcGIS Engine中,常使用类似于MapControl1.ToMapPoint(X, Y)、 MapControl1.fromMapPoint(X, Y)、ppoint.PutCoords mapX, mapY等代码实现两者之间的转换。20. 在ArcGIS Engine中有哪些过滤器对象,分别能够实现什么功能?答:(1)QueryFilter过滤器对象:

18、主要用于对属性数据查询条件的设置,实现属性查询功能。它用于限制从单个表或特征类获取的行集或列集。它也用在许多需要指定表中的数据子集的情形中;(2)SpatialFilter过滤器:主要用于空间范围查询条件的设置,实现空间查询功能。SpatialFilter对象包含了空间属性和普通属性两种过滤,因此它可以执行两种类型的查询。21. 在AE中,如何实现从属性到图、从图到属性的双向查询?如果是从属性到图的模糊查询,如何同时闪烁通过查询得到的要素呢?试说明原理。答:SpatialFilter对象包含了空间属性和普通属性两种过滤,因此使用它可以实现双向查询。同时闪烁:使用空间关系中的合并(union)把

19、各个符合条件的查询要素合并为一个要素,最后只需要闪烁合并后的要素就可以达到目的。22. 试通过AE实现地图鹰眼功能,要求:鹰眼窗口和主窗口实现联动,同步显示地图。请写出主要实现代码。Private Sub MapControl2_OnMouseDown(ByVal button As Long, ByVal shift As Long, ByVal X As Long, ByVal Y As Long, ByVal mapX As Double, ByVal mapY As Double)If button = 1 Then定义并实例化一个点对象Dim ppoint As IPointSet

20、ppoint = New Point获得地图上的一个点坐标ppoint.PutCoords mapX, mapY使用centerat方法把主图中的显示范围设定为以点坐标为中心pEnv.CenterAt ppointMapControl1.Extent = pEnvEnd IfEnd SubPrivate Sub MapControl2_OnMouseMove(ByVal button As Long, ByVal shift As Long, ByVal X As Long, ByVal Y As Long, ByVal mapX As Double, ByVal mapY As Double

21、)If button = 2 Then定义并实例化一个点对象Dim ppoint As IPointSet ppoint = New Point获得地图上的一个点坐标ppoint.PutCoords mapX, mapY使用centerat方法把主图中的显示范围设定为以点坐标为中心pEnv.CenterAt ppointMapControl1.Extent = pEnvEnd IfEnd Sub23. 模仿Mapinfo中的尺子测量工具,基于AE加以实现。请写出主要代码。Dim pPointCollection As IPointCollectionSet pPointCollection =

22、 New MultipointDim pPoint As IPointSet pPoint = New PointpPoint.PutCoords mapX, mapY 获得地图上的一个点坐标pPointCollection.AddPoint pPoint 添加点坐标MapControl1.DrawShape pPointCollection 绘制点If pPointCollection.PointCount 1 Then 如果点集中存在两个及以上的点则计算距离 Dim pDist As IProximityOperator Dim Num As Integer Num = pPointCol

23、lection.PointCount - 1 起始点 Set pDist = pPointCollection.Point(Num) Dim pLength As Double pLength = pDist.ReturnDistance(pPointCollection.Point(Num - 1) 计算每一次最后两点间的距离 Label1.Caption = pLength 显示距离24. 请实现下列代码:在地图上选择某一个国家,使一架飞机沿着所选国家的边界飞行。25. 在地图上画出N(N=2)个多边形,然后通过鼠标选中其中的至少两个多边形,对选中的多边形进行交集运算。26. 点击某个国家,如何选择出这个国家所包含的城市?要求能够同时闪烁这些城市并返回城市的名字。27. 点击某条河流,如何选择出这条河流所流经的国家,要求能够同时闪烁这些国家并返回国家的名字。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com