矢量图层渲染

 public void fenjiZS()
        {
            IMap pMap;
            IGeoFeatureLayer pGeoFeatureL;
            IFeatureClass pFeatureClass;
            IFeatureCursor pFeatureCursor;
            IQueryFilter pQueryFilter;
            IClassBreaksRenderer pClassBreaksRenderer;
            IEnumColors pEnumColors;
            IColor pColor;
            ISimpleMarkerSymbol  pMarkerFillS;
            int lbreakIndex;
            //定义要渲染的字段
            const string strField = "AQIType";
            //定义分类的数目为6
            const int numDesiredClasses = 6;
            pMap = axMapControl1.Map;
            //选定要渲染的图层
            pGeoFeatureL = pMap.get_Layer(0) as IGeoFeatureLayer;
            pFeatureClass = pGeoFeatureL.FeatureClass;
            pQueryFilter = new QueryFilterClass();
            pFeatureCursor = pFeatureClass.Search(pQueryFilter, true);
            IDataStatistics pDataStatistics;
            IStatisticsResults pStatisticsResult;
            pDataStatistics = new DataStatisticsClass();
            pDataStatistics.Cursor = pFeatureCursor as ICursor;
            pDataStatistics.Field = strField;
            pStatisticsResult = pDataStatistics.Statistics;
            if (pStatisticsResult == null)
            {
                MessageBox.Show("Failed to gather stats on the feature class");
            }
            pClassBreaksRenderer = new ClassBreaksRendererClass();
            pClassBreaksRenderer.Field = strField;
            pClassBreaksRenderer.BreakCount = numDesiredClasses;
            //获得颜色
            pEnumColors = CreateColor();
            string[] LabelAQI = {"优","良","轻度污染","中度污染","严重污染","重度污染"};
            for (lbreakIndex = 0; lbreakIndex < numDesiredClasses; lbreakIndex++)
            {
                pColor = pEnumColors.Next();
                pMarkerFillS = new SimpleMarkerSymbolClass ();//渲染点图层
                pMarkerFillS.Color = pColor;
                pMarkerFillS.Style = esriSimpleMarkerStyle .esriSMSCircle;
                //不同的类别设置不同的填充样式
                pClassBreaksRenderer.set_Symbol(lbreakIndex, pMarkerFillS as ISymbol);
                //分类渲染对象的断点
                pClassBreaksRenderer.set_Break(lbreakIndex, lbreakIndex + 1);
                pClassBreaksRenderer.set_Label(lbreakIndex, LabelAQI[lbreakIndex]);
            }
            //设置Renderer
            pGeoFeatureL.Renderer = pClassBreaksRenderer as IFeatureRenderer;
            axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);

        }
 public IEnumColors CreateColor()//生成颜色带方法
        {
            IRgbColor fromColor = new RgbColor();
            fromColor.Red = 0;
            fromColor.Green = 255;
            fromColor.Blue = 0;
            IRgbColor toColor = new RgbColor();
            toColor.Red = 255;
            toColor.Green = 0;
            toColor.Blue = 0;
            IAlgorithmicColorRamp pRampColor;
            pRampColor = new AlgorithmicColorRampClass();
            pRampColor.FromColor = fromColor;
            pRampColor.ToColor = toColor;
            pRampColor.Size = 6;//设置颜色带数量
            bool ok = true;
            pRampColor.CreateRamp(out ok);//创建颜色带
            return pRampColor.Colors;
        }
时间: 2025-01-05 20:45:46

矢量图层渲染的相关文章

OpenLayers 3 之 地图矢量图层(ol.layer.Vector)详解

在 GIS 中,地图一般分为两大类:栅格地图和矢量地图,栅格地图其实就是数码照片,只不过有的是卫星拍的.它们有一个共同特征,就是它们都是由很多个像素组成,像素大小是一致的,行高和列宽是一致的,从这个角度看,一幅遥感影像就像栅格. 矢量地图,是由很多要素组成的,每个要素都有自己的地理坐标,基于数学规则,无论矢量地图怎么放大,地图都不会失真.它是 OpenLayers 中非常重要的一种图层类型,利用矢量地图可以实现非常多的功能,如 动态标绘.调用 WFS 服务.编辑要素.可点击的要素.动态加载要素

GeoServer中利用SLD配图之矢量图层配图

1 背景 我们在ArcMap中可以直接通过symbol功能对图层进行定制化配图.但是,如果我们将配好图的shp图层在GeoServer中发布时,会发现图层样式完全丢失了.其实原因很简单,用ArcMap配好的图层,其样式文件并不是保存在shp中,而是保存在mxd或者msd中. 那么如何才能让GeoServer发布的图层也能达到定制化配图的效果呢? 2 SLD简介 SLD是风格化图层描述器(Styled Layer Descriptor)的简称,是2005年OGC提出的一个标准,这个标准在一定条件下

Qt+QGis二次开发:加载栅格图层和矢量图层

一.加载栅格图像 加载栅格图像的详细步骤在下面代码里: //添加栅格数据按钮槽函数 void MainWindow::addRasterlayers() { //步骤1:打开文件选择对话框 QString filename=QFileDialog::getOpenFileName(this,tr("打开栅格数据"),"","remote sensing image(*.tif *.tiff);;image(*.jpg *.jpeg *.png *.bmp)

openlayers6实现webgl点图层渲染效果(附源码下载)

前言:openlayers6推出来的有一段时间,推出来的新特性见:https://github.com/openlayers/openlayers/releases/该版本的主要功能是能够组合具有不同渲染器类型的图层.以前,地图只使用一种渲染策略,并且地图中的所有图层都必须实施该策略.现在,可以使用包含使用不同渲染技术的图层的地图.例如,这使得可以在同一地图中将Canvas(2D)图层与基于WebGL的图层组合在一起.也可以使用自定义渲染器创建图层.因此,您可以拥有一个使用另一个库(例如d3)的

ArcGis Engine 矢量图层和栅格图层的加载

//此处为矢量图层的加载方法,由于图层本身是已经制作好了的MXD类工程文件,所以直接采用MXD的加载方式 if (axMapControl1.CheckMxFile(shpFile))//判断是否为MXD文件 { IArray pArry; pArry = axMapControl1.ReadMxMaps(shpFile, Type.Missing); IMap pMap; for (int i = 0; i < pArry.Count; i++) { pMap = pArry.get_Elem

openlayers3 在地图上叠加WFS查询矢量图层

随着终端设备计算能力的加强,用户在使用地图的时候也需要越来越多的交互效果.比如现在很火的室内导航,为了获得好的用户体验,就需要当用户单击某一商店的时候该商店的颜色能相应的变化,这就需要叠加矢量图层.如何能在瓦片地图之上叠加矢量图层呢,这个就需要用到WFS查询. 我的思路是:基于WFS查询把得到需要矢量显示的图层中数据,然后再显示.具体思路为: 1.通过geoserver的WFS服务查询所需要矢量显示的数据信息 2.设置矢量数据的显示样式 3.openlayers添加矢量图层 4.设置鼠标移上去的

(十二) WebGIS中矢量图层的设计

1.前言 在前几章中我们已经了解了什么是矢量查询.屏幕坐标与地理坐标之前的转换以及要素的设计,有了这些知识,这一章里我们终于可以进行矢量图层的设计了. 在Catalog里创建一个FeatureClass时,我们能够选择是创建点图层或者线图层或者面图层等.所谓点图层,即该图层中的要素只能是点,其他几个图层顾名思义,也是如此.那么在WebGIS中,我们同样也可以按照ArcGIS里的这个设计思路来设计我们的矢量图层,虽然这个方法是肯定可行的,但是在实际的业务需求中,如果按照这种点图层等来严格控制的话,

(七)WebGIS中的栅格图层和矢量图层的显示原理

1.何为栅格数据,何为矢量数据? 在GIS中,对于数据格式的分类,我们一般会将其分为栅格数据和矢量数据两种类型.栅格数据是将空间看做离散的像元,由二维数组或者其他数据组织方式来进行表达.矢量数据恰恰相反,它将空间看成是连续的,用要素(点.线.面)来进行表达. 我们把栅格数据和矢量数据的特点归纳如下: (1)栅格数据是离散的,矢量数据是连续的.所以栅格数据多用二维数组(行.列)的方式组织.而矢量数据可以理解为一种向量,它用平面坐标(X.Y)的有序几何来组织. (2)栅格数据的最小单位是像素,矢量数

ArcGIS统计栅格像元值并转换为矢量图层

很多时候,我们需要得到矢量数据区域所对应栅格数据的像元统计值(求平均.求和等),然后将获得的统计值赋给矢量图层的属性表,在ArcGIS中操作如下:(PS:第一次写技术文章,望大家多多体谅与支持,么么哒) 1.栅格统计:统计栅格数据,按照需要(求和.求平均)用所需要的矢量数据(矢量目标图层)进行统计,(注:考虑到统计分析较为常见,第一步前期并未实例截图). 2.栅格转矢量:将统计出栅格图层转换为矢量点图层:Raster to Point:            3.矢量点图层赋值:将第一步统计的栅