博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SuperMap产品中栅格数据更新还能这样用
阅读量:4163 次
发布时间:2019-05-26

本文共 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/

你可能感兴趣的文章
Spark总结整理(八):Spark Core 性能优化思路、步骤总结
查看>>
实时组件(SparkStreaming VS Flink)容错及语义说明
查看>>
浏览器地址栏输入URL,按下回车后发生了什么
查看>>
linux常用命令
查看>>
网络请求返回HTTP状态码
查看>>
autojs 图片查找比对
查看>>
css 自定义滚动条样式
查看>>
auto js 线程测试
查看>>
ie9走过的坑
查看>>
axios 返回错误消息
查看>>
vue子组件调用父组件的方法
查看>>
vue-element-admin 中使用国际化
查看>>
javascript中常用到的方法和事件
查看>>
电阻电容的使用
查看>>
万用表检测常用元器件的方法
查看>>
常用电子元件基础知识(图解)
查看>>
STM32开发板入门教程(十三) - SPI模式读写SD卡
查看>>
(2)stm32开发之使用Keil MDK以及标准外设库创建STM32工程
查看>>
(1)stm32开发之标准库的介绍
查看>>
(3)stm32开发之串口的调试
查看>>