math.sqrt(2*2*2)
import arcview,arcpy,math from arcpy.sa import * def erf(x): ''' Error function modified for rasters from the pure python implementation posted on StackExchange [1] of the algorithm from the Handbook of Mathematical Functions [2] [1] http://stackoverflow.com/a/457805/737471 [2] http://people.math.sfu.ca/~cbm/aands/frameindex.htm ''' # save the sign of x #sign = 1 if x >= 0 else -1 # This doesn't work with a Raster object # ValueError: The truth value of a raster is ambiguous. # Invalid use of raster with Boolean operator or function. sign = (x>=0) + ((x<0)*-1) x = Abs(x) # constants a1 = 0.254829592 a2 = -0.284496736 a3 = 1.421413741 a4 = -1.453152027 a5 = 1.061405429 p = 0.3275911 # A&S formula 7.1.26 t = 1.0/(1.0 + p*x) y = 1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*Exp(-x*x) return sign*y if __name__=='__main__': input_raster='path/to/input/raster' output_raster='path/to/output/raster' arcpy.CheckOutExtension('spatial') inras=Raster(input_raster) outras = 0.5*(1+erf((inras)/math.sqrt(2*2*2))) outras.save(output_raster)
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.