AE栅格分类渲染问题解决

当按照下面方式写代码时,真正的分类break并没有设置成功。注意黑体部分;

 

        public static void ClassifyRenderRaster(IRasterLayer pRasterLayer, int ClassifyNum)
        {
            IRasterClassifyColorRampRenderer pRClassRend = new RasterClassifyColorRampRenderer() as IRasterClassifyColorRampRenderer;
            IRasterRenderer pRRend = pRClassRend as IRasterRenderer;

            IRaster pRaster = pRasterLayer.Raster;

            IRasterBandCollection pRBandCol = pRaster as IRasterBandCollection;
            IRasterBand pRBand = pRBandCol.Item(0);
            if (pRBand.Histogram == null)
            {
                pRBand.ComputeStatsAndHist();
            }
            pRRend.Raster = pRaster;//this
            pRClassRend.ClassCount = ClassifyNum;
            pRRend.Update();//this
            //省略colorRamp的生成代码

            int[] breaks = { 0, 25, 50, 75, 100, 200 };
            IFillSymbol fillSymbol = new SimpleFillSymbol() as IFillSymbol;
            for (int i = 0; i < pRClassRend.ClassCount; i++)
            {
                //fillSymbol.Color = colorRamp.get_Color(i);
                fillSymbol.Color = GetColor(i);
                pRClassRend.set_Symbol(i, fillSymbol as ISymbol);
                pRClassRend.set_Break(i, breaks[i]);//this
               //pRClassRend.set_Label(i, pRClassRend.get_Break(i).ToString("0.00"));
             }
               pRasterLayer.Renderer = pRRend //this
             }

改动后成功。IRasterRenderer.Update须在设置break之后,并且IRasterLayer须赋值为IRasterClassifyColorRampRenderer。

 

        public static void ClassifyRenderRaster(IRasterLayer pRasterLayer, int ClassifyNum)
        {
            IRasterClassifyColorRampRenderer pRClassRend = new RasterClassifyColorRampRenderer() as IRasterClassifyColorRampRenderer;
            IRaster pRaster = pRasterLayer.Raster;

            IRasterBandCollection pRBandCol = pRaster as IRasterBandCollection;
            IRasterBand pRBand = pRBandCol.Item(0);
            if (pRBand.Histogram == null)
            {
                pRBand.ComputeStatsAndHist();
            }

            pRClassRend.ClassCount = ClassifyNum;

            int[] breaks = { 0, 25, 50, 75, 100, 200 };
            IFillSymbol fillSymbol = new SimpleFillSymbol() as IFillSymbol;
            for (int i = 0; i < pRClassRend.ClassCount; i++)
            {
                fillSymbol.Color = colorRamp.get_Color(i);
                fillSymbol.Color = GetColor(i);
                pRClassRend.set_Symbol(i, fillSymbol as ISymbol);
                pRClassRend.set_Break(i, breaks[i]);
                //pRClassRend.set_Label(i, pRClassRend.get_Break(i).ToString("0.00"));
            }

            //IRasterRenderer pRRend = pRClassRend as IRasterRenderer;
            //pRRend.Update(); 这两句可以省略
            pRasterLayer.Renderer = pRClassRend as IRasterRenderer; //this
        }

  

开始主要参照这几个,没有解决

AE 栅格图分级渲染 : 参照这里不重新设置break的话(就是不是自定义分类),只设置每个分级的颜色之类的,是可以的,

arcengine栅格渲染(栅格重分类) IRasterClassifyColorRampRenderer :未测试

IRasterClassifyColorRampRenderer 使用时的一些奇怪的地方: 这个顺序不行吧?

时间: 2024-11-08 20:31:45

AE栅格分类渲染问题解决的相关文章

AE 栅格图分级渲染

AE 栅格图分级渲染 ArcEngine对矢量数据进行风格化实在是得心应手,同样的对于栅格图像也能进行风格化!以前没接触过,今天正好需要,做出了栅格图像的渲染!下面实现的思路: 1.定义渲染的一系列接口 2.判断图像是否建立了直方图,如果没有则进行创建. 3.定义颜色序列,为渲染提供渲染的方案. 4.调用Render方法进行渲染. 下面是代码:有两个方法,一个是加载栅格数据,一个是进行渲染,接着在事件里面调用方法,实现图像渲染! /// /// 栅格分类专题图 /// /// 栅格图层 publ

ae 栅格处理异常

栅格处理 异常 最近做的DEM图像处理的小程序,遇到异常,整理如下: (1)栅格求差,可以运行,但是结果很诡异,完全不是求差.多次检查栅格计算的脚本,以为是栅格计算的语句出错.多次检查运行语句,多次试验,结果还是还是很诡异. 后来发现,是栅格赋值出错.导致的结果很诡异.诡异的错误由简单的错误引起 (2)运行时出现异常,提示为Error 010327 : Unable to set analysis window 还有一个错误 是无法执行栅格计算的语句.刚开始以为是语句出错,多次修改栅格计算的语句

Ubuntu下部分Java软件字体渲染问题解决方法

On ubuntu or in general Linux OS, fonts in some Java software(like Geogebra, Arduino) looks terriable. 有时可以通过设置环境的方式让显示效果变得好一点 在.bashrc中加入: export _JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=on" 原文地址:https://www.cnblogs.com/gglin/p/9118932.html

栅格那点儿事(四A)---栅格的显示与渲染

栅格的显示与渲染 通过前两章的学习,应该对栅格这个东西不那么陌生了.在这一个部分,我们来看看如何展示出栅格数据最美丽的地方,在ArcGIS中栅格的显示与渲染.在进入细节之前,先来看看在ArcGIS中都可以怎样渲染栅格. 针对不同类型的栅格数据,我们可以通过不同的渲染方式将栅格的信息更好的传达出来.在ArcMap中加载栅格后,类似矢量数据,也可以在图层属性的Symbology中进行设置.对于一个单波段的栅格,通常使用最多的是下面这三种方式. 对于一张扫描的纸质线划图,为了更好的进行矢量化,通常我们

栅格那点儿事(四C)

栅格渲染之拉伸(Stretch) 现在我们知道如何在ArcGIS中渲染栅格数据了,但是还有一个常常会碰到的问题,尤其是在使用老版本的ArcGIS的时候,为啥我加了一个栅格数据进来,啥也看不见,是黑色的呢?或者颜色特别暗,基本看不清是什么呢? 在解决这个问题之前,我们需要先弄清楚是什么造成了这种现象.对于全黑的数据,我们需要先查看一下栅格的属性,看一下这一景影像的最大最小平均值是不是不为0.或者使用Identify按钮查看一下RGB是否都是大于0的正常值.如果属性中或者使用Identify返回的都

栅格那点儿事(四B)---多波段栅格数据的显示

多波段栅格数据的显示 我上面说了这么多,可能有的人会觉得平时也根本用不上.自然,说起影像数据,大家接触到对多的就是最最常见的航片或卫片.对于这种栅格数据呢,大多数的场景下,都只需实现一个效果,就是最接近真实视觉效果,跟到实际的地方亲眼所见一样. 在具体说这样的渲染在ArcGIS中怎么实现的,有什么地方可以调优之前,我们还需要回顾一下前文提到的一个概念,波段.我们有说过单波段的影像一般是灰度图,而全彩色的都是多波段的影像.那么为什么彩色的影像都是有3个或者更多波段组成,还有多个灰度图是如何渲染成彩

矢量图层渲染

public void fenjiZS() { IMap pMap; IGeoFeatureLayer pGeoFeatureL; IFeatureClass pFeatureClass; IFeatureCursor pFeatureCursor; IQueryFilter pQueryFilter; IClassBreaksRenderer pClassBreaksRenderer; IEnumColors pEnumColors; IColor pColor; ISimpleMarkerS

ArcGIS Web APIJavaScript API4.6在客户端浏览器生成FeatureLayer并进行渲染

当在调用arcgis sever上发布的地图服务的某一图层时,需要根据特定字段进行渲染,但发布的服务并没有该字段,可使用该方法. /******************************************************************************** **************************FeatureLayer*********************************** *****************************

Web 字体的选择和运用

首先来看一则设计师和前端小白的日常,这是使用 Mac OS 的设计师给的效果图 这是使用 Windows 开发的实际产品页面 我跟你们说,设定字体要按照基本法! (PS: 以上截图不代表网站真实面貌,仅为说明.) 先来看看字体和字族的关系 真的是一图胜千言啊!没看明白的话再来一张图! 这张图里的 Helvetica Neue Ultra Light 算是一个字体,而所列的这些字体都算是 Helvetica Neue 字族的字体. 一个字族需要满足指定字符集 Unicode Table 这张 un