ArcGIS Server专题图部分渲染

关键字:ArcGIS Server 专题图部分渲染、显示部分数据、过滤条件

重点代码为://过滤不需要显示的站点

                        IDataExclusion dtexc = pChartRender as IDataExclusion;

                        dtexc.ExclusionClause = "PID not in (" + sitePID + ")";

以下为专题图制作方法:

if (InitialEsriConnection())

                {

                    InitialEsriMap();

                    InitialEsriFeatureLayer("站位");

                    if (maoFeatureLayer != null)

                    {

                        #region 统计专题图

                        string[] fields = strfields.Split(',');

                        //得到设置专题图图层对象    

                        pGeoFeatureLyer = maoLayer as IGeoFeatureLayer;

                        #region 添加字段

                        bool havefield = false;

                        IFields Ifields = pGeoFeatureLyer.FeatureClass.Fields as IFields;

                        for (int col = 0; col < fields.Length; col++)

                        {

                            for (int j = 0; j < Ifields.FieldCount; j++)

                            {

                                if (fields[col] == Ifields.get_Field(j).Name)

                                    havefield = true;

                            }

                            if (!havefield)

                            {

                                IField oField = (IField)mserverContext.CreateObject("esriGeodatabase.Field");

                                IFieldEdit oFieldEdit = oField as IFieldEdit;

                                oFieldEdit.Name_2 = fields[col];

                                oFieldEdit.Type_2 = ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeDouble;

                                pGeoFeatureLyer.FeatureClass.AddField(oFieldEdit);

                               

                            }

                            havefield = false;

                        } 

                        #endregion

                        #region 设置数值

                        ESRI.ArcGIS.Geodatabase.IQueryFilter2 queryFilter = new ESRI.ArcGIS.Geodatabase.QueryFilterClass();

                        queryFilter.WhereClause = "PID in (" + sitePID + ")";

                        for (int i = 0; i < pGeoFeatureLyer.FeatureClass.FeatureCount(queryFilter); i++)

                        {

                            IFeature ifeature = pGeoFeatureLyer.FeatureClass.GetFeature(i);

                            int pidindex=ifeature.Fields.FindField("PID");

                            HY_SurveySiteEntity siteen = BusinessFacadeMMFrame.HY_SurveySiteDisp(int.Parse(ifeature.get_Value(pidindex).ToString()));

                            if (sitePID.Contains(ifeature.get_Value(pidindex).ToString()))

                            {

                                for (int col = 0; col < fields.Length; col++)

                                {                                    

                                    pidindex = ifeature.Fields.FindField(fields[col]);

                                    DataRow dr = dt.Select(" Station='" + siteen.Station + "' and Field='" + fields[col] + "'")[0];

                                    ifeature.set_Value(pidindex,double.Parse(dr[0].ToString()));

                                    ifeature.Store();

                                }

                            }

                        }

                        #endregion

                        //设置专题图元素的属性名称         

                        IChartRenderer pChartRender = mserverContext.CreateObject("esriCarto.ChartRenderer"as IChartRenderer;

                        IRendererFields pRenderFields = pChartRender as IRendererFields;

                        foreach (string var in fields)

                        {

                            pRenderFields.AddField(var, var);

                        }

                        //实例化图表对象并取得元素指定属性的最大值

                        IBarChartSymbol pBarChartSymbol = mserverContext.CreateObject("esriDisplay.BarChartSymbol"as IBarChartSymbol;

                        IChartSymbol pChartSymbol = pBarChartSymbol as IChartSymbol;

                        pChartSymbol.MaxValue = 10;

                        pBarChartSymbol.Width = 8;

                        IMarkerSymbol pMarkerSymbol = pBarChartSymbol as IMarkerSymbol;

                        pMarkerSymbol.Size = 50;

                        //设置柱状图列填充效果

                        ISymbolArray pSymbolArray = pBarChartSymbol as ISymbolArray;

                        Random ranColor = new Random();

                        for (int i = 0; i < fields.Length; i++)

                        {

                            IFillSymbol pFillSymbol = mserverContext.CreateObject("esriDisplay.SimpleFillSymbol"as IFillSymbol;

                            pFillSymbol.Color = GetRGB(ranColor.Next(255), ranColor.Next(255), ranColor.Next(255));//看后面GetRGB得到专题图随机颜色函数

                           pSymbolArray.AddSymbol((ISymbol)pFillSymbol);

                        }

                        //应用柱状专题到指定图层

                        pChartRender.ChartSymbol = pBarChartSymbol as IChartSymbol;

                        pChartRender.Label = "Test";

                        pChartRender.UseOverposter = false;

 

                        //过滤不需要显示的站点

                        IDataExclusion dtexc = pChartRender as IDataExclusion;

                        dtexc.ExclusionClause = "PID not in (" + sitePID + ")";

 

 

                       

                        pGeoFeatureLyer.Renderer = pChartRender as IFeatureRenderer;

                        //刷新地图显示

                        Map1.Refresh();

                        #endregion

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值