arcgis如何求两个栅格数据集的差集

栅格数据集没有擦除功能,现在有栅格A和栅格B,怎么求两个栅格的差集C

具体步骤如下:

1、首先利用栅格计算器,把栅格B中的value全部赋值为0

输入语句:"栅格B" * 0

2  建立一个面图层:在ArcCataLog中选择存放面图层的文件夹,点击右键,选择Shapefile,选择要素类型为面,点击确定,即可建立新的面状图层。

  

                            

3    单击编辑器,选择‘开始编辑’,选中 ‘处理范围D’ 图层后确定

4   单击创建要素图标,然后在处理范围中单击‘处理范围0’图层(注意,如果不点的话,下面的构造工具就不会显示出来),选择矩形,绘制一个矩形(矩形能够覆盖住栅格A的范围)

5    绘制的面如下图所示,绘制完成之后单击‘停止编辑‘,保存编辑内容

6    修改‘处理范围D’图层的填充颜色和边框颜色,结果如下:

7    对‘栅格B归零’图层进行栅格计算,单击‘环境’按钮,对‘处理范围’进行设置,选择‘与图层  处理范围D 相同’,单击确定开始进行栅格计算。

输入内容:   Con(IsNull("栅格B归零"),1,"栅格B归零")

  

8   计算结果如下:‘栅格B扩展数据集中,栅格B的部分value为0,其他部分value为1,这是因为我们在步骤7的计算中将空值部分全部设为1的原因。

9   将栅格B扩展与栅格A进行栅格乘法运算,这样‘栅格B’的部分全部都为0值,而栅格A的其它部分还为栅格A的值,如下图所示

输入内容:  "栅格B扩展" * "栅格A"

10  使用栅格计算器,筛选栅格值大于0的区域,就得到最终的结果,即栅格C。 

输入内容:   Con("栅格乘集">0,"栅格乘集")

11   完事了,最终结果如下所示:

原文地址:https://www.cnblogs.com/yiliangmi/p/10075285.html

时间: 2024-10-10 21:00:02

arcgis如何求两个栅格数据集的差集的相关文章

哈希(4) - 求两个链表的交集(intersection)以及并集(union)

给定两个链表,求它们的交集以及并集.用于输出的list中的元素顺序可不予考虑. 例子: 输入下面两个链表: list1: 10->15->4->20 list2: 8->4->2->10 输出链表: 交集list: 4->10 并集list: 2->8->20->4->15->10 方法1 (简单方法) 可以参考链表系列中的"链表操作 - 求两个链表的交集(intersection)以及并集(union)" 方法2

写一个方法,求两个数的最大公约数和最小公倍数。

package homework0702; /* * 最大公约数 利用辗转相除法求解两个正整数的最大公约数 在循环中,只要除数不等于0,用较大的数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环较小的数,如此循环直到较小的数值为0,返回较大的数.即为最大公约数. 辗转相除法(欧几里得算法) 定理:两个整数的最大公约数等于其中较小的那个数和两数的相除余数的最大公约数.最大公约数(greatest common divisor)缩写为gcd. 最小公倍数 最小公倍数 = (a

不用【加减乘除】求两个整数之和

首先我们可以分析人们是如何做十进制的加法的,比如是如何得出5+17=22这个结果的.实际上,我们可以分成三步进行: 只做各位相加不进位,此时相加的结果是12(个位数5和7相加不要进位是2,十位数0和1相加结果是1): 做进位,5+7中有进位,进位的值是10;第三步把前面两个结果加起来,12+10的结果是22,刚好5+17=22. 我们一直在想,求两数之和四则运算都不能用,那还能用什么?对数字做运算,除了四则运算之外,也就只剩下位运算了.位运算是针对二进制的,我们就以二进制再来分析一下前面的三步走

求两个数的最大公约数

求两个数的最大公约数 问题:给定两个正整数a和b,求他们的最大公约数. 最简单的方法就是穷举法,如果a>b,那么依次计算1~b的所有整数是否是a和b的公约数. public static void main(String[] args) { long timer = System.currentTimeMillis(); System.out.println(getGCB(1000234234,1242342390)); System.out.println(System.currentTime

求两个数的最大公约数和最小公倍数

import java.util.Scanner; //求两个数的最大公约数,最小共倍数. public class CommonMaxDivisor { public static void main(String[] args){ Scanner scanner=new Scanner(System.in); int m=scanner.nextInt(); int n=scanner.nextInt(); scanner.close(); CommonMaxDivisor cmd=new

求两个字符串(数字串也是一样)是不是循环同构

第一种方法是kmp:将一个数组复制一次,然后再用另一个进行匹配. #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int N = 200005; const int MOD = 360000; int a[N],b[N],c[2*N],d[N],f[N]; void getFail(int n){

POJ 2546 &amp; ZOJ 1597 Circular Area(求两圆相交的面积 模板)

题目链接: POJ:http://poj.org/problem?id=2546 ZOJ:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=597 Description Your task is to write a program, which, given two circles, calculates the area of their intersection with the accuracy of three di

求两个数组的交集

问题: 给你两个排序的数组,求两个数组的交集. 比如: A = 1 3 4 5 7, B = 2 3 5 8 9, 那么交集就是 3 5. 思路: 1. 每一次从B数组中取一值,然后在A数组里逐个比较,如果有相等的,则保存.该算法复杂度为 O(MN). M, N 分别为数组 A B 的长度. 2. 因为A B 都排过序,所以,每一次从B数组取值后,可以利用二分查找看是否在数组A里有B所对应的值,这样复杂度变成了O(N lg M). 这里,如果N 比 M 大,可以从A中取值,然后在B中判断是否有A

算法 - 求两个自然数的最大公约数(C++)

placeholder算法 - 求两个自然数的最大公约数(C++),布布扣,bubuko.com