ArcGIS Engine中栅格数据如何获取排序后N%处的值?

环境WIN8+AE10.1+VS2010 如何获取栅格值排序后5%和95%处的值?
已邀请:

刘峥 - ArcGIS多面手

赞同来自:

【解决办法】:
如果数据呈正态分布,在AE中可以使用接口实现:
通过IRasterBand.Statistics获得IRasterStatistics,其属性有最大值、最小值、期望、标准差等。
然后通过数学公式可以获得指定区间的分界值。

如果栅格数据类型是整形,在AE中可以使用接口实现:
通过IRasterCalcUniqueValues.AddFromRaster方法获得唯一值对象IUniqueValues;
通过IUniqueValues.GetHistogram获得唯一值及频率数组;

由于栅格数据是浮点型的,uniqueValue过大,不能创建属性表,即不能使用IRasterCalcUniqueValues.AddFromRaster方法获得唯一值对象IUniqueValues;
有两种解决方法:
1. 调用arcpy中的arcpy.RasterToNumPyArray()方法把栅格数据转换成二维的矩阵,再用矩阵处理的方法获取统计数据。关于在.NET中调用arcpy的方法可以参考:http://resources.arcgis.com/en ... 0000/
http://blogs.esri.com/esri/arc ... -too/(将arcpy的命令在arcmap中打包成一个toolbox,然后在engine中通过调用GP工具的方式来调用);
2.  如果精度允许的话可以把像素值乘以一个较大的倍数,再转换成整型的数据,这样数据量变小后应该各个方法都能实现。

要回复问题请先登录注册