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-------------------------------------------------------------------





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章