如题,如果给定一个地图模板,里面包含设置好的渲染方式,现在要做的是用新的数据替换旧的模板中对应的数据,并让新数据根据模板中的渲染方式渲染,

经测试,只是把旧数据替换为新数据是不能实现此需求的,举个例子:模板中的数据最大为100,最小为0,分五级的话最大一级为80-100,但是新的数据最大为200,最小为0 ,如果分五级的话最大一级应该是160-200,但是现在存在的问题是图层替换成新的数据了,但是地图上的分级没有更新,没有根据新数据的最大最小分级,所以单纯替换数据是不行的,在此想出的办法是,得到模板中数据的渲染方式比如:颜色、分级级数、分级字段,然后用新的数据重新分级,具体代码如下:

/// <summary>
        ///  图层渲染
        /// </summary>
        /// <param name="oldLayerList">地图模板中的图层(在此规定模板中第一个图层就是分级设色的图层)</param>

private void LayerRender(List<ILayer> oldLayerList)
        {
            try
            {
                if (oldLayerList.Count > 0)
                {
                    //得到旧图层的渲染方式
                    IFeatureLayer pFeatureLayer = oldLayerList[0] as IFeatureLayer;
                    IGeoFeatureLayer pGeoFeatureLayer = pFeatureLayer as IGeoFeatureLayer;
                    IClassBreaksRenderer classRender = pGeoFeatureLayer.Renderer as IClassBreaksRenderer;

//设置新的渲染方式的分级为旧渲染方式的级数
                    int desiredClasses = classRender.BreakCount;
                    //设置新的渲染方式的字段为旧渲染方式的字段
                    string fieldName = classRender.Field;

int classesCount;
                    double[] classes;

object dataFrequency;
                    object dataValues;
                    ITable pTable;

EqualIntervalClass pClassify;

ITableHistogram pTableHistogram = new BasicTableHistogramClass() as ITableHistogram;
                    IBasicHistogram pHistogram;
                    IClassBreaksRenderer pClassBreaksRenderer;

pTable = (ITable)pGeoFeatureLayer;
                    pHistogram = (IBasicHistogram)pTableHistogram;
                    //渲染字段的名称
                    pTableHistogram.Field = fieldName;
                    pTableHistogram.Table = pTable;
                    pHistogram.GetHistogram(out dataValues, out dataFrequency);
                    pClassify = new EqualIntervalClass();
                    pClassify.SetHistogramData(dataValues, dataFrequency);
                    //渲染字段的级数
                    pClassify.Classify(dataValues, dataFrequency, ref desiredClasses);
                    classes = (double[])pClassify.ClassBreaks;
                    classesCount = classes.Length;
                    //创建新渲染方式,设置字段和级数为旧渲染的字段和级数

pClassBreaksRenderer = new ClassBreaksRendererClass();
                    pClassBreaksRenderer.Field = fieldName;
                    pClassBreaksRenderer.BreakCount = desiredClasses;
                    //不能改为true,否则颜色会是反的
                    pClassBreaksRenderer.SortClassesAscending = false;

string strOutput = String.Empty;
                    double LeftLable = 0;
                    double RightLable = 0;
                    for (int index = 0; index < classesCount - 1; index++)
                    {
                        //设置新渲染的符号(颜色)为旧渲染的符号(颜色)
                        pClassBreaksRenderer.set_Symbol(index, classRender.get_Symbol(index));
                        //设置分级
                        pClassBreaksRenderer.set_Break(index, classes[index + 1]);
                        //设置分级lable
                        LeftLable = classes[classesCount - 2 - index];
                        RightLable = classes[classesCount - 1 - index];
                        strOutput = String.Format("{0}-{1}", LeftLable.ToString("0"), RightLable.ToString("0"));
                        //代码位置不能提前,否则lable显示这句不起作用
                        pClassBreaksRenderer.set_Label(index, strOutput);
                    }
                    pGeoFeatureLayer.Renderer = (IFeatureRenderer)pClassBreaksRenderer;
                    pActiveView.ContentsChanged();
                    pActiveView.Refresh();
                }
            }
            catch (Exception)
            {

return;
            }
        }

此文参考了http://blog.csdn.net/sophiasy/article/details/6067949博文,在此感谢!

给定一个地图模板和一些新的数据,用新的数据替换老的数据,对地图重新渲染(分级设色)相关推荐

  1. 给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零

    描述 给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2). 输入 输入共 1 行,一个整数N. ...

  2. 冰雹数 任意给定一个整, 如果是偶数,执行: N / 2 如果是奇数,执行: N * 3 + 1 生成的新的数字再执行同样的动作,循环往复。 通过观察发现,这个数字会一会儿上升到很高,

    冰 任意给定一个正整数N, 如果是偶数,执行: N / 2 如果是奇数,执行: N * 3 + 1 生成的新的数字再执行同样的动作,循环往复. 通过观察发现,这个数字会一会儿上升到很高, 一会儿又降落 ...

  3. ArcGIS教程:地图模板的使用

    地图模板是可用于创建新文档的地图文档 (.mxd).模板可能包含底图图层,也可能是各种常用的页面布局.地图模板使得在一系列地图上重新使用或标准化布局变得很容易.使用模板可以节省时间,因为您不必手动重新 ...

  4. C#+ArcEngine加载mxt地图模板文件

    各位看官老爷们,本文主要介绍二种读取mxt文件的方法(与读取mxd文档的方法高度相似).方法如下, 方法1: IMapDocument接口不仅可以对mxd文件(地图文档)进行操作,对待mxt文件(地图 ...

  5. 给定一个字符串,输出第一次出现k次的字母java,c++实现

    题目: 给定一个字符串,输出第一次出现k次的字母. 示例:    输入:abbcdaabgb               3    输出:a 输入:aaabbb               3     ...

  6. C++知识点59——类模板(4、类模板的模板参数是一个类模板)

    接上一篇文章https://blog.csdn.net/Master_Cui/article/details/111824152 七.类模板的模板参数是一个模板类 类模板的模板参数本身可以是一个类模板 ...

  7. 算法---给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合

    题目 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合.答案可以按 任意顺序 返回.给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母.示例 1:输入:digits ...

  8. 开课吧python学费-分享一个小白也能月赚2万的新技能

    原标题:分享一个小白也能月赚2万的新技能 这两年,每天都听身边人吐槽:"最近太累了,加班多.事情杂.离家远......可到手的工资却少得可怜." 辞职.跳槽,已然成为一种常态. 这 ...

  9. 如何计算给定一个unigram语言模型_n-gram语言模型原理到实践

    最近开始复习一些nlp基础知识,今天来回顾一下自然语言处理的重要技术语言模型(language model). 1 什么是语言模型 语言模型就是衡量一句话概率的模型,可以用来判断这句话为人话的概率.我 ...

最新文章

  1. Erlang基础学习总结2
  2. 用iframe实现局部刷新的各种跳转方法(网上总结)
  3. Dockerfile的ONBUILD指令
  4. 样式图片_中式门窗花格图片大全样式全面选择多
  5. 腾讯智慧交通战略重磅升级 打造以人为中心的未来交通
  6. transformClassesWithProfilers-transformForFullDebug
  7. java中类与方法叙述正确的是
  8. python代替mathematica_在 Mathematica 里与 Python 交互
  9. 苹果邮箱 android设置字体,苹果6邮件怎么设置qq邮箱怎么设置几号字体
  10. ubuntu上如何安装mysql
  11. 95后妈妈8成是全职,爸爸去哪了?
  12. UCI数据集整理(附论文常用数据集)
  13. Android Trace View使用
  14. killer网卡服务器未运行,外星人killer control center服务未运行怎么解决?
  15. RB-PEG2000-Pyrene,含有芘丁酸和罗丹明的PEG,Pyrene-PEG2000-Rhodamine
  16. 004.python基础知识之基本数据类型及基本运算符
  17. 分析师不死心 仍坚信微软终将成功并购雅虎
  18. poj-openjudge 1042:Moles 解题报告
  19. 最近项目开发再一次遇到了启动idea报错:Plugin Error Problems found loading plugins: Plugin “GlassFish Integration“ was
  20. 2021-12-17 每日一练 100元怎么买100个蛋,鸡蛋1毛一个,鸭蛋3元一个,鹅蛋6元一个

热门文章

  1. EM算法(期望最大化)详细推导
  2. 如何在PPT中画波浪线?
  3. 百度最近抽风了,快搜词典总是不收录
  4. 使用mybatis-plus产生java.sql.SQLSyntaxErrorException: Table ‘数据库.xxx表‘ doesn‘t exist(坑以踩)
  5. 未明学院:大学选错了专业,对职业发展有多大影响?
  6. 关于.bashrc文件(配置环境变量,alias)
  7. SpringBoot美化日志输出——自定义Banner艺术字体
  8. C++语言中的元类编程(七)
  9. vue3路由传参 query 、params
  10. JVM之记忆集|卡表|写屏障