Engine中数据进行分级渲染时如何获取各个自然间断点的数值?

栅格和矢量数据进行分级渲染时如何获取各个自然间断点的值?
已邀请:

朱新颖

赞同来自:

【解决办法】:
获取间断点主要是IClassifyGEN接口,不过栅格和矢量数据获取唯一值和个数的方法不同;
栅格数据可以通过IRasterCalcUniqueValues获取唯一值,矢量数据可以通过IBasicHistogram获取。可参考下面代码:


//矢量要素类分级渲染
ITableHistogram tableHistogram = new BasicTableHistogramClass();
IBasicHistogram basicHistogram = tableHistogram as IBasicHistogram;
tableHistogram.Table = FC as ITable;
tableHistogram.Field = GiZScore;//分类字段
object dataValues;
object dataFrequent;
int classCount=5;
double[] classes;
basicHistogram.GetHistogram(out dataValues, out dataFrequent);
IClassifyGEN classifyGEN = new NaturalBreaksClass();
classifyGEN.Classify(dataValues, dataFrequent, ref classCount);
classes = (double[])classifyGEN.ClassBreaks;

//栅格数据分级渲染
IUniqueValues uniVal = new UniqueValuesClass();
IRasterCalcUniqueValues rasterUnique = new RasterCalcUniqueValuesClass();
rasterUnique.AddFromRaster(Raster, 0, uniVal);
object vValues, vFrequences;
uniVal.GetHistogram(out vValues, out vFrequences);
IClassifyGEN pClassifyGEN = new NaturalBreaksClass();
int classCount = 5;
pClassifyGEN.Classify(vValues, vFrequences, ref classCount);
double[] classes = pClassifyGEN.ClassBreaks as double[];

要回复问题请先登录注册