首页 > 编程知识 正文

ArcPy 实现ArcGIS的栅格计算器的二项式运算,arcgis栅格计算器计算rmse

时间:2023-05-04 19:03:05 阅读:195749 作者:812

简单来说,我没找到直接能用代码调用ArcGIS栅格计算器的方法。
要实现一个二项式的计算,需要一步一步用 ArcToolBox 里 math 里提供的函数进行。

例如:
要对栅格像元进行:
R e s u l t = − 0.0005 ∗ D N 2 + 1.1469 ∗ D N + 2.0217 Result = -0.0005*DN^2+1.1469*DN+2.0217 Result=−0.0005∗DN2+1.1469∗DN+2.0217

这个可以分成4步计算

第一步: 计算DN*DN 用到 Times 这个函数,保存计算结果为A

第二步 :计算-0.0005 *DN^2 同样用到 Times这个函数,
Times(A,-0.0005) 保存计算结果为B

第三步:计算 一次项 1.1469*DN 同样 Times 结果为C

第四步:加和 A+B+C+2.0217

代码如下:

import arcpy,os,globfrom arcpy import envfrom arcpy.sa import *arcpy.CheckOutExtension("spatial")env.overwriteOutput=1arcpy.env.workspace = "E:/test/inputs/" # 设置工作空间inputs = arcpy.ListRasters("*","tif") #遍历栅格图像for i in inputs: print i name = i[0:7].encode('ascii') #取文件名前7个字符 ercifangname = 'E:/test/outputs/ercifang/'+name+'_ercifang'+'.tif' ercifang = Times(i,i) ercifang.save(ercifangname) canshu1 = Times(ercifangname,-0.0005) canshu1name = 'E:/test/outputs/canshu1/'+name+'_canshu1'+'.tif' canshu1.save(canshu1name) canshu2 = Times(i,1.1469) canshu2name = 'E:/test/outputs/canshu2/'+name+'_canshu1'+'.tif' canshu2.save(canshu2name) canshu3 = canshu1+canshu2+2.0217 canshu3name = 'E:/test/outputs/canshu3/'+name+'_canshu1'+'.tif' canshu3.save(canshu3name) outint = Int(canshu3name) # 将栅格浮点数转为整形,这样才有属性表以及可以转换成矢量面,方便后续计算。 用到 Int()这个函数 outintname = 'E:/test/outputs/outint/'+name+'_outint'+'.tif' outint.save(outintname)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。