mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-05 19:04:02 +00:00
fix(fires): report a 00:45 UTC detection as 00:45, not "45"
get_active_fires joined FIRMS acq_date and the unpadded acq_time, so a detection at 00:45 UTC came back as "2026-01-01 45". The row now uses acquisitionMsUtc, which pads the time, and reports an ISO UTC timestamp like the other tool times.
This commit is contained in:
1 parent
ac8dc84f3c
commit
57df5f61ba
4 files changed
+24
-3
No files matched your search
@@ -0,0 +1,4 @@
|
|||||||
|
- Report a fire detection's acquisition time as a UTC timestamp in
|
||||||
|
`get_active_fires`. The tool joined FIRMS's unpadded date and time, so a
|
||||||
|
00:45 UTC detection read "2026-01-01 45"; it now reads
|
||||||
|
`2026-01-01T00:45:00.000Z` (Rudy Celekli, @rudycelekli, #1395).
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
/** Natural hazard queries: earthquakes and active fires. */
|
/** Natural hazard queries: earthquakes and active fires. */
|
||||||
|
|
||||||
|
import { acquisitionMsUtc } from '../../data/firmsCsv.js';
|
||||||
import { suggestView } from '../views.js';
|
import { suggestView } from '../views.js';
|
||||||
import { defineTool, ToolError } from '../catalog.js';
|
import { defineTool, ToolError } from '../catalog.js';
|
||||||
import { AREA_SCHEMA, areaContains, resolveArea } from '../area.js';
|
import { AREA_SCHEMA, areaContains, resolveArea } from '../area.js';
|
||||||
@@ -114,8 +115,7 @@ export const getActiveFires = defineTool({
|
|||||||
lon: fire.lon,
|
lon: fire.lon,
|
||||||
frp_mw: fire.frp ?? null,
|
frp_mw: fire.frp ?? null,
|
||||||
confidence: fire.confidence ?? null,
|
confidence: fire.confidence ?? null,
|
||||||
acquired:
|
acquired: isoTime(acquisitionMsUtc(fire.acqDate, fire.acqTime)),
|
||||||
[fire.acqDate, fire.acqTime].filter(Boolean).join(' ') || null,
|
|
||||||
satellite: fire.satellite ?? null,
|
satellite: fire.satellite ?? null,
|
||||||
day_night: fire.daynight ?? null,
|
day_night: fire.daynight ?? null,
|
||||||
})),
|
})),
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
import assert from 'node:assert/strict';
|
||||||
|
import test from 'node:test';
|
||||||
|
import { composeCatalog } from '../catalog.js';
|
||||||
|
import { getActiveFires } from './hazards.js';
|
||||||
|
|
||||||
|
const catalogWith = (fires) =>
|
||||||
|
composeCatalog({
|
||||||
|
tools: [getActiveFires],
|
||||||
|
services: { fires: { getSnapshot: async () => ({ fires }) } },
|
||||||
|
});
|
||||||
|
|
||||||
|
test('a fire acquired at 00:45 UTC reads as 00:45, not "45"', async () => {
|
||||||
|
const result = await catalogWith([
|
||||||
|
{ lat: 24, lon: 121, frp: 5, acqDate: '2026-01-01', acqTime: '45' },
|
||||||
|
]).call('get_active_fires', { area: { bbox: [120, 23, 122, 25] } });
|
||||||
|
assert.equal(result.data.rows[0].acquired, '2026-01-01T00:45:00.000Z');
|
||||||
|
});
|
||||||
@@ -125,7 +125,7 @@ test('fires need an area and report a missing key as unavailable', async () => {
|
|||||||
result.data.rows.map((row) => row.frp_mw),
|
result.data.rows.map((row) => row.frp_mw),
|
||||||
[40, 12],
|
[40, 12],
|
||||||
);
|
);
|
||||||
assert.equal(result.data.rows[1].acquired, '2026-01-01 0130');
|
assert.equal(result.data.rows[1].acquired, '2026-01-01T01:30:00.000Z');
|
||||||
|
|
||||||
const keyless = composeCatalog({
|
const keyless = composeCatalog({
|
||||||
tools: coreTools,
|
tools: coreTools,
|
||||||
|
|||||||
Reference in new issue
Block a user