focus: recentrer l'app sur l'archipel guadeloupéen uniquement
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -16,13 +16,11 @@ use Symfony\Component\Console\Style\SymfonyStyle;
|
|||||||
)]
|
)]
|
||||||
class IngestSentinelCommand extends Command
|
class IngestSentinelCommand extends Command
|
||||||
{
|
{
|
||||||
// Zones d'intérêt Antilles : [minLon, minLat, maxLon, maxLat]
|
// Zone d'intérêt : archipel guadeloupéen uniquement.
|
||||||
|
// Bbox : couvre Les Saintes, La Désirade, Grande-Terre, Basse-Terre,
|
||||||
|
// Marie-Galante + ~350 km d'océan à l'est pour détecter les sargasses en approche.
|
||||||
private const ZONES = [
|
private const ZONES = [
|
||||||
'martinique' => [-61.30, 14.30, -60.70, 14.90],
|
'guadeloupe' => [-62.50, 15.70, -58.50, 17.00],
|
||||||
'guadeloupe' => [-61.90, 15.80, -61.00, 16.60],
|
|
||||||
'sainte-lucie' => [-61.10, 13.70, -60.80, 14.20],
|
|
||||||
'barbade' => [-59.80, 13.00, -59.30, 13.40],
|
|
||||||
'saint-martin' => [-63.20, 17.80, -62.90, 18.20],
|
|
||||||
];
|
];
|
||||||
|
|
||||||
public function __construct(private IngestionService $ingestionService)
|
public function __construct(private IngestionService $ingestionService)
|
||||||
|
|||||||
@@ -29,7 +29,8 @@ class SpotScoreController extends AbstractController
|
|||||||
*
|
*
|
||||||
* Cache HTTP 30 min (scores mis à jour au max 1-2×/jour par ingestion).
|
* Cache HTTP 30 min (scores mis à jour au max 1-2×/jour par ingestion).
|
||||||
*/
|
*/
|
||||||
#[Route('/overview', name: 'overview', methods: ['GET'])]
|
// priority: 10 — empêche API Platform GET /api/spots/{id} de capturer /overview
|
||||||
|
#[Route('/overview', name: 'overview', methods: ['GET'], priority: 10)]
|
||||||
public function overview(): JsonResponse
|
public function overview(): JsonResponse
|
||||||
{
|
{
|
||||||
$rows = $this->connection->fetchAllAssociative(
|
$rows = $this->connection->fetchAllAssociative(
|
||||||
@@ -51,6 +52,7 @@ class SpotScoreController extends AbstractController
|
|||||||
ORDER BY timestamp DESC
|
ORDER BY timestamp DESC
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
) ist ON true
|
) ist ON true
|
||||||
|
WHERE cp.region = 'Guadeloupe'
|
||||||
ORDER BY cp.name"
|
ORDER BY cp.name"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -22,13 +22,11 @@ use Symfony\Component\Process\Process;
|
|||||||
#[AsMessageHandler]
|
#[AsMessageHandler]
|
||||||
final class IngestionScheduleHandler
|
final class IngestionScheduleHandler
|
||||||
{
|
{
|
||||||
// Zones d'intérêt — même liste que IngestSentinelCommand
|
// Zone d'ingestion : archipel guadeloupéen (Grande-Terre, Basse-Terre,
|
||||||
|
// Marie-Galante, Les Saintes, La Désirade) + ~350 km d'océan à l'est
|
||||||
|
// pour détecter les sargasses en approche bien avant qu'elles touchent terre.
|
||||||
private const ZONES = [
|
private const ZONES = [
|
||||||
'martinique' => [-61.30, 14.30, -60.70, 14.90],
|
'guadeloupe' => [-62.50, 15.70, -58.50, 17.00],
|
||||||
'guadeloupe' => [-61.90, 15.80, -61.00, 16.60],
|
|
||||||
'sainte-lucie' => [-61.10, 13.70, -60.80, 14.20],
|
|
||||||
'barbade' => [-59.80, 13.00, -59.30, 13.40],
|
|
||||||
'saint-martin' => [-63.20, 17.80, -62.90, 18.20],
|
|
||||||
];
|
];
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
|
|||||||
BIN
docs/screen.png
BIN
docs/screen.png
Binary file not shown.
|
Before Width: | Height: | Size: 134 KiB |
BIN
docs/screen2.png
BIN
docs/screen2.png
Binary file not shown.
|
Before Width: | Height: | Size: 130 KiB |
BIN
docs/screenSargasses.png
Normal file
BIN
docs/screenSargasses.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 966 KiB |
@@ -4,7 +4,10 @@ import 'maplibre-gl/dist/maplibre-gl.css';
|
|||||||
import { api } from '../../api/client';
|
import { api } from '../../api/client';
|
||||||
import './SargassesMap.css';
|
import './SargassesMap.css';
|
||||||
|
|
||||||
const INITIAL_VIEW = { longitude: -61.55, latitude: 16.25, zoom: 9 };
|
// Vue initiale : archipel guadeloupéen (Les Saintes → La Désirade → Basse-Terre)
|
||||||
|
const INITIAL_VIEW = { longitude: -61.35, latitude: 16.2, zoom: 9 };
|
||||||
|
// Limites souples : ~350 km à l'est pour voir les trajectoires approchantes
|
||||||
|
const MAX_BOUNDS = [[-63.5, 13.0], [-57.5, 18.5]];
|
||||||
const FALLBACK_STYLE = 'https://basemaps.cartocdn.com/gl/positron-gl-style/style.json';
|
const FALLBACK_STYLE = 'https://basemaps.cartocdn.com/gl/positron-gl-style/style.json';
|
||||||
|
|
||||||
// ── Cartoon style transformer ──────────────────────────────────────────────
|
// ── Cartoon style transformer ──────────────────────────────────────────────
|
||||||
@@ -267,6 +270,7 @@ export default function SargassesMap({ onSpotSelect, selectedSpotId, activeStep,
|
|||||||
onMove={e => setViewState(e.viewState)}
|
onMove={e => setViewState(e.viewState)}
|
||||||
onClick={() => onSpotSelect(null)}
|
onClick={() => onSpotSelect(null)}
|
||||||
mapStyle={mapStyle}
|
mapStyle={mapStyle}
|
||||||
|
maxBounds={MAX_BOUNDS}
|
||||||
style={{ width: '100%', height: '100vh' }}
|
style={{ width: '100%', height: '100vh' }}
|
||||||
>
|
>
|
||||||
<NavigationControl position="bottom-right" />
|
<NavigationControl position="bottom-right" />
|
||||||
|
|||||||
Reference in New Issue
Block a user