mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-05 19:04:02 +00:00
fix(recent-imagery): reject absent box edges instead of inventing zero degrees
This commit is contained in:
1 parent
0265ad4c19
commit
c5ac24b600
4 files changed
+33
-6
No files matched your search
@@ -32,6 +32,7 @@
|
|||||||
- Tool string length validation counts Unicode characters correctly, including characters outside the basic multilingual plane.
|
- Tool string length validation counts Unicode characters correctly, including characters outside the basic multilingual plane.
|
||||||
|
|
||||||
- Director timeline seeks cross the dateline along the short longitude arc.
|
- Director timeline seeks cross the dateline along the short longitude arc.
|
||||||
|
- Recent Imagery refuses missing bounding-box edges instead of interpreting them as zero coordinates.
|
||||||
|
|
||||||
- Treat explicitly current, complete empty vessel coverage as a successful update,
|
- Treat explicitly current, complete empty vessel coverage as a successful update,
|
||||||
clearing obsolete contacts while retaining stale or incomplete snapshots.
|
clearing obsolete contacts while retaining stale or incomplete snapshots.
|
||||||
|
|||||||
@@ -5326,3 +5326,8 @@ datacenters, dams and the Nepal locator retain that shared credit while displaye
|
|||||||
|
|
||||||
Military fragments stitch by source identity. Different mapped parcels merge only
|
Military fragments stitch by source identity. Different mapped parcels merge only
|
||||||
when their footprints touch or contain one another, never across a seam tolerance gap.
|
when their footprints touch or contain one another, never across a seam tolerance gap.
|
||||||
|
|
||||||
|
|
||||||
|
### fix(recent-imagery): reject absent box edges instead of inventing zero degrees
|
||||||
|
|
||||||
|
Reject absent, blank and boolean edges before numeric conversion while retaining valid finite numbers and numeric strings. Invalid boxes remain explicit invalid results instead of false geometry.
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
import test from 'node:test';
|
||||||
|
import assert from 'node:assert/strict';
|
||||||
|
import { validateBox, boxCentre } from './model.js';
|
||||||
|
test('missing imagery edges do not turn into invented zero coordinates', () => {
|
||||||
|
for (const value of [null, undefined, '', ' ', false, true]) {
|
||||||
|
const box = { west: value, south: 0, east: 1, north: 1 };
|
||||||
|
assert.equal(validateBox(box).ok, false);
|
||||||
|
assert.equal(validateBox(box).reason, 'invalid');
|
||||||
|
assert.equal(boxCentre(box), null);
|
||||||
|
}
|
||||||
|
assert.equal(validateBox({ west: 0, south: 0, east: 1, north: 1 }).ok, true);
|
||||||
|
assert.equal(
|
||||||
|
validateBox({ west: '0', south: '0', east: '1', north: '1' }).ok,
|
||||||
|
true,
|
||||||
|
);
|
||||||
|
});
|
||||||
@@ -77,12 +77,17 @@ const pad2 = (value) => String(value).padStart(2, '0');
|
|||||||
*/
|
*/
|
||||||
function normalizeBox(box) {
|
function normalizeBox(box) {
|
||||||
if (!box || typeof box !== 'object') return null;
|
if (!box || typeof box !== 'object') return null;
|
||||||
const [west, south, east, north] = [
|
const edges = [box.west, box.south, box.east, box.north];
|
||||||
box.west,
|
if (
|
||||||
box.south,
|
edges.some(
|
||||||
box.east,
|
(value) =>
|
||||||
box.north,
|
value == null ||
|
||||||
].map(Number);
|
typeof value === 'boolean' ||
|
||||||
|
(typeof value === 'string' && !value.trim()),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return null;
|
||||||
|
const [west, south, east, north] = edges.map(Number);
|
||||||
if (![west, south, east, north].every(Number.isFinite)) return null;
|
if (![west, south, east, north].every(Number.isFinite)) return null;
|
||||||
return {
|
return {
|
||||||
west,
|
west,
|
||||||
|
|||||||
Reference in new issue
Block a user