I would like to add a sigmoidal function to create a factor map In ArcMap. The function has to decrease with an increase in values.

For example: The suitability should be 1 for a distance of 250m and then it should decrease as a cosine function until 1250m.

250m has highest suitability value 1 and it decreases to 0 for distances more than 1250m

Could someone explain how to do this using raster calculator?

1 Answer 1


From sigmoidal curve family I prefer to use the Logistic Function, which is able to describe quite well the natural probability decreasing.

y = L / 1 + e^k(x-f)

You need to decrease the probability from 1 to 0 between 250 and 1250 meters of distance, so the interval is 1000 m and the midpoint at 500 m.

First you have to compute the Euclidean Distance, which creates a raster file with the distance values from your area of interest. Then you need to use the Raster Calculator with conditional statement: from 0 to 250 set 1, from 250 to 1250 compute the Logistic Function, beyond 1250 set 0.

The Logistic Function has these parameters:

  • L = 1 (the maximum probability value)
  • f = 500 (midpoint distance)
  • k = 0.01 (curve steepness)

If your distance raster is "EucDist", the Raster Calculator expression is:

Con("EucDist"<=250, 1, Con(("EucDist">250) & ("EucDist"<1250), (1/(1+Exp(0.01*(500-(1250-"EucDist"))))), 0))
  • Tons of thanks for detailed explanation :)It worked for me.I need another help now. Is it possible to create this shape with 4 points? Like 250 m = 0.999, 1375 m= 0.5, 3000 m=0.1 and 5000 =0.01.
    – Maya
    Mar 14, 2018 at 11:30
  • You need to create an equation from given points. Using this quick&dirty website to find the fitting curve with 4 points, the resulting symmetrical sigmoidal equation is -0.02351947 + (1.004916 - -0.02351947)/(1 + (x/1395.793)^2.625316). The equation has to be used in the Raster Calculator expression substituting x with EucDist in the proper distance interval.
    – Nonpenso
    Mar 15, 2018 at 8:46
  • Thanks:) I also got an equation like that from akapps.wordpress.com/2011/08/27/simple-s-curve ANd i applied it in ratser calculator as this:Con("%Kommuneu%" < 250,0,Con("%Kommuneu%" > 5000,0.01,(0.999 / (1 + Power(81,1700 + 2000 / 2 - "%Kommuneu%") / 2000)))). I am new with ArcMap and your replies helped me a lot to figure out so much of things. Thanks again
    – Maya
    Mar 16, 2018 at 9:04
  • I don't get your expression, in particular why 0.999 as numerator and these other values 81,1700,2000. Don't forget to close the question if it has been answered. Thanks.
    – Nonpenso
    Mar 16, 2018 at 13:57
  • Hej, Thanks for the link to the curve fitting website.
    – Maya
    Jun 1, 2018 at 12:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.