Tutorials / How to Compute Fire Footprint Area
Most of FIRMS fire detection data is provided as a single point (latitude, longitude). For some applications, it is beneficial to have the corresponding rectangle detection area. To compute see the formula below:
Fire Footprint Area Formula
# latitude and longitude values are in decimal degrees
coef = 0.375 # VIIRS
if ( sensor == 'MODIS' ) coef = 1.0
else if ( sensor == 'LANDSAT' ) coef = 0.03
if ( absolute_value ( latitude ) <= 89.99 )
dx = coef / ( cos ( latitude ) * 111.32 ) / 2.0 # if cos() using degrees
# OR
dx = coef / ( cos ( latitude * PI / 180) * 111.32 ) / 2.0 # if cos() using radians
else
dx = 180
dy = ( coef / 111.32 ) / 2.0
north_west = ( latitude + dy ), ( longitude - dx )
north_east = ( latitude + dy ), ( longitude + dx )
south_east = ( latitude - dy ), ( longitude + dx )
south_west = ( latitude - dy ), ( longitude - dx )
coef = 0.375 # VIIRS
if ( sensor == 'MODIS' ) coef = 1.0
else if ( sensor == 'LANDSAT' ) coef = 0.03
if ( absolute_value ( latitude ) <= 89.99 )
dx = coef / ( cos ( latitude ) * 111.32 ) / 2.0 # if cos() using degrees
# OR
dx = coef / ( cos ( latitude * PI / 180) * 111.32 ) / 2.0 # if cos() using radians
else
dx = 180
dy = ( coef / 111.32 ) / 2.0
north_west = ( latitude + dy ), ( longitude - dx )
north_east = ( latitude + dy ), ( longitude + dx )
south_east = ( latitude - dy ), ( longitude + dx )
south_west = ( latitude - dy ), ( longitude - dx )
- Why is there a value of 111.32? It is computed from Earth's circumference of 40,075 km / 360 degrees; so 1 degree ~ 111.32 km
- To prevent division by zero, dx is set to 180 when latitude is higher than absolute(89.99); if by some odd chance there was a fire detection at the pole.
Javascript Example
function compute_area ( latitude, longitude, sensor ) {
let coef = 0.375;
if ( sensor == 'MODIS' ) { coef = 1.0; }
else if ( sensor == 'LANDSAT' ) { coef = 0.03; }
let dx = ( Math.abs ( latitude ) <= 89.99 ) ?
( coef / (Math.cos ( latitude * Math.PI / 180 ) * 111.32 ) / 2.0) : 180;
let dy = ( coef / 111.32 ) / 2.0;
let obj = {};
obj.nw = [ ( latitude + dy ), ( longitude - dx ) ];
obj.ne = [ ( latitude + dy ), ( longitude + dx ) ];
obj.se = [ ( latitude - dy ), ( longitude + dx ) ];
obj.sw = [ ( latitude - dy ), ( longitude - dx ) ];
// console.log(obj);
return obj;
}
Test Your Values
Latitude | |
Longitude | |
Sensor | |
Test your values
Error in processing:
Rectange Area: