您的位置:首页 > 其它

AE学习笔记之地图符号化

2016-09-18 19:18 357 查看
         地图符号化就是对ArcGIS Engine中加载的地图图层进行渲染,地图图层可以分为点、线、面、三种形式。根据每个图层的图层类型可以分别对点、线、面要素,即MarkerSymbol、LineSymbol、和FillSymbol 进行渲染。

        1、点对象

        MarkerSymbol对于修饰点对象符号拥有五个子类:SimpleMarkerSymbol、ArrowMarkerSymbol、CharacterMarkerSymbol、PictureMarkerSymbol 和 MultilayerMarkerSymbol。一下以SimpleMarkerSymbol为例实现点对象的修饰:

try
{
//获得点图层
IFeatureLayer layer;

layer = axMapControl1.get_Layer(0) as IFeatureLayer;
for (int i = 0; i < axMapControl1.Map.LayerCount; ++i)  //寻找点图层
{
layer = axMapControl1.get_Layer(i) as IFeatureLayer;
if (layer.FeatureClass.ShapeType == esriGeometryType.esriGeometryPoint)
break;
}
if (layer.FeatureClass.ShapeType != esriGeometryType.esriGeometryPoint)
return;
//QI到IGeoFeatureLayer接口
IGeoFeatureLayer geoFeatureLayer = layer as IGeoFeatureLayer;
//新建SimpleRendererClass对象
SimpleRenderer simpleRender = new SimpleRendererClass();
ISimpleMarkerSymbol pMarkerSymbol;
//创建颜色
IColor color;
color = new RgbColorClass();
color.RGB = 225;
//创建SimpleMarkerSymbolClass
pMarkerSymbol = new SimpleMarkerSymbolClass();
pMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSCircle;
pMarkerSymbol.Color = color;
pMarkerSymbol.Angle = 60;
pMarkerSymbol.Size = 6;
//将MarkerSymbol 赋予simpleRender的Symbol
simpleRender.Symbol = pMarkerSymbol as ISymbol;
geoFeatureLayer.Renderer = simpleRender as IFeatureRenderer;
axMapControl1.Refresh();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

        具体流程为:首先,新建一个要素图层的接口,并将mapControl中的第一个图层赋予该图层。

                              然后,将要素图层转化为地理要素图层。

                              接着,新建一个SimpleRendererClass对象,和ISimpleMarkerSymbol接口。设置SimpleMarkerSymbol 的颜色、类型、尺寸等信息。

//将MarkerSymbol 赋予simpleRender的Symbol

                simpleRender.Symbol = pMarkerSymbol as ISymbol;

                geoFeatureLayer.Renderer = simpleRender as IFeatureRenderer;

                              最后,设置地理要素的Render。

         2、线要素

         线要素与点要素相似,不过线要素的子类有8个,分别是:CartographicLineSymbol、HashLineSymbol、MarkLineSymbol、MultiLayerLineSymbol、SimpleLineSymbol、PictureLineSymbol、SimpleLine3DSymbol和TextureLineSymbol。以SimleLineSymbol为例:

private void simpleLineSymbolToolStripMenuItem_Click(object sender, EventArgs e)
{
IGeoFeatureLayer geoFeatureLayer;
geoFeatureLayer = axMapControl1.get_Layer(0) as IGeoFeatureLayer;
ISimpleRenderer simpleRender;
simpleRender = new SimpleRendererClass();
IRgbColor HC = new RgbColor();
HC.Red = 225;
HC.Green = 0;
HC.Blue = 0;
ISimpleLineSymbol simpleLineSymbol = new SimpleLineSymbolClass();
simpleLineSymbol.Color = HC;
simpleLineSymbol.Width = 5;
simpleLineSymbol.Style = esriSimpleLineStyle.esriSLSDashDot;
simpleRender.Symbol = simpleLineSymbol as ISymbol;
geoFeatureLayer.Renderer = simpleRender as IFeatureRenderer;
axMapControl1.Refresh();
axTOCControl1.Update();
}


   结果如下图:



        3、FillSymbol与以上两个类似,有七种填充方式。
-----------------------------------------------------------------------------------------end-------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: