Commit Graph

15 Commits

Author SHA1 Message Date
alro65 c3b07be67e Fix tamaño boyas cardinal e ISD: usar funciones 3D sz=48
Las cardinales (CARDINAL_N/E/S/W) e ISD (ISOLATED_DANGER) usaban
_ialaBoyCar/_ialaBoyIsd (funciones SVG-port, canvas ~17x35 px) mientras
que las laterales usaban _encBuoyCanvas sz=52. La diferencia de canvas
base causaba que cardinal e ISD se vieran mucho más pequeñas.

Cambio a _encCardinalCanvas/_encIsdCanvas/_encSawCanvas (funciones 3D)
con sz=48 — comparable a las laterales en sz=52. La luz flare se añade
sobre el canvas ya dibujado si la ayuda tiene light_desc.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-30 21:03:49 -04:00
alro65 8cdcfdd3d6 Labels ayudas: quitar sombra y reducir fuente 10px→9px
Elimina el stroke negro (rgba(0,0,0,0.55) width:2) que actuaba como
sombra opaca en los textos de nombre/característica de luz de las
ayudas a la navegación. La sombra cubría símbolos adyacentes (ej. balizas
rojas en Miami). Fuente pasa de 10px 600w a 9px 500w — más pequeña
pero legible. Aplica también al label de enfilaciones sobre las líneas.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-30 21:01:27 -04:00
alro65 43e51addc7 Restaurar land.geojson Barranquilla digitalizado por el usuario
Revierte al polígono de tierra de BARRANQUILLA digitalizdo en QGIS
(commit 8edb425 v1-base) que fue sobreescrito por error con una
aproximación geométrica burda. El original tiene precisión sub-metro
con coordenadas reales de la costa colombiana.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-30 20:56:03 -04:00
alro65 6be51a7ad6 Fix: marca de tope en boyas Pillar/Barrel/Spar depende del catlam
El bloque PILLAR (boyshp=4) siempre usaba drawTopmarkConeSmall (triángulo)
sin importar el catlam, causando que boyas VERDES (babor, catlam=1) mostraran
un triángulo en vez del cuadrado correcto.

Todas las formas genéricas (Pillar, Barrel, Spar) ahora consultan el catlam:
  catlam 1/3 (PORT, babor)  → drawTopmarkCan  (cuadrado)
  catlam 2/4 (STBD, estribor) → drawTopmarkCone (cono)
  sin catlam (desconocido)  → cono pequeño genérico

Las formas puras Can/Cone ya tenían el topmark correcto; sin cambio.
Afecta principalmente a boyas BOYLAT boyshp=4 (Barranquilla, Miami pilares).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-30 20:55:30 -04:00
alro65 123c983ada BCNLAT: marca de tope separada del cuerpo por hueco visible
Rediseño del símbolo de baliza lateral para reflejar la estructura
real IALA: palo continuo delgado + cuerpo rectangular (parte baja) +
tramo de palo libre visible (hueco) + marca de tope separada arriba.

  Babor  (IALA-B verde): marca de tope = cuadrado.
  Estribor (IALA-B rojo): marca de tope = triángulo apuntando arriba.

La marca de tope es levemente más ancha que el cuerpo.
El hueco entre cuerpo y marca queda ocupado solo por el poste delgado.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-30 20:53:49 -04:00
alro65 750d4ecbd2 Rediseñar símbolos BCNLAT y LIGHTS + land Barranquilla
BCNLAT (_encBeaconCanvas): rectángulo delgado y alto en color IALA.
  Babor  (puerto, verde IALA-B): tope plano = rectángulo puro.
  Estribor (estribor, rojo IALA-B): tope triangular apuntando arriba +
  cuerpo rectangular debajo. Gradiente lateral 3-D. Aplica igual a
  daymarks del ICW Miami y balizas de orilla Colombia.

LIGHTS blanco (_ialaLight): rectángulo cuerpo blanco borde negro,
  estrella de 5 puntas centrada, lagrima estirada purpura a ~20° de
  la vertical saliendo del costado superior del rectángulo (S-52 style).

land.geojson BARRANQUILLA: polígono único trazando la costa desde
  Galerazamba (O) hasta la boca del canal Bocas de Ceniza (E),
  incluyendo ambas riberas del canal y la costa sur hasta el límite
  de la carta. Corrige tierra en 0 features.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-30 20:37:10 -04:00
alro65 00f1eb92d8 fix(daymark): lados paralelos + tamaño menor en enfilacion
- sz 48→34 (símbolo más pequeño en mapa)
- Triángulo interior escalado desde el baricentro → lados
  estrictamente paralelos al exterior (triángulo similar, no
  recortado con offset independiente)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-30 18:35:07 -04:00
alro65 aa1b93c7a8 feat: simplify range-daymark to concentric triangles; preserve land cache
map.js — _encRangeDaymarkCanvas:
  Remove tripod legs, hub ring and mast. Symbol is now two clean
  concentric triangles pointing up: outer WHITE + inner BLACK,
  matching the standard IALA dayboard. Optional light flare at apex
  if the feature has LITCHR. No extra structures.

chart_manager.py — _build_cache:
  Don't overwrite existing land/hazard/zone GeoJSON files with an
  empty result when the .000 has no LNDARE/OBSTRN/ZONBND layer.
  Preserves hand-built or legacy cache data for custom charts
  (e.g. Barranquilla built from nav-aids-only CSV).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-30 16:19:01 -04:00
alro65 296c6c1ace fix: revert BCNLAT to 3D tripod; increase icon scale +30%
- BCNLAT symbol back to tripod+mast+topmark (now works without NaN
  thanks to the _h2r rgb() fix in the previous commit)
- Icon scale range 0.22–0.50 → 0.29–0.65 (~30% larger at all zooms)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-30 16:14:27 -04:00
alro65 acd3330bcd fix: _h2r parses rgb() strings to prevent NaN in canvas gradients
_darken3D / _lighten3D return 'rgb(r,g,b)' CSS strings.
When those values were passed as colList to drawCylinder/drawSphere,
_cylGrad called _lighten3D(col) → _h2r('rgb(...)') → parseInt('rg',16)=NaN,
causing addColorStop to throw and killing ALL pillar/tower/sphere buoy symbols.

Fix: _h2r now detects the 'rgb(' prefix and extracts the three integers
via regex before falling through to the existing hex path.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-30 16:00:14 -04:00
alro65 a64a5eb735 fix(band-zoom): restaura maxZoom originales — US1GC09M ocultaba boyas Miami
El commit anterior removia los maxZoom de BAND_ZOOM_RANGES creyendo que
afectaba a BARRANQUILLA. En realidad BARRANQUILLA es band=0 (cell_id no
matchea el patron IHO) y siempre fue visible.

Sin maxZoom, US1GC09M (Overview, band-1, 549 features del Golfo) aparecia
en zoom 11 sobre Miami. Con declutter=true, sus 549 features competian con
las de US4FL/US5FL y ocultaban casi todo por collision detection.

Fix: restaurar exactamente los valores de v1-base para bands 1-4.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-30 15:42:43 -04:00
alro65 b92a3db523 fix(band-zoom): quita maxZoom cutoffs — Barranquilla (CO1CO01M=band1) desaparecia a zoom>10
La celda CO1CO01M es band-1 por convencion IHO (CO=Colombia, 1=Overview).
Con maxZoom=10 para band-1, la carta desaparecia completamente a zoom>10.

Solucion: todas las bandas tienen maxZoom=24. La logica _recomputeHiddenCells
(que ya maneja solo cuando una celda de mayor resolucion domina el viewport)
se encarga de ocultar las celdas de menor resolucion cuando hay una mejor.
Esto funciona para NOAA Miami (band-1 se oculta cuando band-5 cubre 40%+)
y para Barranquilla (band-0/1, sin rival, siempre visible a cualquier zoom).
2026-04-30 14:10:36 -04:00
alro65 293b0c45ef fix(data): light info (LITCHR/range/height) en boyas y balizas de orilla
frontend/js/map.js:
- Reemplaza merge exacto por merge de proximidad (~50m) en loadChartFeatures
  para capturar pares LIGHTS/BOYLAT con coordenadas no exactamente iguales
- Guard null-canvas en encStyle con fallback visible + console.warn
- Mejora JS de debug: log layer/aidType cuando usa fallback

backend/services/chart_manager.py:
- Expande extraccion de light_desc a category buoy+beacon+landmark
  (antes solo BOYLAT/BOYCAR; BCNLAT/BCNWTW/LNDMRK perdian LITCHR silenciosamente)
2026-04-30 13:55:08 -04:00
alro65 025e5e5213 fix(miami): corrige cartas que desaparecen al cambiar zoom y al toggle de boyas del mapa mundial
- _recomputeHiddenCells: solo considera celdas 'dominantes' que esten
  dentro de su propio rango de zoom. Sin esto, band-5 (Harbour, min=10)
  ocultaba band-4 (Approach) incluso a zoom 9.x donde band-5 es invisible
  -> resultado: ninguna carta mostraba.
- toggle-seamap: despues del toggle llama _recomputeHiddenCells +
  src.changed() en requestAnimationFrame para que el estado de celdas
  ENC se recalcule y nunca quede stale.
- fallback BUOY_GENERIC: reemplaza el circulo 14x14 (vieja simbologia
  minuscula) por _encBuoyCanvas con boyshp=4 (pillar) para que cualquier
  boya sin boyshp explicito igual reciba icono 3D correcto.
2026-04-30 13:50:45 -04:00
alro65 8edb425c24 v1-base: estado funcional al 2026-04-30 — buoys 3D, beacons 3D, enfilaciones, land-clip, buoy light merge 2026-04-30 13:50:01 -04:00