-
2020-12-29 02:10:58
栅格分析
——
栅格计算
问题和数据分析
1.
问题提出
栅格计算是栅格数据空间分析中最为常用的方法,也是进行复杂建模分析的基础,是对单栅格或多
栅格数据进行对应栅格格网的算术、逻辑或函数的运算,在
ArcGIS
中主要利用栅格计算器工具完
成。
2.
数据准备
使用的数据存储在
e:\data\4.1
文件夹下名为
41
的地理数据库中。一个是名为
com
的栅格数据,表
示研究区域玉米产量分布;另一个是名为
wheat
的栅格数据,表示研究区域小麦产量分布。
数学运算
ArcGIS
对栅格的数学运算包括算术运算、布尔运算和关系运算。算术运算主要包括加、减、乘、除等
运算,对一个栅格数据进行逐个栅格格网与常数的算术运算或对两个或两个以上栅格的对应位置的栅格
格网进行算术运算。
布尔运算主要包括与
(&)
、或
(|)
、异或
(^)
、和非
(~)
四种运算。是基于布尔运算来对栅格的每个格网值
进行判断的,经判断后,如果操作结果为
“
真
”
,则该格网输出结果为
1
;如果操作结果为
“
假
”
,则该格网
输出结果为
0.
关系运算主要包括等于(
==
)、大于(
>
)、小于
(
、不等于
(!=)
、大于或等于
(>=)
、小于或等于
(<=)
六种运算。是基于一定的关系条件对栅格中的每个格网值进行判断,满足判断条件的格网输出结果为
1
,不满足判断条件的格网输出结果为
0.
下面以加运算为例说明栅格计算器的操作方法。例如要计算每个栅格格网区域玉米与小麦的总产量,
就要将
corn
和
wheat
这两个栅格相加
1.
加载数据
Step1
:启动
ArcMap;
Step2
:在
ArcMap
更多相关内容 -
AE的栅格计算代码,供参考
2019-04-19 10:33:27gis中实现栅格计算器的功能,对多个删格图层进行各种数学运算,ArcGIS Engine 开发平台(gis achieve grid calculator function, a plurality of layers Raster various ...实现对重分类或者原有栅格数量的计算 -
ARCGIS10栅格计算PYTHON代码.pdf
2021-09-30 16:09:21ARCGIS10栅格计算PYTHON代码.pdf -
城市建筑迎风面积密度矢量%2F栅格计算模型对比研究.pdf
2020-03-03 15:49:59算模型和栅格计算模型对FAD进行模拟,从计算效率、不同尺度和不同土地利用类型上,对结果进行对比分析。研究表明:计 算效率上,矢量模型比栅格模型高。在城市尺度上,栅格模型与矢量模型模拟结果与宏观建筑分布... -
gdal 的 python脚本,用于栅格计算,cmd调用
2018-06-11 19:02:03gdal 的 python脚本,用于栅格计算,cmd调用,该脚本经过人工修改,能增加无值区域。 -
栅格计算面积
2021-02-23 08:44:321.进行栅格重分类 2.重分类 3.打开属性,查看像元大小 4.打开属性表 5.添加字段 6.打开字段计算器 7.计算结果如下(单位一般为平方米)1.进行栅格重分类
2.重分类
3.打开属性,查看像元大小
4.打开属性表
5.添加字段
6.打开字段计算器
7.计算结果如下(单位一般为平方米)
-
GEE:栅格计算(GoogleEarthEngine平台)
2021-04-01 15:55:13在GEE中怎么对影像进行栅格计算呢? 我们可以用.where()和.clamp() 具体语法可以参考https://zhuanlan.zhihu.com/p/76343298 这里抽取他的例子。 var DEM = ee.Image("USGS/SRTMGL1_003"); var Land_Cover = ee....以下列出几个ArcGIS中常用到的栅格计算器公式
同样,这些栅格计算公式也可以在GEE平台上实现。需求 公式 将空值赋予某一特定的数值(如100) CON(ISNULL(“raster”),100,“raster”) 将某个特定的栅格值(100)赋值为0 Con(“raster”==-100,0,“raster”) 将某一特定的栅格值(如100)赋值为空值 setnull(“raster”==100,“raster”) 将栅格数值在某一条件范围内(如大于100)赋值为0 Con(“raster” >100,0,“raster”) 使目标影像中的多个栅格数值赋予无效值 SetNull(("raster == 100) 栅格计算器中的平方和开方运算 (1)Power(raster,2),Power(raster,0.5) (2)Squre(),SquareRoot()
where()、clamp()和unitScale()
作用1:提取NDVI、DEM以及各个波段在某一区间的值。
作用2:去除影像中的噪声。
作用3:将某一区间的值重新赋值。updateMask()——掩膜掉不符合条件的像素
如果要掩膜掉不符合条件的像素请看这篇文章https://blog.csdn.net/qq_35591253/article/details/120649323
例一:https://code.earthengine.google.com/7f0920f9719f807107d72ee08dcebace?noload=true
//原始的NDVI栅格图像。(此时的NDVI值在区间[-1,+1])
//使用.where(NDVI.lt(0.3),0.3)之后的效果 //将NDVI小于0.3的值全部赋值为0.3 .where(NDVI.lt(0.3),0.3)
//使用.clamp(0,1)之后,的NDVI栅格图像。(此时的NDVI值在区间[0,1]) .clamp(0,1)
//将小于0.2的NDVI值赋值为1,大于0.39的赋值为3,在区间[0.2,0.39]的赋值为2 var NDVI = NDVI.where(greenest.lt(0.2),1) .where(greenest.gte(0.2).and(greenest.lte(0.39)),2) .where(greenest.gt(0.39),3)
//.unitScale(A,B) //将栅格数据的值类似于归一化操作,只不过将值转换到A和B之间 .unitScale(0,0.5)
有时候我们需要选择NDVI值大于0的像素;又比如,计算的指数值太大,可视化的时候其余像素会因为这个最大的误差而错误的显示,甚至被拉伸至0,导致影像不可用。为了将大于这些阈值的误差像素剔除,我们必须使用栅格计算,来处理遥感影像。
那么怎么在GEE平台上做栅格计算呢?
我们可以用.where()和.clamp()
具体语法可以参考https://zhuanlan.zhihu.com/p/76343298
这里抽取他的例子。var DEM = ee.Image("USGS/SRTMGL1_003"); var Land_Cover = ee.Image("ESA/GLOBCOVER_L4_200901_200912_V2_3").select('landcover'); var High_Land = Land_Cover.where(DEM.lt(4000),0) Map.setCenter(88.96, 33.77,4) Map.addLayer(DEM.lt(4000)) Map.addLayer(High_Land)
这里的.where()操作就是将DEM小于4000的值全部设置为0。
同ArcGIS里面的栅格计算。
var DEM = ee.Image("USGS/SRTMGL1_003"); var DEM_Clamp = DEM.clamp(450,795) Map.setCenter(106.5662, 29.5589,10) Map.addLayer(DEM_Clamp)
这里的.clamp()操作就是将DEM的值在450到795区间的抽取出来,形成新的图层。
注意: 如果一个像素值大于795,就给它赋值795,小于450的,都给它赋值450。
其中,450为最小值,795为最大值。
var L8_One = ee.Image(ee.ImageCollection("LANDSAT/LC08/C01/T1") .filterBounds(ee.Geometry.Point(106.5776, 29.5577)).first()); var L8_Unitscale = L8_One.unitScale(0,32767) print(L8_One,L8_Unitscale) Map.addLayer(L8_One, {"bands":["B5","B4","B3"],"max":30000}) Map.addLayer(L8_Unitscale, {"bands":["B5","B4","B3"],"max":0.92})
这个类似归一化,只不过归一化是将栅格值转化为-1到+1之间,.unitScale()操作是将栅格值转换到0和+1之间。
例子代码:
//定义addNDVI函数,该函数的输入是image,然后对image执行NDVI计算,并将结果命名为ndvi //并将生成的ndvi添加到原有的image中 var addNDVI = function(image) { var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI'); return image.addBands(ndvi); }; //选择2019年的L8影像 var lc82019 = L8.filterDate('2019-08-01', '2019-8-31'); //将筛选出来的2019年的影像均执行NDVI计算并添加该结果至原影像 var withNDVI = lc82019.map(addNDVI); //利用qualityMosaic()函数执行NDVI最大值筛选,并用gz的边界进行裁剪 var greenest = withNDVI.qualityMosaic('NDVI').clip(roi); //对筛选出来的像素,执行NDVI计算(由于筛选出来的是包含所有波段 //所以可以直接输出全波段影像而不仅仅是NDVI) var ndvi = greenest.normalizedDifference(['B5', 'B4']).rename('bestNDVI'); //添加生成的最优NDVI到图层窗口 Map.addLayer(ndvi,{palette: ['black', 'green', 'red']},'ndvi') print("over") //例一 var ndvi1 = ndvi.clamp(0,1) // //例二 // var ndvi1 = ndvi.where(ndvi.lt(0.3),0.3) Map.addLayer(ndvi1,{palette: ['black', 'green', 'red']},'ndvi')
-
arcgis栅格计算机如何算出小数
2022-05-17 15:25:47对于ArcMap的栅格计算器,我们在进行地图代数运算的时候期望得到小数值,但常常会得到整数值的结果,这是因为没有进行数据类型的转换。(用到栅格计算器中的Float公式,将栅格的数据类型转换位浮点型,继而进行相同...对于ArcMap的栅格计算器,我们在进行地图代数运算的时候期望得到小数值,但常常会得到整数值的结果,这是因为没有进行数据类型的转换。(用到栅格计算器中的Float公式,将栅格的数据类型转换位浮点型,继而进行相同的运算(公式如下图所示))
-
ARCGIS10栅格计算PYTHON代码.doc
2020-08-14 06:48:06使用python语言进行栅格计算 1重采样 通过更改像元大小和重采样方法来更改栅格数据集 用法 1可更改像元大小但栅格数据集的范围将保持不变 2本工具仅能输出方形像元大小 3可将输出保存为 ...4有四个用于重采样技术参数的... -
ARCGIS10栅格计算PYTHON代码
2020-11-20 21:58:46使用python语言进行栅格计算1重采样通过更改像元大小和重采样方法来更改栅格数据集用法:1)可更改像元大小,但栅格数据集的范围将保持不变。2)本工具仅能输出方形像元大小。3)可将输出保存为BIL、BIP、BMP、BSQ、... -
Arcgis/python批量栅格计算(乘法*缩放因子)
2022-03-03 09:26:54本文所用数据为一文件夹所有tif影像,进行乘0.01的缩放因子,处理后影像放入新文件夹中 1.如果Python装好了arcgis运行环境,可以直接;python运行。 # coding:utf-8 import os import arcpy from arcpy import env ... -
关于栅格计算空值处理的思路
2021-07-25 15:47:11假如我们有两个tif文件,如果其中一个tif文件中某像元A为空值,而另一个tif文件中的对应空间位置的像元B有值,我们在进行栅格计算是,很容易得到A+B为nodata的情况。下面这个方法可以解决这种问题。 Con(IsNull(“A... -
【FME-HOW-TO系列】27 栅格计算和栅格调色板
2019-12-18 14:58:50栅格计算和栅格调色板 介绍 在本文中,我们将计算归一化差分植被指数(NDVI)。在此过程中,我们将学习如何在RasterExpressionEvaluator中构建条件以及如何使用调色板创建栅格。NDVI基于植物消耗可见光辐射进行... -
对比R语言Raster包和Terra包栅格计算
2021-03-04 16:52:21对比R语言Raster包和Terra包栅格计算 Terra包可以认为是Raster的改进版,据说使用C语言重写了函数,提高了效率,同时支持并行计算,对于大数据量的栅格计算很有优势,我接下来就给大家展示一下我的试验。 这次实验... -
基于二元冠层栅格计算到冠层边缘的距离和相关冠层参数的 Matlab脚本_代码_下载
2022-06-07 09:42:57使用二值化树冠栅格(ASCII 文件)作为输入,它计算每个栅格像素到树冠边缘的非定向和定向距离。原则上,该算法由在二进制树冠图上运行的迭代边缘检测程序组成,其中与树冠边缘相邻的像素被标记,并且该过程迭代以... -
arcgis js 4.x 调用gp栅格计算将结果渲染后叠加到天地图
2021-11-11 16:08:39这几天在做arcgis js 4.x 调用gp栅格计算服务,将返回的栅格结果渲染后叠加到天地图上的功能,期间查询了很多相关资料,特此整理,方便大家学习。 一、栅格计算器GP服务发布 1.首先使用arcmap建立gp分析模型,运行... -
用Arcpy批量进行栅格计算
2019-01-06 11:37:52import arcpy from arcpy import env from arcpy.sa import * arcpy.CheckOutExtension("spatial") env.overwriteOutput=1 workingDir=r"D:\\lyj\\code\\"...env.workspace=workingDir+"... -
C#+AE 对栅格数据的操作
2021-04-12 12:30:16在Visual Studio平台上利用C#+ArcEngine对栅格数据进行常用操作 在Visual Studio平台上利用C#+ArcEngine对栅格数据进行常用操作 -
supermap iobject .net关于栅格计算使用自定义函数
2021-10-14 11:19:242.都是代数运算,栅格作为二维数据,是有矩阵算法的,和遍历一个一个的栅格值完全不同,算等效的数学式 函数一个个值遍历要比代数矩阵慢很多,其原理是通过对整份栅格的特征值和特征矩阵,通过代数算出最终的矩阵... -
栅格计算教程
2011-09-23 12:55:10栅格计算教程,用于GIS栅格计算,栅格分析,是GIS空间分析的必备教程 -
matlab二值化处理的代码-DCE-algorithm:Matlab脚本基于二进制冠层栅格计算到冠层边缘的距离和相关冠层参数
2021-05-24 06:59:44使用二进制化的冠层栅格(ASCII文件)作为输入,它为每个栅格像素计算到冠层边缘的非定向距离和定向距离。 原则上,该算法包括在二进制树冠图上运行的迭代边缘检测例程,其中对与树冠边缘相邻的像素进行标记,然后... -
Python读取栅格并计算
2015-05-14 21:45:32Python读取栅格并计算 -
python_进行栅格计算_加法_批量处理
2018-07-20 12:20:04import arcpy from arcpy.sa import * ...按年为单位的需要计算每年的平均值,也就是说要计算每一年每个格网12个月的平均值。ArcGIS通过Cell Statistics可以实现,这里使用python进行批量处理 -
ArcGIS教程:ArcGIS中的栅格计算
2014-12-08 12:06:15栅格计算是栅格数数据空间分析中数据处理和分析中最为常用的方法,应用非常广泛,能够解决各种类型的问题,尤其重要的是,它是建立复杂的应用数学模型的基本模块。 ArcGIS 9 提供了非常友好的图形化栅格计算器,利用... -
ArcGIS栅格计算结果 完美导入Coredraw方法
2019-07-22 18:08:19写在前面:写这篇笔记的时候,我的心态是崩溃的,因为这个方法是我在清绘完所有图片之后灵光一闪想到的,这个方法要比之前的方法方便快捷,...比如在多评价指标加权叠加计算时,就得需要用到Raster Calculator,计... -
栅格框架:对Spark DataFrames的地理空间栅格支持
2021-02-05 22:19:52RasterFrames提供了以DataFrame为中心的任意栅格数据视图,从而实现了时空查询,地图代数栅格操作以及与Spark ML算法生态系统的兼容性。 通过使用DataFrames作为核心的认知和计算数据模型,它能够以普通分析师可... -
栅格计算器FrmRasterCalculator.zip C#
2020-06-01 10:15:04FrmRasterCalculator栅格计算器; ESRI.ArcGIS.Geoprocessor.Geoprocessor gp = new ESRI.ArcGIS.Geoprocessor.Geoprocessor(); gp.OverwriteOutput = true; RasterCalculator rc = new RasterCalculator(); rc.... -
python 对遥感影像(tif)进行栅格计算——以栅格叠加求和为例
2021-08-07 19:38:24目标:对多张原始影像数据,如ndvi进行求和计算 前提准备: 1、将原始的栅格tif数据存放到同一个文件夹 2、新建一个输出文件夹 3、代码中请不要加入中文,不然容易报错 效果图如下: 代码如下: import arcpy from ... -
基于Python的批量简单栅格计算(我是快乐的搬运工)
2021-11-16 19:26:07import arcpy arcpy.env.workspace = "I:\\MODIS\\EVI\\test" rasterlist = arcpy.ListRasters("*","tif") output_path = "I:\\MODIS\\EVI\\test2\\" ... #Raster(raster)读取已有的栅格数据来建立栅格对象 .