本文共 663 字,大约阅读时间需要 2 分钟。
作者:xinxin
基于土地资源和水资源的评价结果,确定区域农业生产的水土资源基础,如下表:
从上述表中可知:水和土地资源分别有5个等级,可以将好/高、较好/较高、一般/中等、较差/较低、差/低分别对应栅格值5、4、3、2、1,那么上述表可以转化为如下:
在这个需求中,提供的数据有:同一区域内土地资源的栅格数据和水资源的栅格数据,两个数据的栅格值有1、2、3、4、5; 分析过程:将两个栅格数据按表中的要求取研究区域内各个栅格像元的栅格值,最终生成一个栅格数据集。1、 实现这个功能首先想到的是栅格数据的代数运算,但是从表对应值可以看出,结果的栅格值无法用栅格代数运算直接生成。
2、 既然不能用栅格代数运算直接生成,那么也容易想到通过SuperMap iObjects中的datasetGrid. setValue(int x, int y, double value)方法循环设置研究区域每个像元的栅格值,但使用这种方式需要设置很多判断条件,代码显得很冗余,也不太建议使用。 3、 根据已知的两个栅格数据特征,再结合结果栅格数据的取值,其实是可以通过二元数组来实现,这种方式结构清晰,代码精简。 实现思路如下: 1) 用二元数组存储上述表中值,如下:2) 然后将两个栅格数据的像元值作为二元数组的下标来取对应的值,关键代码如下:
这样新生成的grid1就是我们要的结果栅格数据。
在GIS项目中,遇到类似需求已知的数据,都建议采用二元数组来取对应的像元值,这样不仅思路清晰,而且代码简洁。
转载地址:http://aipxi.baihongyu.com/