河海大学 测绘工程 GIS考试范围.docx
《河海大学 测绘工程 GIS考试范围.docx》由会员分享,可在线阅读,更多相关《河海大学 测绘工程 GIS考试范围.docx(20页珍藏版)》请在冰点文库上搜索。
![河海大学 测绘工程 GIS考试范围.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/72c9b0d7-8882-4fac-a96f-f7476d631f8c/72c9b0d7-8882-4fac-a96f-f7476d631f8c1.gif)
河海大学测绘工程GIS考试范围
一、填空题范围
1.动态加载Shapefile文件时,应先创建工作空间工厂,然后再打开Shapefile
工作空间,如何创建工作空间工厂,如何打开Shapefile工作空间。
同时,Shapefile作为一种应用非常广泛的地理数据格式,MapControl控件提供了更方便的加载方法,省去了建工作区、找数据集等步骤。
可以用什么函数直接加载shapefile文件
使用程序动态地添加图层:
图层的常规加载方法
首先向工程里添加如下引用:
ESRI.ArcGIS.DataSourcesFile;
ESRI.ArcGIS.GeoDataBase;ESRI.ArcGIS.Carto;
创建工作空间工厂:
IWorkspaceFactorypWorkspaceFactory=newShapefileWorkspaceFactory();
打开shapefile工作空间:
IWorkspacepWorkspace=pWorkspaceFactory.OpenFromFile(pFolder,0);
直接加载shapefile文件:
object.AddShapeFile(Path,fileName)
MapControl1.AddShapeFile("F:
\\Shapefile","县界.shp");
Shapefile数据是一种比较常用的,而且是容易获得(从其他格式的数据转换而来)的文件数据格式。
Shapefile采用早期的dBase数据的管理模式,即以文件夹作为数据库,文件夹下的文件组成了数据库中的表,对于Shapefile文件来说就是图层。
一个Shapefile图层至少需要三个文件:
*.SHP,*.SHX,*.DBF,它们分别用于存储空间数据、空间索引信息和属性数据。
2.AE主要方法,接口。
接口属性和方法
Ø接口(棒棒糖图标)
◆对象模型图罗列了每一个类支持的所有接口,并以列表的方式表示接口的属性和方法。
◆但OMD中只描述了常用接口的属性和方法,并没有详细给出每一个接口的属性和方法。
◆
在COM技术中,每一个接口都是从其他接口继承而来的,最底层的接口都会在对象模型图上列出来,在要表示的接口的右边会列出该接口继承的最底层接口。
3.打开地图文档中关键步骤:
创建mapdocument和打开mapdocument,如何实现。
创建一个新的地图文档实例:
IMapDocumentmapDoc=newMapDocumentClass();
打开当前地图文档:
mapDoc.Open(m_pageLayoutControl.DocumentFilename,string.Empty);
4.AE可对图层进行选择、删除、控制显示范围等操作,需掌握的要点:
如何获取索引为某一index的图层并赋值给lyer;如何删除索引为index的图层;删除所有图层
(1)图层的选择
◆MapControl通过对图层进行索引来定位图层,如果想得到索引为2的图层(首先保证其存在),方法如下:
layer=axMapControl1.get_layer
(2);
◆但在程序开发中,我们不容易知道具体的图层索引号,因此用名称来获取图层比较合适,下面定义的函数可用名称来获得图层,代码如下:
privateGetLayerByName(AxMapControlmapctrl,stringstrName)
调用以上函数可以获得相应的图层。
DimlyerAsILayer
Setlyer=GetLayerByName(axMapControl1,”分市州”);
Lyer.Visible=false;//隐藏分市州图层
axMapControl1.Refresh();
(2)图层的卸载
◆卸载指定图层:
axMapControl1.DeleteLayer(3);
◆卸载所有图层:
axMapControl1.ClearLayers;
axMapControl1.Refresh();
(3)控制图层显示的范围
当MapControl中加载了很多图层之后,在缩放过程中,用户并不希望所有图层都显示,比如在浏览中国轮廓的时候,县级的行政区划就不必要再显示了,这样可以减小地图负载,使地图更清晰。
实现这个功能,具体的做法就是设置图层的可见比例尺范围,代码如下:
axMapControl1.get_Layer(3).MaximumScale=500000;
axMapControl1.get_Layer(3).MinimumScale=1000000;
axMapControl1.Refresh();axMapControl1.ClearLayers;
5.地图的浏览功能包括漫游、放大、缩小和全屏四个操作,这也是GIS最基本的功能。
如何实现四个操作。
漫游:
漫游操作直接使用MapControl的Pan方法。
MapControl1.Pan();
Me.MapControl1.Pan
放大:
(拉框放大)
axMapControl1.Extent=axMapControl1.TrackRectangle();
Me.MapControl1.Extent=Me.MapControl1.TrackRectangle
除此之外,还可以利用IEnvelope接口的PutCoords方法
缩小:
全屏:
Me.MapControl1.Extent=Me.MapControl1.FullExtent
6.TOCControl是ArcEngine中用来管理MapControl中图层的控件,使用需要把它和对应的MapControl进行绑定。
其中动态绑定用什么代码可实现。
动态绑定:
TOCControl1.SetBuddyControlMapControl1
7.点状要素的简单符号化主要涉及符号的样式、颜色、大小、角度、边框(颜色、宽带)位置几个属性。
需要用到简单标记符号接口和简单渲染接口,如何定义简单标记符号变量和定义简单渲染变量。
定义简单标记符号变量:
ISimpleMarkerSymbolpSMarkerSymbol=newSimpleMarkerSymbolClass();
ISimpleLineSymbolpSLineSymbol=newSimpleLineSymbolClass();
ISimpleFillSymbolpSFillSymbol=newSimpleFillSymbolClass();
定义简单简单渲染变量:
ISimpleRendererpSimpleRenderer=newSimpleRendererClass();
8.在ArcEngine中,所有的专题图对象都必须通过什么接口实现定义专题图渲染所必需的方法和属性。
在ArcEngine中,所有的专题图对象都必须实现IFeatureRenderer接口
IFeatureRenderer接口定义的全部方法和属性如下:
CanRender标识是否可以被渲染
Draw使用此函数进行渲染
ExclusionSet不被渲染的对象的集合
PrepareFilter渲染过滤器
RenderPhase绘制选项
SymbolByFeature获得绘制的ISymbol对象
9.在专题图制作中,点密度渲染(DotDensityRenderer)需要用到点密度填充符号接口和点密度渲染接口,如何定义点密度填充符号变量和定义点密度渲染变量。
定义点密度填充符号变量:
IDotDensityFillSymboldotDensityFillSymbol=newDotDensityFillSymbolClass();
定义点密度渲染变量:
IDotDensityRendererdotDensityRenderer=newDotDensityRendererClass();
10.地图编辑涉及IWorkSpaceEdit接口
编辑工作一般需用到Workspace、Map、FeatureLayer、PropertySet等组件类或者抽象类,以及这些类所实现的IWorkSpaceEdit、IMap、IDataset、IGeoFeatureLayer、IPropertySet等接口。
该接口主要控制WorkSpace的编辑流程。
该接口一共包括13种方法。
其中,如何开始一个WorkSpace的编辑流程,如何结束一个WorkSpace的编辑流程。
十种方法:
StartEditing方法StopEditing方法EnableUndoRedo方法StartEditOperation方法StopEditOperation方法IsBeingEdited方法AbortEditOperation方法HasEdit方法HasRedos方法UndoEditOperation方法
StartEditing方法
开始一个对WorkSpace的编辑流程,其形式为:
publicvoidStartEditing(boolwithUndoRedo);
参数:
withUndoRedo—用于确定该编辑WorkSpace是否支持“重做/取消重做”的操作。
StopEditing方法
结束一个对WorkSpace的编辑流程,其形式为:
publicvoidStopEditing(boolsaveEdits);
参数:
saveEdits—用于确定该编辑流程内的编辑操作是否保存。
如果该参数设为false则放弃包含在该编辑流程内的所有编辑操作。
ØEnableUndoRedo方法
开始一个编辑操作,其形式为:
publicvoidEnableUndoRedo();
ØStartEditOperation方法
开始一个编辑操作,其形式为:
publicvoidStartEditOperation();
ØStopEditOperation方法
结束一个编辑操作,其形式为:
publicvoidStopEditOperation();
ØIsBeingEdited方法
publicboolIsBeingEdited();
Bool类型,当当前WorkSpace已启动编辑流程时返回true,反之返回false。
ØAbortEditOperation方法
退出编辑操作,其形式为:
publicvoidAbortEditOperation();
当在编辑操作过程中监测到错误时退出当前编辑操作。
ØHasEdit方法
当WorkSpace编辑流程中包含已经完成并需要保存的编辑操作时返回一个真值,其形式为:
publicvoidHasEdits( refboolpHasEdits);
参数:
pHasEdits—当编辑流程中包含已经完成并需要保存的编辑操作时,该参数赋值为true。
ØHasRedos方法
判断当前编辑流程中是否进行过撤销操作,其形式为:
publicvoidHasRedos( refboolpHasRedos);
参数:
pHasRedos—当当前编辑流程中有已撤销的编辑操作时,给该参数赋值为true,表明可以进行重做操作。
ØUndoEditOperation方法
取消上一步编辑操作,其形式为:
publicvoidUndoEditOperation();
11.地图中的要素选择方式:
可以是点选、圆选、矩形框选和多边形选择。
其中点选方式如何定义点类型变量并示例化,如何选择上面获取的要素
ESRI.ArcGIS.Geometry.Pointpoint=newESRI.ArcGIS.Geometry.PointClass();
point.X=e.mapX;
point.Y=e.mapY;
geometry=pointasIGeometry;
axMapControl1.Map.SelectByShape(geometry,null,false);
12.空间查询&属性查询以及用到的接口:
地图中包含了大量的信息,为了快速地了解所需信息,必须借助空间查询功能。
其中,基于属性查询是通过对要素的属性信息设定要求来查询定位空间位置。
如何实现属性查询。
a)得到所选要素所在要素图层
b)通过鼠标操作得到空间查询过滤器
c)使用IFeatureSelection接口中的SelectFeatures方法选择要素
基于属性查询是通过对要素的属性信息设定要求来查询定位空间位置。
查询需要对要素名称设置限制条件,查询到结果后再利用图形和要素的对应关系,在地图上对符合条件的要素进行定位并渲染。
QueryFilter组件类指定了一个属性查询过滤器,利用该过滤器可从要素集中筛选出满足条件的行集。
该组件类实现了IQuerFilter接口,提供了1个方法和3基于空间位置查询,是根据要素与要素之间的空间关系进行查询,主要有以下几种:
相交(Intersect)、相接(Touch)、叠加(Overlap)、穿越(Crosses)、在内部(Within)和包含(Contains)
空间几何查询主要用到SpatialFilter组件类,该类是QueryFilter组件类的子类,可以从属性和空间关系两方面查询条件来查询。
个属性。
13.在向地图图层中添加点状要素:
如何定义要素DataSet.Workspace和Feature.Workspace接口跳转;如何实例化点对象,如何将该点对象赋予创建的新要素,如何给索引字段赋值;如何结束编辑操作。
定义数据集:
IDatasetpDataSet=pFeatureClassasIDataset;
IWorkspaceEditpWorkSpaceEdit;
接口跳转:
pWorkSpaceEdit=pDataSet.WorkspaceasIWorkspaceEdit;
如何实例化点对象:
//定义一个点对象
IPointpPoint;
//实例化该点对象
pPoint=newPointClass();
将点对象赋予创建的新要素:
DoubleX1=1,Y1=1;
pPoint.PutCoords(X1,Y1);
给索引字段赋值:
pFeature.set_Value(idx,"null");
//结束编辑操作
pWorkSpaceEdit.StopEditing(true);
14.AE对象模型图中类有几种类型,每类之间存在的关系。
判断题3
15.拓扑运算(接口)
▪ArcEngine中提供了ITopologicalOperator接口用于拓扑运算,ITopologicalOperator接口用来通过对已存在的几何对象做空间拓扑运算,以产生新的结合对象。
▪实现ITopologicalOperator接口的类有Point、Multipoint、Polyline、Polygon和MultiPatch等。
▪ITopologicalOperator接口在GIS开发中的使用非常广泛,通常GIS系统中的缓冲区分析、裁剪几何图形、几何图形差分操作、几何图形合并操作等都需要使用此接口。
16.怎样实现地图接口跳转
17.实例化点对象(线,面)
18.新创的对象赋予新的要素
二、判断题
判断题共十题
1.AE的特点(核心技术,语言);功能;
主要特点:
标准的GIS框架
成本适宜的配置
开发控制器
跨平台功能
跨开发语言
ArcGIS的扩展功能
开发资源
实现功能:
对所有矢量和栅格数据源的读权限
对Shapefile和pGDB的写权限
读/写MXD文件
数据的显示和地图浏览
绘制来自于航空照片或卫星影像的图像
跟踪和绘制要素(如点、线、圆及多边形)
绘制非GIS要素,如描述性文本、图形元素
地图数据的坐标转换
搜索地图上的要素或通过单击来识别地图上的要素
多种要素选择方式,如点选、框选、SQL属性选择
显示要素属性字段的文本标注
TOC图层管理,如显示具有多个地图图层的地图
要素符号化,使用主题方法为要素着色(如值映射图、分类图和点密度图)
制定工具和命令
地图布局和打印
要素数据库的管理和更新
专题图制作(如值映射图、分类图、点密度图)
跟踪动态GPS要素
地理编码功能
3D显示及其应用
数据管理和分析(创建缓冲区;计算差值;查找形状的交集、联合或反转交集)
交互操作个人地理数据库与主地理数据库
其他拓展技术应用
总之,ArcEngine非常适合于构建高级GIS应用软件的基础制图。
如实现部分ArcGISDesktop中ArcMap的GIS制图功能。
2.AE与MO、AO的区别与联系。
ArcEngine和MapObjects的区别与联系
MapObjects是ESRI公司早期推出的一套构建定制的封装控件,和ArcEngine一样,它并不是一个终端产品,而且功能没有ArcEngine强大。
ArcEngine是小颗粒的封装,而MO是大颗粒的封装,而且MO并不支持空间数据库连接
MO主要是开发一些轻量级的应用,ArcEngine则能实现更为强大、更为复杂的GIS功能。
ArcEngine和ArcObjects的区别与联系
ArcObjects是ESRI公司用c++和基于微软公司COM技术编写的独立于平台的一套软件组件库
AO是ArcGIS体系的基础。
ArcGISDesktop,ArcEngine,ArcGISServer的底层组件都是AO
AO不是为终端用户而是专门为开发人员提供的二次开发软件,通过AO用户主要是方便地拓展GIS应用系统。
AO开发出来的系统不是独立的产品,它必须以ArcGISDesktop为后台基础。
这是AO和ArcEngine最主要的区别
ArcEngine是基于AO组件库的,即AO构建了ArcEngine,但ArcEngine是独立于应用程序的AO编程环境,应用与ArcGISDesktop应用程序框架之外的ArcGIS组件
3.对象模型图有哪些类,不同类特点
对象模型图将ArcEngine组件库整合在一起,用图表的形式表示出来。
它不仅可以系统地表示类库、接口及其参数,还可以表示类与类之间的关系。
类间关系
ArcEngine中类与类之间存在几种不同的关系,主要有:
Ø依赖关系(Instantiation)
Ø继承关系(Inheritance)
Ø组合关系(Composition)
Ø关联关系(Association)
类与对象
Ø对象模型图中的类分为三种:
◆抽象类(AbstractClass)
◆实例化类(Class)
◆可创建类(CoClass)
抽象类(AbstractClass)
◆从名字上就可以看出,一个抽象类是不能直接创建新对象的。
它是用来对子类的一种规定。
不能从其他对象中获取实例对象
◆在对象模型图上每一个抽象类至少有一个子类。
例如,Layer就是一个抽象类,它包括了RasterLayer,TinLayer,CadLayer,FeatrureLayer等子类。
◆只能定义接口,被子类继承
◆OMD中:
2D的灰色矩形表示抽象类
实例化类(Class)(普通类)
◆实例化类不能直接创建新对象,但是这种类的对象能够作为其他对象的属性被创建,或是通过其他类的方法来创建。
例如一个Row(表格的行)不能直接被创建,它必须由Table来创建,并存于Table中。
不能使用new关键字来产生对象。
◆虽然实例化类是可以被其他的对象创建的,但是在对象模型图上却没有可实例化的箭头。
◆OMD中:
没有阴影的3D矩形。
可创建类(CoClass)
◆可创建类是唯一可以用New关键字来创建对象的。
也就是说,可创建类可以直接被创建或者实例化。
例如在ArcMap中,可以创建新的Maps,FeatureLayers,FillSymbols或GraphicElements等。
在对象模型图(OMD)中可创建类是用3D有阴影的立方体表示的。
4.TOCControl干什么的(图层控制,操作);MapControl干什么的(显示)
5.专题图制作(渲染)接口。
在ArcEngine中,所有的专题图对象都必须实现IFeatureRenderer接口,这个接口定义了专题图渲染所必需的方法和属性。
IFeatureRenderer接口定义的全部方法和属性如下:
●CanRender标识是否可以被渲染
●Draw使用此函数进行渲染
●ExclusionSet不被渲染的对象的集合
●PrepareFilter渲染过滤器
●RenderPhase绘制选项
●SymbolByFeature获得绘制的ISymbol对象
实现了IFeatureRenderer接口的对象有13个,其中封装在ArcEngine中的渲染对象有:
1、SimpleRenderer:
SimpleRenderer对象是最简单的渲染对象,它不涉及对要素图层的数据处理,程序中的一般的符号化操作都使用来进行渲染。
2、ClassBreaksRenderer:
ClassBreaksRenderer(分级渲染),它根据要素类中某个数值字段的值来进行统计分级并显示分级结果。
分级的方法、级数和显示都可由编程者规定。
3、UniqueValueRenderer:
UniqueValueRenderer可以为每一个不同的要素(按某个数值字段的值)赋予不同的符号,这种渲染方法支持的符号最多。
使用对象实现的IUniqueValueRenderer的AddValue方法,把值和符号一一对应添加,进行渲染。
4、ProportionalSymbol:
RendererProportionalSymbolRenderer(梯度渲染)对象依据要素层的某个数值字段生成依该数值变化大小的点符号来实现专题渲染。
ProportionalSymbolRenderer实现了IProportionalSymbolRenderer接口,使用该接口来操作梯度渲染。
5、ChartRenderer:
ChartRenderer(图表渲染)即在对应地物上绘制统计图,包括柱状图和饼图两种。
ChartRenderer上绘制的符号是3DchartSymbol,包括三种符号:
StackedChart、BarChart、PieChart
6、DotDensityRendererDotDensityRenderer即点密度渲染,它根据面状要素的某个数值属性在面状要素内绘制与数值相当的点,绘制的点数=值/每个点代表的值。
点的符号样式、大小、代表的数值和填充背景由编程人员定义。
7、ScaleDependentRenderer:
ScaleDependentRenderer允许按比例尺渲染专题图,其意图很明显,在有些情况下,不同的比例尺适合不同的专题渲染。
6.拓扑输入类型,数据格式能否创建拓扑
三、简答题(4-5题)
1.GIS设计方法有哪些,方法特点
►结构化生命周期法;
定义:
要求将信息