fix: re-georeference flood zones and make them clearly visible
CI/CD Pipeline - Northern Thailand Ping River Monitor / Test Suite (3.11) (push) Failing after 24s
CI/CD Pipeline - Northern Thailand Ping River Monitor / Build Docker Image (push) Skipped
CI/CD Pipeline - Northern Thailand Ping River Monitor / Integration Test with Services (push) Skipped
CI/CD Pipeline - Northern Thailand Ping River Monitor / Deploy to Staging (push) Skipped
CI/CD Pipeline - Northern Thailand Ping River Monitor / Deploy to Production (push) Skipped
CI/CD Pipeline - Northern Thailand Ping River Monitor / Performance Test (push) Skipped
CI/CD Pipeline - Northern Thailand Ping River Monitor / Code Quality (push) Successful in 15s
CI/CD Pipeline - Northern Thailand Ping River Monitor / Cleanup (push) Successful in 1s

The previous affine fit slid along the mostly north-south river (an
ill-conditioned direction) leaving the zones ~1 km south-west of their
true position. New approach: extract the scanned river band by color,
match it to the OSM Ping mainstem centerline by arc length (which pins
the along-river position), then correct residual translation using
known district locations cross-checked against the river residual
(533 m -> ~300 m median; Chang Khlan zone centroid now within 200 m).
Mountain-area artifacts are clipped away via the municipality hull.

Zones were also nearly invisible at fillOpacity 0.16 - base opacity is
now 0.38, rising with the live 24 h exceedance probability, and 0.72
with a solid red border once the river is at or above a zone's level.
This commit is contained in:
2026-08-10 16:38:09 +07:00
parent f05289e628
commit c4e0fb6bae
2 changed files with 3 additions and 3 deletions
+2 -2
View File
@@ -624,10 +624,10 @@
const flooded = state.p1Now != null && state.p1Now >= level; const flooded = state.p1Now != null && state.p1Now >= level;
return { return {
color: flooded ? '#7a1512' : '#8a5a2b', color: flooded ? '#7a1512' : '#8a5a2b',
weight: flooded ? 2.5 : 1, weight: flooded ? 2.5 : 1.2,
dashArray: flooded ? null : '4 4', dashArray: flooded ? null : '4 4',
fillColor: ZONE_COLORS[zone] || '#f9e3a1', fillColor: ZONE_COLORS[zone] || '#f9e3a1',
fillOpacity: flooded ? .55 : .16 + .38 * Math.min(1, p), fillOpacity: flooded ? .72 : .38 + .3 * Math.min(1, p),
}; };
} }
File diff suppressed because one or more lines are too long