# Index‐Based Built‐up Index (IBI) no in the specified range

I'm trying to calculate Index‐Based Built‐up Index (IBI). This index has been mentioned in A new index for delineating built‐up land features in satellite imagery. As mentioned in the paper, the range of IBI is from -1 to 1 (page 4271 of the paper).

But in my case, the range is from -195.371 to 473.1621.

The formula for IBI is,

For IBI value 473.1621, the inputs values are NDBI = 0.185422, SAVI = 0.074422, MNDWI = -0.4437.

In my understanding, we have to add SAVI and MNDWI first then divide the result by 2. Then use that result with the respective sign in the numerator and the denominator with NDBI.

The syntax I'm using in Google Earth Engine for this is,

``````var ibi = ndbi.subtract((savi.add(mndwi)).divide(2)).divide(ndbi.add((savi.add(mndwi)).divide(2))).rename('ibi');
``````

Is it wrong? I am not able to understand what is the problem here.

That formula, with the inputs you specified results in a value of 0.850, not 473.

But to avoid this sort of mess, you should use image.expression:

``````var ibi = ee.Image().expression("ibi = (ndbi - ((savi + mndwi)/2)) / (ndbi + ((savi + mndwi)/2))", {
ndbi: ee.Image(0.185422),
savi: ee.Image(0.074422),
mndwi: ee.Image(-0.04437)
})
``````

• Sorry, I had mistakenly written the wrong value for `mndwi`. In this `mndwi` is -0.4437. With this value, both the methods show the same answers, 472.619. I have changed the value in the question. Oct 11, 2021 at 4:07