您好,欢迎来到客趣旅游网。
搜索
您的当前位置:首页ArcEngine符号化——点符号

ArcEngine符号化——点符号

来源:客趣旅游网

1、前言

GIS系统的开发过程中,地图符号化其实是非常重要的一块内容。ArcEngine为我们提供了很多种符号样式,现在就来介绍一下ArcEngine中的点状符号。

2、常用的点符号

2.1、简单符号

3、实现代码

using System;
using System.Windows.Forms;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Display;
using stdole;

namespace Win
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
            axMapControl1.AddShapeFile(@"C:\Users\DSF\Desktop\data", @"point.shp");
        }

        /// <summary>
        /// 简单点符号
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSimpleMarkerSymbol_Click(object sender, EventArgs e)
        {
            // 点符号颜色
            IRgbColor pMarkerSymbolColor = new RgbColor();
            pMarkerSymbolColor.Red = 255;
            pMarkerSymbolColor.Green = 0;
            pMarkerSymbolColor.Blue = 0;

            // 轮廓线颜色
            IRgbColor pOutlineColor = new RgbColor();
            pOutlineColor.Red = 0;
            pOutlineColor.Green = 0;
            pOutlineColor.Blue = 255;

            // 创建符号
            ISimpleMarkerSymbol pSimpleMarkerSymbol = new SimpleMarkerSymbol();
            pSimpleMarkerSymbol.Angle = 30;
            pSimpleMarkerSymbol.Color = pMarkerSymbolColor;
            pSimpleMarkerSymbol.Size = 15;
            pSimpleMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSSquare;
            pSimpleMarkerSymbol.Outline = true;
            pSimpleMarkerSymbol.OutlineColor = pOutlineColor;
            pSimpleMarkerSymbol.OutlineSize = 3;

            // 设置符号
            IGeoFeatureLayer pGeoFeatureLayer = axMapControl1.get_Layer(0) as IGeoFeatureLayer;
            IFeatureRenderer pFeatureRenderer = pGeoFeatureLayer.Renderer;
            ISimpleRenderer pSimpleRenderer = pFeatureRenderer as ISimpleRenderer;
            pSimpleRenderer.Symbol = pSimpleMarkerSymbol as ISymbol;

            // 刷新地图
            axMapControl1.Refresh();
            axTOCControl1.Update();
        }

        /// <summary>
        /// 箭头符号
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnArrowMarkerSymbol_Click(object sender, EventArgs e)
        {
            // 点符号颜色
            IRgbColor pRgbColor = new RgbColor();
            pRgbColor.Red = 255;
            pRgbColor.Green = 0;
            pRgbColor.Blue = 0;

            // 创建符号
            IArrowMarkerSymbol pArrowMarkerSymbol = new ArrowMarkerSymbol();
            pArrowMarkerSymbol.Angle = 0;
            pArrowMarkerSymbol.Color = pRgbColor;
            pArrowMarkerSymbol.Length = 20;
            pArrowMarkerSymbol.Size = 30;
            pArrowMarkerSymbol.Style = esriArrowMarkerStyle.esriAMSPlain;
            pArrowMarkerSymbol.Width = 20;

            // 设置符号
            IGeoFeatureLayer pGeoFeatureLayer = axMapControl1.get_Layer(0) as IGeoFeatureLayer;
            IFeatureRenderer pFeatureRenderer = pGeoFeatureLayer.Renderer;
            ISimpleRenderer pSimpleRenderer = pFeatureRenderer as ISimpleRenderer;
            pSimpleRenderer.Symbol = pArrowMarkerSymbol as ISymbol;

            // 刷新地图
            axMapControl1.Refresh();
            axTOCControl1.Update();
        }

        /// <summary>
        /// 叠加符号
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnMultiLayerMarkerSymbol_Click(object sender, EventArgs e)
        {
            // 创建简单符号颜色
            IRgbColor pSimpleMarkerSymbolColor = new RgbColor();
            pSimpleMarkerSymbolColor.Red = 255;
            pSimpleMarkerSymbolColor.Green = 0;
            pSimpleMarkerSymbolColor.Blue = 0;

            // 创建箭头符号颜色
            IRgbColor pArrowMarkerSymbolColor = new RgbColor();
            pArrowMarkerSymbolColor.Red = 0;
            pArrowMarkerSymbolColor.Green = 255;
            pArrowMarkerSymbolColor.Blue = 0;

            // 创建简单符号
            ISimpleMarkerSymbol pSimpleMarkerSymbol = new SimpleMarkerSymbol();
            pSimpleMarkerSymbol.Color = pSimpleMarkerSymbolColor;
            pSimpleMarkerSymbol.Size = 30;
            pSimpleMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSCross;

            // 创建箭头符号
            IArrowMarkerSymbol pArrowMarkerSymbol = new ArrowMarkerSymbol();
            pArrowMarkerSymbol.Color = pArrowMarkerSymbolColor;
            pArrowMarkerSymbol.Length = 20;
            pArrowMarkerSymbol.Size = 20;
            pArrowMarkerSymbol.Style = esriArrowMarkerStyle.esriAMSPlain;
            pArrowMarkerSymbol.Width = 20;

            // 创建叠加符号
            IMultiLayerMarkerSymbol pMultiLayerMarkerSymbol = new MultiLayerMarkerSymbol();
            pMultiLayerMarkerSymbol.AddLayer(pSimpleMarkerSymbol);
            pMultiLayerMarkerSymbol.AddLayer(pArrowMarkerSymbol);

            // 设置符号
            IGeoFeatureLayer pGeoFeatureLayer = axMapControl1.get_Layer(0) as IGeoFeatureLayer;
            IFeatureRenderer pFeatureRenderer = pGeoFeatureLayer.Renderer;
            ISimpleRenderer pSimpleRenderer = pFeatureRenderer as ISimpleRenderer;
            pSimpleRenderer.Symbol = pMultiLayerMarkerSymbol as ISymbol;

            // 刷新地图
            axMapControl1.Refresh();
            axTOCControl1.Update();
        }

        /// <summary>
        /// 字符标记符号
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnCharacterMarkerSymbol_Click(object sender, EventArgs e)
        {
            // 点符号颜色
            IRgbColor pRgbColor = new RgbColor();
            pRgbColor.Red = 255;
            pRgbColor.Green = 0;
            pRgbColor.Blue = 0;

            // 创建字体
            IFontDisp pFontDisp = new StdFont() as IFontDisp;
            pFontDisp.Name = "楷体";
            pFontDisp.Size = 40;

            // 创建符号
            ICharacterMarkerSymbol pCharacterMarkerSymbol = new CharacterMarkerSymbol();
            pCharacterMarkerSymbol.Angle = 0;
            pCharacterMarkerSymbol.CharacterIndex = 10084;
            pCharacterMarkerSymbol.Color = pRgbColor;
            pCharacterMarkerSymbol.Font = pFontDisp;
            pCharacterMarkerSymbol.Size = 40;

            // 设置符号
            IGeoFeatureLayer pGeoFeatureLayer = axMapControl1.get_Layer(0) as IGeoFeatureLayer;
            IFeatureRenderer pFeatureRenderer = pGeoFeatureLayer.Renderer;
            ISimpleRenderer pSimpleRenderer = pFeatureRenderer as ISimpleRenderer;
            pSimpleRenderer.Symbol = pCharacterMarkerSymbol as ISymbol;

            // 刷新地图
            axMapControl1.Refresh();
            axTOCControl1.Update();
        }

        /// <summary>
        /// 图片符号
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnPictureMarkerSymbol_Click(object sender, EventArgs e)
        {
            // 创建符号
            IPictureMarkerSymbol pPictureMarkerSymbol = new PictureMarkerSymbol();
            pPictureMarkerSymbol.Angle = 0;
            pPictureMarkerSymbol.CreateMarkerSymbolFromFile(esriIPictureType.esriIPicturePNG, @"C:\Users\DSF\Desktop\Driving_Directions32.png");
            pPictureMarkerSymbol.Size = 25;

            // 设置符号
            IGeoFeatureLayer pGeoFeatureLayer = axMapControl1.get_Layer(0) as IGeoFeatureLayer;
            IFeatureRenderer pFeatureRenderer = pGeoFeatureLayer.Renderer;
            ISimpleRenderer pSimpleRenderer = pFeatureRenderer as ISimpleRenderer;
            pSimpleRenderer.Symbol = pPictureMarkerSymbol as ISymbol;

            // 刷新地图
            axMapControl1.Refresh();
            axTOCControl1.Update();
        }
    }
}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- kqyc.cn 版权所有 赣ICP备2024042808号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务