给定一个地图模板和一些新的数据,用新的数据替换老的数据,对地图重新渲染(分级设色)
如题,如果给定一个地图模板,里面包含设置好的渲染方式,现在要做的是用新的数据替换旧的模板中对应的数据,并让新数据根据模板中的渲染方式渲染,
经测试,只是把旧数据替换为新数据是不能实现此需求的,举个例子:模板中的数据最大为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博文,在此感谢!
给定一个地图模板和一些新的数据,用新的数据替换老的数据,对地图重新渲染(分级设色)相关推荐
- 给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零
描述 给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2). 输入 输入共 1 行,一个整数N. ...
- 冰雹数 任意给定一个整, 如果是偶数,执行: N / 2 如果是奇数,执行: N * 3 + 1 生成的新的数字再执行同样的动作,循环往复。 通过观察发现,这个数字会一会儿上升到很高,
冰 任意给定一个正整数N, 如果是偶数,执行: N / 2 如果是奇数,执行: N * 3 + 1 生成的新的数字再执行同样的动作,循环往复. 通过观察发现,这个数字会一会儿上升到很高, 一会儿又降落 ...
- ArcGIS教程:地图模板的使用
地图模板是可用于创建新文档的地图文档 (.mxd).模板可能包含底图图层,也可能是各种常用的页面布局.地图模板使得在一系列地图上重新使用或标准化布局变得很容易.使用模板可以节省时间,因为您不必手动重新 ...
- C#+ArcEngine加载mxt地图模板文件
各位看官老爷们,本文主要介绍二种读取mxt文件的方法(与读取mxd文档的方法高度相似).方法如下, 方法1: IMapDocument接口不仅可以对mxd文件(地图文档)进行操作,对待mxt文件(地图 ...
- 给定一个字符串,输出第一次出现k次的字母java,c++实现
题目: 给定一个字符串,输出第一次出现k次的字母. 示例: 输入:abbcdaabgb 3 输出:a 输入:aaabbb 3 ...
- C++知识点59——类模板(4、类模板的模板参数是一个类模板)
接上一篇文章https://blog.csdn.net/Master_Cui/article/details/111824152 七.类模板的模板参数是一个模板类 类模板的模板参数本身可以是一个类模板 ...
- 算法---给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合
题目 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合.答案可以按 任意顺序 返回.给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母.示例 1:输入:digits ...
- 开课吧python学费-分享一个小白也能月赚2万的新技能
原标题:分享一个小白也能月赚2万的新技能 这两年,每天都听身边人吐槽:"最近太累了,加班多.事情杂.离家远......可到手的工资却少得可怜." 辞职.跳槽,已然成为一种常态. 这 ...
- 如何计算给定一个unigram语言模型_n-gram语言模型原理到实践
最近开始复习一些nlp基础知识,今天来回顾一下自然语言处理的重要技术语言模型(language model). 1 什么是语言模型 语言模型就是衡量一句话概率的模型,可以用来判断这句话为人话的概率.我 ...
最新文章
- Erlang基础学习总结2
- 用iframe实现局部刷新的各种跳转方法(网上总结)
- Dockerfile的ONBUILD指令
- 样式图片_中式门窗花格图片大全样式全面选择多
- 腾讯智慧交通战略重磅升级 打造以人为中心的未来交通
- transformClassesWithProfilers-transformForFullDebug
- java中类与方法叙述正确的是
- python代替mathematica_在 Mathematica 里与 Python 交互
- 苹果邮箱 android设置字体,苹果6邮件怎么设置qq邮箱怎么设置几号字体
- ubuntu上如何安装mysql
- 95后妈妈8成是全职,爸爸去哪了?
- UCI数据集整理(附论文常用数据集)
- Android Trace View使用
- killer网卡服务器未运行,外星人killer control center服务未运行怎么解决?
- RB-PEG2000-Pyrene,含有芘丁酸和罗丹明的PEG,Pyrene-PEG2000-Rhodamine
- 004.python基础知识之基本数据类型及基本运算符
- 分析师不死心 仍坚信微软终将成功并购雅虎
- poj-openjudge 1042:Moles 解题报告
- 最近项目开发再一次遇到了启动idea报错:Plugin Error Problems found loading plugins: Plugin “GlassFish Integration“ was
- 2021-12-17 每日一练 100元怎么买100个蛋,鸡蛋1毛一个,鸭蛋3元一个,鹅蛋6元一个
热门文章
- EM算法(期望最大化)详细推导
- 如何在PPT中画波浪线?
- 百度最近抽风了,快搜词典总是不收录
- 使用mybatis-plus产生java.sql.SQLSyntaxErrorException: Table ‘数据库.xxx表‘ doesn‘t exist(坑以踩)
- 未明学院:大学选错了专业,对职业发展有多大影响?
- 关于.bashrc文件(配置环境变量,alias)
- SpringBoot美化日志输出——自定义Banner艺术字体
- C++语言中的元类编程(七)
- vue3路由传参 query 、params
- JVM之记忆集|卡表|写屏障