ArcGIS中怎么计算分段函数

01  前言

        记得3月初的时候有学员咨询在ArcGIS中怎么去处理分段函数,比如下面计算植被覆盖因子的。

        为了介绍这个分段函数需要的操作数据,我专门写了一篇ArcGIS计算NDVI的文章来获得NDVI数据。如下文:

ArcGIS计算NDVI为什么只有1和-1及0值_GIS思维的博客-CSDN博客_nir波段在遥感影像的应用中,归一化植被指数是非常常用的一个指标,是反映农作物长势和营养信息的重要参数之一,在专业处理遥感影像的应用软件(ENVI、ERDAS等)中都有直接的工具可以来计算NDVI。NDVI的计算公式为:(NIR-R)/(NIR+R)。NIR为近红外波段的反射值,R为红光波段的反射值。NDVI的取值范围为[-1,1],-1可见光高反射;0表示有岩石或裸土等,NIR和R近似相等;正值,表示有植被覆盖,且随覆盖度增大而增大。 那像我们常用的ArcGIS应该怎么来正确计算NDVI呢?...https://blog.csdn.net/kinghxj/article/details/123764481

    对于分段函数,对于ArcGIS的栅格计算器有了解的朋友,应该可以想到,我们可以通过条件分析的函数(con)来解决这个问题。

     其实con函数本身是条件函数工具在栅格计算中的应用。但是在栅格计算器中使用con函数,我们可以使用语句嵌套就可以实现一些复杂的计算,比如我们的函数。

    我们在ArcGIS10.X零基础 入门实战教学中,对于栅格计算器也是有详细教学,也介绍了栅格计算器中如何使用con函数来达到分段函数的作用。

ArcGIS10.X入门实战视频教程(GIS思维)--大数据视频教程-大数据-CSDN程序员研修院让初学者更快入门、应用,从基础到实战。介绍实用、常用,让学习事半功倍。 享受课程答疑 提供数据与PPt,边学边练,事半功倍-https://edu.csdn.net/course/detail/4046?spm=1002.2002.3001.4147

我们下面再引述一下ArcGIS的帮助,让大家更加清楚一下con函数的复杂用法

     

02  在地图代数中使用条件函数工具 

要在地图代数的栅格数据集中执行条件判定,请将栅格数据集作为条件栅格输入到条件函数工具中。输入一个“真”栅格以提供当条件判定为“真”时的返回值。输入一个“假”栅格以提供当条件判定为“假”时的返回值。where 子句参数定义了根据输入条件栅格数据进行判定的表达式。

示例

例如,如果您想基于像元的坡度(由输入条件栅格数据确定),用值 10(指定为真常量)来标识好的构造,而用值 1(指定为假常量)标识不适宜的构造,并且认定小于 15% 的坡度是好的构造,那么应输入的表达式为“value < 15”。如果一个像元的坡度小于 15%,那么它将获得为条件真指定的值(此例中为 10);否则,它将获得为条件假指定的值(此例中为 1)。

OutRas = Con(SlopeRas, 10, 1, "VALUE < 15")

在地图代数中使用条件函数工具创建复杂表达式

在“地图代数”中,比起使用简单的逻辑条件,使用表达式可以实现更多功能。例如,通过使用一个复杂的表达式,您可以将几个单独的表达式嵌套其中,指定多个栅格,或者使用其他工具和运算符。

任何可以得出栅格数据的有效“地图代数”表达式都能用作输入条件、“真”栅格输入或“假”栅格输入的参数。

请注意,如果输入条件栅格表达式用在复杂表达式中,那么应删除 <where_clause> 参数。在这种情况下,条件函数工具的语法具有如下所示的一般形式:

Con(in_conditional_raster, true_raster, {false_raster})

该情况下删除 <where_clause> 参数是因为条件栅格数据由地图代数表达式提供。地图代数表达式会返回一个栅格数据集,例如,如果执行的是逻辑运算,则会返回一个值为 0 和 1 的栅格数据集。

示例

  • 以下是在条件函数工具中使用复杂表达式的示例:

    OutRas = Con(InRas < 15, 10, 1)

    在以上表达式中,如果 InRas 中的像元值小于 15,则输出栅格中该像元位置将被赋予值 10(真);否则,如果像元值大于或等于 15,则输出栅格中该像元位置将被赋予值 1(假)。

  • 如果不为“假”表达式指定任何值或表达式:

    OutRas = Con(InRas < 15, 10)

    则除了值为 15 或大于 15 的像元被赋予 NoData 之外,其他输出结果将与上例中的输出结果相同。

  • 可以使用任意有效表达式来代替 <true_expression> 和 <false_expression> 参数值。

    OutRas = Con(InRas1 > 5, Sin(InRas1), Cos(InRas1))

    以上表达式将计算所有大于 5 的值的正弦和所有小于或等于 5 的值的余弦,并将结果发送至 OutRas。

  • 条件函数工具可以使用多条件语句,但是,如果条件判定结果为“真”,每个条件语句必须都有能够指定输出像元值的值或表达式 <true_expression>。如果条件判定的结果都不为真,则将使用可选值或 {false_expression} 表达式。

    OutRas = Con(InRas1 < 5, Sin(InRas1), Con(InRas1 < 20, Cos(InRas1), Con(InRas1 > 50, 100, 0)))

    以上表达式将为小于 5 的值计算正弦,为大于等于 5 但小于 20 的值计算余弦,而大于等于 20 但小于等于 50 的像元值将被赋予值 0,大于 50 的像元值将被赋予值 100。

  • 在条件函数工具的条件表达式中可以使用多种条件。

    OutRas = Con((InRas1 > 5) & (InRas1 < 10), 5, 100)

    在以上表达式中,如果 InRas1 中的输入栅格数据大于 5 且小于 10,为该位置赋予值 5,否则,为该位置赋予值 100。

  • 可对条件表达式和判定结果中的输入栅格数据应用工具和运算符。

    OutRas = Con(Sin(InRas1) > .5, 10, 100)
    OutRas2 = Con((InRas1 + InRas2) > 10, 100, 5)
    OutRas3 = Con(InRas1 > 5, Cos(InRas1), Sin(InRas1))

  • 可以在条件函数工具中嵌套另一个条件函数工具。

    OutRas = Con(InRas1 > 23, 5, Con(InRas1 > 20, 12, Con((InRas1 > 2) & (InRas1 < 17), Sin(InRas1), 100)))

  • 在条件语句中和对像元执行运算的表达式中可以使用多个栅格数据。

    OutRas = Con(InRas1 + InRas2 > 7, Sin(InRas1), Cos(InRas2))
    OutRas2 = Con(InRas1 < 9, InRas1 * InRas2 + Tan(InRas3), Cos(InRas1))

    将多个栅格数据作为输入是可行的,因为在移动至下一个像元之前条件函数工具就已对各 x,y 像元位置进行了计算。当输入多个栅格数据时,指定的运算符或工具将在多个栅格数据间以逐个像元的方式执行处理。 

03 实际应用

      经过上面的讲解,我相信打击对于栅格计算器分段函数的应用应该是了解了,那么要计算下面的分段函数就比较简单了。

有些朋友可能不知道ArcGIS中lg函数怎么表示,要知道ArcGIS大部分都是以python的语法来运算的,所以一般的python函数在arcgis中都是通用的,所以这这里的lg函数就是lg10了。

那下面就直接在ArcGIS中栅格计算器中应用了。(注意:因为我的测试数据比较小,所以我将分段值0.783(78.3%)改成了0.236,这个值是我随意改的。

如下语句:

Con("lc08_l1tp_11" <= 0,1,Con(("lc08_l1tp_11" > 0) & ("lc08_l1tp_11" <= 0.236),(0.6508 - 0.3436 * Log10("lc08_l1tp_11") ),Con("lc08_l1tp_11" > 0.236,0)))

 

参考学习:

ArcGIS10.X入门实战视频教程(GIS思维)--大数据视频教程-大数据-CSDN程序员研修院让初学者更快入门、应用,从基础到实战。介绍实用、常用,让学习事半功倍。 享受课程答疑 提供数据与PPt,边学边练,事半功倍-https://edu.csdn.net/course/detail/4046?spm=1002.2002.3001.4147

ArcGIS全系列实战视频教程(GIS思维) - 黄晓军 - CSDN程序员研修院 - 在线视频教程包含6个课程,从小白到高阶应用人才,入门到精通的全系列。1 ArcGIS 10.X 入门实战视频教程(GIS思维)本课程经过全面的再录制,更全面、更系统化,支持随到随学,免费试学。利用ArcGIS10.6中文版教学,试用于ArcGIS10.0、10.1、10.2、10.3、10.4、10.5、10.6、10.7系列,让零基础或者掌握不全面的人快速系统地了解ArcGIS的应用,让学习者对ArcGIS整体认识、空间数据信息采集、属性表操作、拓扑、空间数据可视化、出图、数据更新、投影变换与格式转换、矢量、栅格数据空间分析有一个全新的认识2 ArcGIS之遥感影像分类及分类成果应用简介:让学员快速上手ArcGIS的遥感影像分类。拓展对遥感卫星的认识,学会遥感影像的波段合成、分类前数据分析处理、监督分类、非监督分类、分类后后处理、分类精度评价、土地利用转移矩阵、土地利用动态变化图、土地利用标准出图。等等。详见课程目录3 ArcGIS与CASS在地籍数据建库中的结合应用简介:课程采用ArcGIS10.3.1中文版与CASS7.1录制。使用与ArcGIS的10.0、10.1、10.2、10.3、10.4、10.5、10.6、10.7,利用地籍项目实战,提升ArcGIS的应用水平,掌握不动产中地籍的基本处理方法,是就业必备佳品。4 ArcGIS之模型构建器(ModelBuilder)视频教程本课程本ArcGIS入门实战课程之后推出的进阶版实战课程。课程介绍ArcGIS的模型构建器的应用,分为模型构建器的初识、进阶、高级应用三个部分。总共13章42个节,总长12个小时。课程系统介绍了ArcGIS模型构建器的应用,让你的数据处理分析实现智能化、批量化、流程化。课程以实际操作为主,项目应用。具体课程内容查看课程目录5 ArcGIS之Data Reviewer空间数据质量检查实战视频教程(GIS思维)课程采用ArcGIS10.6录制,介绍ArcGIS空间质量检查。复习了传统的拓扑、属性域、子类。介绍了DataReviewer模块的全流程应用,配合实际案例学习各检验规则,再配合三调案例深入学习6ArcPy结合数据驱动模块的批量制图(GIS思维) 课程介绍ArcGIS数据驱动页面的批量出图功能。前部分无编程操作快速上手arcgis的批量出图功能,引入小工具实现pdf的批量转换维jpg,jpg的批量自动改名等。 后半部分介绍ArcPy(ArcGIS Python)的基础知识,介绍ArcPy的制图编程的四大组件等,配合ArcPY与数据驱动模块实现不同需求的动态出图。 课程提供、源代码、课件、数据等。,主要包括课程内容:ArcGIS10.X入门实战视频教程(GIS思维),ArcGIS之遥感影像分类及成果应用视频课程(GIS思维),ArcGIS与CASS在地籍建库中的结合应用,ArcGIS之模型构建器(ModelBuilder)视频教程(GIS思维),ArcGIS之Data Reviewer空间数据质量检查(GIS思维),ArcPy结合数据驱动模块的批量制图(GIS思维)https://edu.csdn.net/combo/detail/2070https://edu.csdn.net/lecturer/1202?spm=1002.2001.3001.4144icon-default.png?t=M276https://edu.csdn.net/lecturer/1202?spm=1002.2001.3001.4144

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GIS思维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值