TypeError: unsupported operand type(s) for *: 'float' and 'geoprocessing Layer object

المشرف العام

Administrator
طاقم الإدارة
I am getting a rather unclear type error, and after searching online I cannot find any solutions that help. I am trying to create my own python toolbox for wifi router signal loss, and I am trying to create a raster based on a few inputs that will populate from an equation. The error that I am getting lies on line 107, which is the equation line

fspl= (4 * math.pi * distmod * dist_float * hertz)/(2.99792458 * (10**8))output_rast = fsplI cannot figure out what is causing this error, initially it did not like me trying to use a raster instead of a float, so I changed the distance raster into a float, and now it does not seem to like the float being part of the equation. Here is the rest of my code incase the error stems from an earlier mistake. I cannot find anything that relates to my specific error, and I have not been able to find any way to to work around this issue. Any suggestions?

import arcpyimport mathclass Toolbox(object): def __init__(self): """Define the toolbox (the name of the toolbox is the name of the .pyt file).""" self.label = "Toolbox Label Property" self.alias = "Toolbox Alias Property" # List of tool classes associated with this toolbox self.tools = [FSPL, WAP_Buffer]class FSPL(object): def __init__(self): """Define the tool (tool name is the name of the class).""" self.label = "Free Space Path Loss" self.description = "This python script tool will create Free Space Path Loss to determine the dB range output from the WAPs." self.canRunInBackground = Falsedef getParameterInfo(self): """Define parameter definitions""" param0 = arcpy.Parameter( displayName="Wireless Access Points", name="wireless_pts", datatype="GPFeatureLayer", parameterType="Required", direction="Input") param1 = arcpy.Parameter( displayName="Network Frequency Type", name="network_freq", datatype="String", parameterType="Required", direction="Input") param1.filter.type="ValueList" param1.filter.list = ["2.4 GHz", "5 GHz"] param2 = arcpy.Parameter( displayName="Distance Raster Float", name="dist_float", datatype="GPLayer", parameterType="Required", direction="Input") param3 = arcpy.Parameter( displayName="Distance Raster Units", name="units", datatype="String", parameterType="Required", direction="Input") param3.filter.type="ValueList" param3.filter.list = ["Feet", "Meters"] param4 = arcpy.Parameter( displayName="Output Raster", name="output_rast", datatype="GPRasterLayer", parameterType="Required", direction="Output") return [param0, param1, param2, param3, param4]def isLicensed(self): """Set whether tool is licensed to execute.""" return Truedef updateParameters(self, parameters): """Modify the values and properties of parameters before internal validation is performed. This method is called whenever a parameter has been changed.""" returndef updateMessages(self, parameters): """Modify the messages created by internal validation for each tool parameter. This method is called after internal validation.""" returndef execute(self, parameters, messages): """The source code of the tool.""" #Get inputs wireless_pts = parameters[0].value network_freq = parameters[1].value dist_float = parameters[2].value units = parameters[3].value output_rast = parameters[4].value #Create expression if network_freq == "2.4 GHz": hertz=2400000000 else: hertz=5000000000 if units == "Feet": distmod=0.3048 else: distmod=1 #equation fspl= (4 * math.pi * distmod * dist_float * hertz)/(2.99792458 * (10**8)) output_rast = fspl return

أكثر...
 
أعلى