AE学习笔记之地图符号化

         地图符号化就是对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-------------------------------------------------------------------





  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值