点密度专题

来源:互联网 发布:期货软件排名 编辑:程序博客网 时间:2024/06/11 19:37

  //获得一个字段的别名
        private string Getalias(IFeatureClass pFeatureClass, string fieldName)
        {
            IFields pFields = pFeatureClass.Fields;
            int idx = pFields.FindField(fieldName);
            IField pField = pFields.get_Field(idx);
            return pField.AliasName;


        }
        private void SetDotDensitySymbol(IFeatureLayer pFeatureLayer, string fieldname)
        {
            //点密级渲染

            ISimpleMarkerSymbol sfs4 = new SimpleMarkerSymbol();
            IColor color4 = new RgbColorClass();
            color4.RGB = Color.LightSeaGreen.ToArgb();
            sfs4.Color = color4;

            IDotDensityRenderer renderer = new DotDensityRendererClass();
            IRendererFields flds = (IRendererFields)renderer;
            flds.AddField(fieldname, Getalias(pFeatureLayer.FeatureClass, fieldname));

            IDotDensityFillSymbol ddSym = new DotDensityFillSymbolClass();
            ISymbolArray symArray = (ISymbolArray)ddSym;
            symArray.AddSymbol((ISymbol)sfs4);
            ISimpleLineSymbol sls = new SimpleLineSymbolClass();
            ddSym.Outline = (ILineSymbol)sls;
            ddSym.DotSize = 1;
            ddSym.FixedPlacement = true;

            renderer.DotDensitySymbol = ddSym;

            renderer.DotValue = 2000;
            renderer.MaintainSize = false;

            IGeoFeatureLayer gfl = (IGeoFeatureLayer)pFeatureLayer;
            gfl.Renderer = (IFeatureRenderer)renderer;


        }
        private void button2_Click(object sender, EventArgs e)
        {

            IFeatureLayer pFeatureLayer = this.mainMap.get_Layer(0) as IFeatureLayer;
            SetDotDensitySymbol(pFeatureLayer, "Area");
            this.mainMap.ActiveView.Refresh();


        }