AnsweredAssumed Answered

Composing raster functions with parameters for the input raster(s)

Question asked by david_johnson-esristaff Employee on Apr 12, 2017
Latest reply on Apr 12, 2017 by david_johnson-esristaff

I'm trying to figure out how to wrap a raster function chain into a python function that has parameters for the input raster(s) of the function chain.  I also need to display the output in the map widget.  


My eventual goal is to create wrappers for  function chains which have multiple input branches. But for now, here is a very simple example I have tried which requires only one input raster parameter.  


 # code for context.




<ImageryLayer url:"">


# python wrapper function

def slope_template(in_ras):



      "rasterFunction" : "Slope",

      "rasterFunctionArguments" : {

         "DEM" : in_ras



# Add the output of the function to the map widget


Running this code produces the following error.  

---------------------------------------------------------------------------TypeError                                 Traceback (most recent call last)<ipython-input-26-4095d219143b> in <module>()----> 1 map1.add_layer(slope_template(dem_item.layers[0])) C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\arcgis\widgets\ in add_layer(self, item, options)    142     143             self._addlayer = json.dumps(js_layer)--> 144         elif 'layers' in item:  # items as well as services    145             if item.layers is None:     146                 raise RuntimeError('No layers accessible/available in this item or service') TypeError: argument of type 'NoneType' is not iterable