Listen to the article
La Guadeloupe a été rétrogradée, vendredi 10 octobre, en vigilance jaune pour les fortes pluies et les orages, après le passage de la tempête tropicale Jerry qui a provoqué d’importantes précipitations et la mort d’un automobiliste.
Les secours avaient été alertés tôt dans la matinée par l’homme lui-même, pris au piège par la montée des eaux sur la commune du Moule, en Grande-Terre. Il avait précisé ne pas savoir nager. « Nous l’avons retrouvé dans une zone proche de l’endroit qu’il avait indiqué : la voiture a pu être localisée avec la décrue », a précisé à l’Agence France-Presse (AFP) le colonel Guillaume Leroy, du Service départemental d’incendie et de secours (SDIS) de Guadeloupe. Le corps a été retrouvé à l’intérieur du véhicule.
La préfecture, qui a confirmé ce décès, a annoncé la rétrogradation de la vigilance fortes pluies et orages à jaune à 17 h 01 locales (23 h 01 à Paris) alors que Jerry s’éloigne de la Guadeloupe, où le niveau d’alerte avait atteint le rouge avant l’aube. Celles concernant les vents et les vagues-submersion repassent en vert.
La distribution d’électricité revenue « à la normale »
« Le temps se calme et s’assèche progressivement », a noté dans son dernier bulletin Météo-France, qui table sur une fin d’événement à 6 heures locales samedi (12 heures à Paris). Le prévisionniste a relevé jusqu’à 181 mm de cumuls à Saint-François en Grand-Terre, dont 151 mm en trois heures, et 173 au Moule (111 mm en trois heures). Des rafales de vent ont atteint 108 km/h dans l’île de La Désirade (est).
Dans un communiqué publié vers 18 heures, la préfecture a rapporté 62 interventions du SDIS, « essentiellement du secours à personnes », et l’échouement d’un cargo à Gourbeyre, en Basse-Terre, aucune fuite ou pollution n’ayant été détectée. La distribution d’électricité est, elle, revenue « à la normale » sur l’ensemble du territoire, alors que 600 clients étaient privés de courant dans l’après-midi.
Les établissements de santé ne sont pas touchés par une pollution de l’eau, au contraire des communes de Vieux-Habitants et de Pointe-Noire, en Basse-Terre, où le retour à la normale est prévu « au plus tard ce week-end », a ajouté la préfecture. Quatre usines de production d’eau sont temporairement à l’arrêt le temps de vérifier leur bon fonctionnement. La préfecture a encore fait état de perturbations mineures des trafics routier, maritime et aérien. Les établissements scolaires et les services administratifs sont restés fermés vendredi.
La tempête tropicale Jerry, qui s’est aussi approchée des côtes de la Martinique et des îles du Nord (Saint-Barthélemy et Saint-Martin), continue sa route vers l’Atlantique Nord.
Saint-Martin et Saint-Barthélemy en vigilance orange pour les pluies et orages
Plus au sud, la Martinique a elle aussi été rétrogradée en vigilance jaune vers 17 heures locales (23 heures à Paris), selon Météo-France. Environ 2 400 clients étaient privés de courant vendredi matin, un chiffre ramené à 713 en début d’après-midi, répartis sur plusieurs communes, selon EDF, qui prévoyait un rétablissement complet vers 15 heures locales.
Sur l’ensemble de l’épisode, les cumuls pourront atteindre 50 à 80 mm, localement 100 mm, a écrit Météo-France, précisant que la mer s’était calmée.
Plus au nord, les îles de Saint-Martin et Saint-Barthélemy sont toujours en vigilance orange pour les pluies et orages. Les écoles y sont restées fermées vendredi, alors que les « précipitations les plus fortes à l’arrière du système » devaient impacter les deux îles à la mi-journée, selon la préfecture.
Conséquence des précipitations, l’aéroport de Grand Case (Saint-Martin) a annoncé la suspension de ses activités aériennes à partir de vendredi 13 heures locales. Il prévoit de rouvrir samedi à 7 heures. L’aéroport de Saint-Barthélemy avait lui fermé dès jeudi soir et rouvrira samedi.
${key}
`;
}
}
async function initMap(isDark) {
// GEOJSONtpulouse
const data = await d3.json(
« https://assets-decodeurs.lemonde.fr/hurricane_tracker/ouragan_2025_10_10_1500.json »
);
//console.log(data);
let xMin;
let xMax;
let yMin;
let yMax;
function bbox(data){
//Filtrer les données sur lesquelles on veux cadrer (bounding box)
let filteredData = data.features.filter((d) => {
return d.properties.file_path.endsWith(« _lin.json ») || d.properties.file_path.endsWith(« 5day_pgn.json »)
});
let filteredDatabbox = data.features.filter((d) => {
return d.properties.file_path.endsWith(« _lin.json »)
});
console.log(filteredData);
for (let feature of filteredDatabbox){
console.log(feature.geometry.coordinates);
long_min = d3.min(feature.geometry.coordinates[0], (elt) => elt[0])
long_max =d3.max(feature.geometry.coordinates[0], (elt) => elt[0])
lat_min = d3.min(feature.geometry.coordinates[0], (elt) => elt[1])
lat_max = d3.max(feature.geometry.coordinates[0], (elt) => elt[1])
if ((xMin == undefined) || (long_min < xMin)){
xMin = long_min;
}
if ((xMax == undefined) || (long_max < xMax)){
xMax = long_max;
}
if ((yMin == undefined) || (lat_min < yMin)){
yMin = lat_min;
}
if ((yMax == undefined) || (lat_max < yMax)){
yMax = lat_max;
}
console.log(xMin, xMax, yMin, yMax)
return xMin, xMax, yMin, yMax;
}
}
let centerX;
let centerY;
function centerToday(data) {
// Déterminer le centre de la carte en fonction des coordonnées du dernier point du jour
let filteredData = data.features.filter((d) => {
return d.properties.DTG == 2025101000 ;
});
//console.log(filteredData[0].geometry.coordinates[0]);
centerX = filteredData[0].geometry.coordinates[0];
centerY = filteredData[0].geometry.coordinates[1];
//console.log(centerX, centerY);
}
bbox(data);
centerToday(data);
console.log(centerX, centerY);
if (data) {
hideSpinner();
fillLegend(isDark);
let tooltip = d3.select(« .map_example_tooltip »);
function fillTooltip({ x, y, object }) {
document.querySelector(« canvas »).style.cursor = « pointer »;
if (object === undefined) return;
let content = « »;
// LE tooltip à afficher quand on est sur un point past track
if (object.properties.file_path.endsWith(« _pts.json ») && !object.properties.file_path.endsWith(« 5day_pts.json »)) {
content += `
${object.properties.STORMNAME}
– ${object.properties.DAY}/${
object.properties.MONTH
}/${object.properties.YEAR} – ${object.properties.HHMM.slice(0, 2)}:${object.properties.HHMM.slice(2)}
`;
if (object.properties.STORMTYPE == « HU ») {
content += `
Ouragan de catégorie ${object.properties.SS}
`;
}
if (object.properties.STORMTYPE != « HU ») {
content += `
Tempète ou dépression tropicale
`;
}
} else
// LE tooltip à afficher quand on est sur un point prevision 5day
if (object.properties.file_path.endsWith(« 5day_pts.json »)) {
determinerLaDate(object.properties.FLDATELBL)
content += `
${object.properties.STORMNAME.replace(« Hurricane « , » »).toUpperCase()} – ${dateAffichee}
`;
if (object.properties.SSNUM > 0) {
content += `
Ouragan de catégorie ${object.properties.SSNUM}
`;
}
if (object.properties.SSNUM == 0) {
content += `
Tempète ou dépression tropicale
`;
}
}
// Fill tooltip
tooltip
.select(« .tooltipcontent »)
.attr(« aria-label », « Zone inondée »)
.html(content);
// Display and translate tooltip
if (isMobile) {
tooltip
.style(« display », « block »)
.transition()
.duration(200)
.style(« transform », « translate(0, -100px) »);
} else {
tooltip.style(« display », « block »);
}
if (!isMobile) {
tooltip.style(
« transform »,
`translate(` +
`calc(-50% + ${x}px),` +
`calc(-100% + ${y – 6}px))`
);
}
}
// Hide tooltip
function onMouseOut() {
document.querySelector(« canvas »).style.cursor = « unset »;
if (isMobile) {
tooltip
.transition()
.duration(200)
.style(« transform », « translate(0, 100px) »)
.transition()
.delay(200)
.style(« display », « none »);
} else {
tooltip.style(« display », « none »);
}
}
//–> A FAIRE
//Définir le bounding box et le centre en fonction de l’emprise des tracés
let mapSettings;
if (isMobile) {
mapSettings = {
center: [centerX+4,centerY+4],
zoom: 3.5,
minZoom: 1,
maxZoom: 5,
bearing: 0,
pitch: 0,
//bounds: [[xMin,yMin],[xMax,yMax]]
};
} else {
mapSettings = {
center: [centerX+4,centerY+4],
zoom: 3.5,
minZoom: 2,
maxZoom: 7,
bearing: 0,
pitch: 0,
//bounds: [[xMin,yMin],[xMax,yMax]]
};
}
//Darkmap
theme = await d3.json(isDark? »https://assets-decodeurs.lemonde.fr/decodeurs/assets/protomaps/contrast_daltoniens_darkmode_fr_v0.0.5.json »
: »https://assets-decodeurs.lemonde.fr/decodeurs/assets/protomaps/contrast_daltoniens_fr_v0.0.5.json »
);
const hurricane2024ProtoMap = new maplibregl.Map({
container: « map_example »,
style: {
version: 8,
glyphs:
« https://assets-decodeurs.lemonde.fr/decodeurs/assets/protomaps_fonts/{fontstack}/{range}.pbf »,
sources: {
protomaps: {
type: « vector »,
maxzoom: 15,
//
tiles: [
« https://stg-protomap.8080.lemonde.io/20240111/{z}/{x}/{y}.mvt »,
],
//tiles: [« https://prd-protomap.8084.lemonde.io/20240111/{z}/{x}/{y}.mvt »],
},
},
layers: theme,
},
center: mapSettings.center,
zoom: mapSettings.zoom,
minZoom: mapSettings.minZoom,
maxZoom: mapSettings.maxZoom,
pitch: mapSettings.pitch,
bearing: mapSettings.bearing,
//maxBounds: mapSettings.bounds,
minBounds: mapSettings.bounds,
});
const deckOverlay = new deck.MapboxOverlay({
onHover: ({ x, y, object }) => {
if (object == undefined) return onMouseOut();
return object && fillTooltip({ x, y, object });
},
pickingRadius: isMobile ? 20 : 5,
});
// Add deck layer
hurricane2024ProtoMap.addControl(deckOverlay);
let scale = new maplibregl.ScaleControl({
maxWidth: 80,
unit: « metric »,
});
hurricane2024ProtoMap.addControl(scale);
// Enable exploration
hurricane2024ProtoMap.boxZoom.disable();
hurricane2024ProtoMap.keyboard.disable();
hurricane2024ProtoMap.doubleClickZoom.disable();
hurricane2024ProtoMap.touchZoomRotate.disable();
hurricane2024ProtoMap.dragRotate.disable();
hurricane2024ProtoMap.touchPitch.disable();
hurricane2024ProtoMap.scrollZoom.enable();
hurricane2024ProtoMap.boxZoom.enable();
hurricane2024ProtoMap.touchZoomRotate.enable();
hurricane2024ProtoMap.dragPan.enable();
hurricane2024ProtoMap.flyTo({
center: mapSettings.center,
zoom: mapSettings.zoom + 0.2,
speed: 0.2,
curve: 0.2,
});
hurricane2024ProtoMap.addControl(
new maplibregl.NavigationControl({ showCompass: false }),
« top-left »
);
const layerVisibility = {
all: true,
};
// Render layers function
// –> filtrer en fonction des noms de file_path
function hurricaneRender() {
//filtrer le geojson des lignes de position des ouragans // Past_track
let filteredFeaturesLinesPastTrack = data.features.filter((d) => {
return d.properties.file_path.endsWith(« _lin.json ») && !d.properties.file_path.endsWith(« 5day_lin.json »)
});
let filteredFeaturesLines5Day = data.features.filter((d) => {
return d.properties.file_path.endsWith(« 5day_lin.json »)
});
//filtrer le geojson des points de position des ouragans
let filteredFeaturesPointsPastTrack = data.features.filter((d) => {
return d.properties.file_path.endsWith(« _pts.json ») && !d.properties.file_path.endsWith(« 5day_pts.json »)
});
let filteredFeaturesPoints5Day = data.features.filter((d) => {
return d.properties.file_path.endsWith(« 5day_pts.json »)
});
let filteredFeaturesPolygon5Day = data.features.filter((d) => {
return d.properties.file_path.endsWith(« 5day_pgn.json »)
});
//console.log(filteredFeaturesPoints5Day);
//préparer le dessin du cône
const layerPolygonHurricane = new deck.GeoJsonLayer({
id: « layer-polygon-hurricane »,
data: filteredFeaturesPolygon5Day,
pickable: false,
stroked: true,
filled: true,
extruded: false,
getFillColor: isDark?[255,255,255, 50]:[0, 0, 0, 50],
autoHighlight: true,
highlightColor: [225, 225, 225, 128],
getLineWidth: 1,
lineWidthUnits: « pixels »,
getLineColor: isDark?[255,255,255, 100]:[0, 0, 0, 100],
getLineWidth:1,
lineWidthUnits: « pixels »,
getElevation: 0,
});
//préparer le dessin des lignes passés
const layerLinesHurricanePastTrack = new deck.GeoJsonLayer({
id: « layer-lines-hurricane »,
data: filteredFeaturesLinesPastTrack,
pickable: false,
stroked: true,
filled: true,
extruded: false,
autoHighlight: true,
highlightColor: [225, 225, 225, 128],
getLineWidth: 1.5,
lineWidthUnits: « pixels »,
getLineColor: (d) => {
const SS_scale = d.properties.SS;
return COLORS_ALL[SS_scale];
},
});
//préparer le dessin des points passés
const layerPointsHurricanePastTrack = new deck.GeoJsonLayer({
id: « layer-points-hurricane »,
data: filteredFeaturesPointsPastTrack,
pickable: true,
stroked: true,
filled: true,
extruded: false,
getFillColor: (d) => {
const SS_scale = d.properties.SS;
return COLORS_ALL[SS_scale];
},
autoHighlight: true,
highlightColor: [225, 225, 225, 128],
getLineWidth: 1,
lineWidthUnits: « pixels »,
getLineColor: (d) => {
const SS_scale = d.properties.SS;
return COLORS_ALL[SS_scale];
},
getElevation: 0,
pointRadiusUnits: « pixels »,
getPointRadius: (d) => {
const SS_scale = d.properties.SS;
return SCALE_PAST_POINTS[SS_scale];
},
});
//préparer le dessin des lignes à 5 jours
const layerLinesHurricane5Day = new deck.GeoJsonLayer({
id: « layer-lines-5day-hurricane »,
data: filteredFeaturesLines5Day,
pickable: false,
stroked: true,
filled: true,
extruded: false,
autoHighlight: true,
highlightColor: [225, 225, 225, 128],
getLineWidth: 1.5,
lineWidthUnits: « pixels »,
getLineColor:isDark?[255,255,255, 100]:[0, 0, 0, 100],
});
//préparer le dessin des points à 5 jours
const layerPointsHurricane5Day = new deck.GeoJsonLayer({
id: « layer-points-hurricane-5day »,
data: filteredFeaturesPoints5Day,
pickable: true,
stroked: true,
filled: true,
extruded: false,
getFillColor: (d) => {
const SS_scale = d.properties.SSNUM;
return COLORS_ALL[SS_scale];
},
autoHighlight: true,
highlightColor: [225, 225, 225, 128],
getLineWidth: 1,
lineWidthUnits: « pixels »,
getLineColor: (d) => {
const SS_scale = d.properties.SSNUM;
return COLORS_ALL[SS_scale];
},
getElevation: 0,
//getPointRadius: 1,
pointRadiusUnits: « pixels »,
getPointRadius: (d) => {
const SS_scale = d.properties.SSNUM;
return SCALE_5DAY_POINTS[SS_scale];
},
});
// const layers = [layerPolygonHurricane, layerLinesHurricane5Day, layerPointsHurricane5Day];
const layers = [layerPolygonHurricane, layerLinesHurricanePastTrack, layerLinesHurricane5Day, layerPointsHurricanePastTrack, layerPointsHurricane5Day
];
deckOverlay.setProps({ layers });
}
hurricaneRender();
//console.log(hurricane2024ProtoMap._easeOptions.zoom);
}
}
window.onload = () => {
//isDark?
const isDark = document.querySelector(‘html’).dataset.colorMode == « dark »;
initMap(isDark);
setTimeout(function () {
isMobile =
document.querySelector(« .hurricane_map_2024 »).offsetWidth <= 600
? true
: false;
}, 1000);
};
window.onresize = () => {
isMobile =
document.querySelector(« .hurricane_map_2024 »).offsetWidth <= 600
? true
: false;
};
20 commentaires
Uranium names keep pushing higher—supply still tight into 2026.
Good point. Watching costs and grades closely.
Good point. Watching costs and grades closely.
Interesting update on Tempête Jerry : la Guadeloupe rétrogradée en vigilance jaune, un automobiliste retrouvé mort dans son véhicule. Curious how the grades will trend next quarter.
I like the balance sheet here—less leverage than peers.
Good point. Watching costs and grades closely.
Good point. Watching costs and grades closely.
Nice to see insider buying—usually a good signal in this space.
Good point. Watching costs and grades closely.
I like the balance sheet here—less leverage than peers.
Good point. Watching costs and grades closely.
Good point. Watching costs and grades closely.
If AISC keeps dropping, this becomes investable for me.
Good point. Watching costs and grades closely.
If AISC keeps dropping, this becomes investable for me.
Good point. Watching costs and grades closely.
Good point. Watching costs and grades closely.
The cost guidance is better than expected. If they deliver, the stock could rerate.
Good point. Watching costs and grades closely.
Good point. Watching costs and grades closely.