Skip to content

Corriger la distorsion géographique

Latitude et longitude sont exprimées en degrés. Or, un degré de latitude vaut toujours environ 111 km — mais un degré de longitude se rétrécit à mesure qu’on s’éloigne de l’équateur, proportionnellement au cosinus de la latitude. Nourrir un algorithme sensible à la distance euclidienne (comme K-Means) avec des degrés bruts revient à travailler sur une carte silencieusement déformée.

import math
lat_mean = points["latitude"].mean()
points["x_km"] = points["longitude"] * 111 * math.cos(math.radians(lat_mean))
points["y_km"] = points["latitude"] * 111
coords_km = points[["x_km", "y_km"]].values

Cette projection locale (valable à l’échelle d’un pays, pas à l’échelle mondiale) convertit les degrés en kilomètres approximatifs, en compensant le rétrécissement des longitudes par le cosinus de la latitude moyenne de la zone étudiée. Tous les calculs de clustering de ce module utiliseront coords_km, jamais les degrés bruts.

Sans cette correction, deux points séparés de 1° de longitude sembleraient aussi éloignés que deux points séparés de 1° de latitude — alors qu’à une latitude de 12°, 1° de longitude ne vaut qu’environ 108 km contre 111 km pour 1° de latitude, une différence certes modeste ici mais qui grandit rapidement en s’approchant des pôles, et qui peut suffire à faire basculer des points d’un cluster à l’autre sur une carte déformée.

👉 K-Means : regrouper par centroïdes


Junior TSAFACK – 12/09/2026