如何将要素类加载到图层中进行显示?

 

要素类的数据经常需要显示给最终用户。这时候,我们通常需要添加ArcGIS Engine中的一个名为MapControl控件。假设我们有了实例名称为theMapControl的MapControl控件,那么我们可以利用他的addLayer方法来添加图层。注意,几乎每一个地图都是按照图层来组织的,图形的存储就好像是一个堆栈结构,也就是说你最后添加的图层,他的图层编号是0,这个的确有些怪异。实际上,您有两种方式使用addLayer,他们分别是:

方法一:IMap接口的addLayer方法:

public void AddLayer (

ILayer Layer

);

方法二:IMapControl2的addLayer方法:

public void AddLayer (

ILayer Layer,

int toIndex

);

注意,方法一添加的图层,其图层序号自动为0,而方法二可以直接指定图层的序号。

以下是一段添加注记图层的示例代码:

FDOGraphicsLayer txtLayer = null;

txtLayer = new FDOGraphicsLayerClass();

IFeatureLayer pFeatureLayer = txtLayer as IFeatureLayer;

pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(“TEST_ANNOTATION_FEATURE_CLASS_NAME”);

pFeatureLayer.Name = “图层名称”;

//指定过滤条件 一般不需要过滤

IFeatureLayerDefinition pFeatureLayerDef = pFeatureLayer as IFeatureLayerDefinition;

pFeatureLayerDef.DefinitionExpression = “MAPID=’ID1′”;

theMapControl.Map.AddLayer(pFeatureLayer);

以下是一段添加线状要素类图层的示例代码:

FeatureLayerClass fl = new FeatureLayerClass();

fl.FeatureClass = pFeatureWorkspace.OpenFeatureClass(“TEST_POLYLINE_FEATURE_CLASS_NAME”);

//指定过滤条件 一般不需要过滤

IFeatureLayerDefinition fd = fl as IFeatureLayerDefinition;

fd.DefinitionExpression = “DTID=’ID1′”;

fl.Name = “图层名称”;

theMapControl.Map.AddLayer(fl);

但是,即使添加图层成功,也不一定在MapControl能够看到要素。如果是注记(Annotation)图层,那么应该能够看到一些文字。但是如果是点、线、面等图层,即使加入到MapControl也可能什么也看不到。这涉及到两个问题,一个问题是要素位置可能不在当前的可视区域内,另外一个问题是没有指定图层的渲染机制。第一个问题可以通过设置MapControl的适当的Extent属性来让要素显示在当前可见区域内,第二个问题则需要另外一节内容来讲述。

转载自:https://blog.csdn.net/Eric_Hxy/article/details/5517721

You may also like...

退出移动版