This project is a comprehensive real-time and historical wildfire monitoring application. It leverages NASA’s FIRMS satellite data to display current wildfire hotspots on an interactive map and historical events plotted from raw data stored in DynamoDB.
aggregated_series
./prod/raw
API endpoint.import requests
import csv
import boto3
from decimal import Decimal
from io import StringIO
dynamodb = boto3.resource('dynamodb', region_name='us-east-2')
table = dynamodb.Table('WildfireData')
url = 'https://firms.modaps.eosdis.nasa.gov/...csv'
response = requests.get(url)
csv_file = StringIO(response.text)
reader = csv.DictReader(csv_file)
for record in reader:
item = {
'RecordID': f"{record['acq_date']}_{record['acq_time']}",
'latitude': Decimal(record['latitude']),
'longitude': Decimal(record['longitude']),
'brightness': Decimal(record['brightness']),
'confidence': Decimal(record['confidence']),
'acq_date': record['acq_date'],
'acq_time': record['acq_time']
}
table.put_item(Item=item)
// Fetch raw historical data and plot on Leaflet
async function updateHistoricalMapRaw(start, end) {
const response = await fetch(
`/prod/raw?start_time=${start}&end_time=${end}`
);
const data = await response.json();
rawData.forEach(r => {
L.marker([+r.latitude, +r.longitude]).addTo(historicalMap)
.bindPopup(`Brightness: ${r.brightness} Confidence: ${r.confidence}`);
});
}
map.html
on GitHub Pages.