From f1e31cb721886d94c855a1809ac74fa835113409 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Tue, 18 Aug 2026 12:54:35 +0300 Subject: [PATCH] refactor(tactical): remove ridge lines to keep map uncluttered and focused strictly on wadi flows --- apps/web/src/utils/elevationService.ts | 80 -------------------------- 1 file changed, 80 deletions(-) diff --git a/apps/web/src/utils/elevationService.ts b/apps/web/src/utils/elevationService.ts index 3f7f4c7..2406e5d 100644 --- a/apps/web/src/utils/elevationService.ts +++ b/apps/web/src/utils/elevationService.ts @@ -1131,87 +1131,7 @@ export async function calculateTerrainStudy( } } - // 7. Trace Natural Ridge Watershed Divides (Dominant High Crests) - // Crest cells: high elevation, local peak curvature, divergent flow (low flow accumulation) - const ridgeCandidates: Array<{ r: number; c: number; elev: number; tpi: number }> = []; - for (let r = 1; r < gridSize - 1; r++) { - for (let c = 1; c < gridSize - 1; c++) { - const el = elevationGrid[r][c]; - if (el >= minElev + relief * 0.45 && flowAcc[r][c] <= 2) { - // Compute 3x3 local mean - let sum = 0; - let count = 0; - for (let dr = -1; dr <= 1; dr++) { - for (let dc = -1; dc <= 1; dc++) { - sum += elevationGrid[r + dr][c + dc]; - count++; - } - } - const localMean = sum / count; - const tpi = el - localMean; - if (tpi >= 1.5) { - ridgeCandidates.push({ r, c, elev: el, tpi }); - } - } - } - } - // Group connected ridge candidates into crest lines - const visitedRidge = Array(gridSize).fill(false).map(() => Array(gridSize).fill(false)); - for (const rc of ridgeCandidates) { - if (visitedRidge[rc.r][rc.c]) continue; - const ridgeLine: [number, number][] = []; - let currR = rc.r; - let currC = rc.c; - - while (currR >= 0 && currR < gridSize && currC >= 0 && currC < gridSize) { - visitedRidge[currR][currC] = true; - const pt = gridCoords[currR * gridSize + currC]; - const distFromCenter = calculateDistance(centerLat, centerLng, pt.lat, pt.lng); - if (distFromCenter <= radiusMeters * 1.05) { - ridgeLine.push([pt.lng, pt.lat]); - } - - // Find best unvisited ridge neighbor - let bestNext: { r: number; c: number } | null = null; - let highestNeighborElev = -9999; - for (let dr = -1; dr <= 1; dr++) { - for (let dc = -1; dc <= 1; dc++) { - if (dr === 0 && dc === 0) continue; - const nr = currR + dr; - const nc = currC + dc; - if (nr >= 0 && nr < gridSize && nc >= 0 && nc < gridSize && !visitedRidge[nr][nc]) { - const isCand = ridgeCandidates.some(c => c.r === nr && c.c === nc); - if (isCand && elevationGrid[nr][nc] > highestNeighborElev) { - highestNeighborElev = elevationGrid[nr][nc]; - bestNext = { r: nr, c: nc }; - } - } - } - } - - if (!bestNext) break; - currR = bestNext.r; - currC = bestNext.c; - } - - if (ridgeLine.length >= 3) { - spatialFeatures.push({ - type: 'Feature', - properties: { - layerType: 'ridge', - category: 'key-terrain', - title: `⛰️ سلسلة تلال وقمم حاكمة (خط تقسيم مياه)`, - color: '#d97706', - width: 2.5 - }, - geometry: { - type: 'LineString', - coordinates: ridgeLine - } - }); - } - } // 8. Regional Sector Intelligence Context let sectorName = 'قطاع عمليات ميداني';