Altitudes et géoïde : pourquoi le GPS donne 50 m de trop

Ellipsoïde, géoïde, altitude IGN69 et hauteur GPS, grille RAF20, RGE ALTI et LiDAR HD : obtenir enfin des altitudes justes, d'un point comme d'un profil.

Au centre d'Annecy, la carte IGN indique une altitude de 449 m. Le GPS d'un téléphone Android, au même endroit, affiche volontiers 498 m. Aucun des deux ne se trompe : ils ne mesurent pas la même chose. Ce tutoriel explique la différence entre altitude et hauteur ellipsoïdale, le rôle du géoïde et des grilles RAF de l'IGN, et comment obtenir des altitudes justes, d'un point comme d'un profil entier.

Trois surfaces pour une seule Terre

h H N point P relief (sol) géoïde ≈ niveau moyen des mers ellipsoïde (GRS80 / WGS84)
La hauteur ellipsoïdale h (ce que mesure un GPS) vaut l'altitude H (celle des cartes) plus l'écart N entre géoïde et ellipsoïde.
  • L'ellipsoïde est une forme mathématique lisse (GRS80, quasi identique au WGS84 du GPS). Pratique pour les calculs, il ne correspond à rien de physique : il passe tantôt au-dessus, tantôt au-dessous du niveau de la mer.
  • Le géoïde est la surface où la pesanteur a partout le même potentiel, celle que suivrait la mer au repos prolongée sous les continents. Il ondule de plusieurs dizaines de mètres selon la répartition des masses dans la Terre. C'est la référence naturelle des altitudes : l'eau s'écoule de l'altitude haute vers l'altitude basse, ce que ne garantit pas la hauteur ellipsoïdale.
  • Le relief est la surface du sol, décrite par un modèle numérique de terrain (MNT).

Les trois grandeurs sont liées par une relation simple :

h = H + N
h : hauteur ellipsoïdale (GPS)      H : altitude (cartes, repères de nivellement)
N : écart entre le géoïde et l'ellipsoïde (« ondulation du géoïde »)

En France, le géoïde est 43 à 54 m au-dessus de l'ellipsoïde

En métropole, N est partout positif : il va d'environ 44 m dans le Bassin parisien à plus de 53 m dans le massif du Mont-Blanc. Quelques valeurs calculées avec la grille officielle RAF20 de l'IGN :

LieuN (RAF20)
Paris43,8 m
Lille43,9 m
Bordeaux46,0 m
Strasbourg47,7 m
Marseille49,0 m
Annecy49,5 m
Brest50,6 m
Mont Blanc53,4 m

Au centre d'Annecy, le sol est donc à H = 448,64 m d'altitude (RGE ALTI), et un GPS parfait y mesurerait h = 448,64 + 49,51 = 498,15 m. Les « 50 m de trop » du téléphone, c'est N.

Les systèmes d'altitude français

SystèmeTerritoireCode EPSG
NGF-IGN69France continentale ; altitude zéro définie par le marégraphe de MarseilleEPSG:5720
NGF-IGN78CorseEPSG:5721
Systèmes locauxChaque département et collectivité d'outre-mer a le sien, rattaché à son propre marégrapheselon le territoire

Ces altitudes sont matérialisées sur le terrain par des milliers de repères de nivellement (les petites plaques rondes scellées sur les églises, ponts et mairies), dont les fiches sont consultables sur le site de géodésie de l'IGN. Les cartes, les plans de géomètre et les MNT de l'IGN sont exprimés dans ces systèmes.

Passer du GPS à l'altitude : les grilles RAF

Pour convertir une hauteur GNSS en altitude, il faut connaître N en tout point, avec une précision compatible avec celle d'un GPS de géomètre (quelques centimètres). L'IGN publie pour cela une grille de conversion altimétrique, la RAF, régulièrement améliorée : RAF09, RAF18, RAF18b, puis RAF20, la version actuelle.

  • Elle couvre la France continentale, au pas de 1,5′ en latitude et 2′ en longitude (environ 2,8 × 2,6 km), avec une interpolation bilinéaire entre les nœuds.
  • Sa précision est de l'ordre du centimètre.
  • Elle donne N par rapport à l'ellipsoïde du RGF93 v2b. C'est la transformation EPSG:9876, du RGF93 v2b vers les altitudes NGF-IGN69. La Corse et l'outre-mer ont leurs propres grilles.
  • PROJ (et donc QGIS) la diffuse sous le nom fr_ign_RAF20.tif : un GeoTIFF de 343 Ko, lisible directement dans un navigateur.
// N au point (lon, lat) depuis la grille RAF20, avec geotiff.js
const tiff = await GeoTIFF.fromUrl('https://cdn.proj.org/fr_ign_RAF20.tif');
const img = await tiff.getImage();
const [valeurs] = await img.readRasters();
const [ox, oy] = img.getOrigin(), [dx, dy] = img.getResolution(), w = img.getWidth();

function N(lon, lat) {
  // Les valeurs sont données aux nœuds : 421 × 381 nœuds de -5,5° à 8,5° E et de 51,5° à 42° N
  const fx = (lon - ox) / dx, fy = (lat - oy) / dy;
  const x = Math.floor(fx), y = Math.floor(fy), u = fx - x, v = fy - y;
  const at = (i, j) => valeurs[j * w + i];
  return at(x, y) * (1 - u) * (1 - v) + at(x + 1, y) * u * (1 - v)
       + at(x, y + 1) * (1 - u) * v + at(x + 1, y + 1) * u * v;   // interpolation bilinéaire
}
N(6.1303, 45.8999);   // ≈ 49,51 m (Annecy)

Nœuds ou pixels ? La grille compte un nœud tous les 2′ à partir de -5,5° (et de 51,5°), soit 421 × 381 valeurs. Ce sont des valeurs ponctuelles, pas des moyennes de pixels : n'ajoutez pas le demi-pixel habituel, sinon vous décalez tout de 1,3 km.

Dans QGIS, il suffit de déclarer le bon système vertical : lors d'une conversion entre hauteurs ellipsoïdales et altitudes NGF-IGN69, PROJ choisit la transformation EPSG:9876 et utilise la grille RAF20. QGIS propose de la télécharger si elle manque.

Pourquoi votre téléphone affiche 50 m de trop

La norme du W3C qui régit la géolocalisation dans les navigateurs (navigator.geolocation) précise que coords.altitude est une hauteur au-dessus de l'ellipsoïde WGS84. C'est ce que renvoient en général les téléphones Android : environ 50 m de plus que la carte. Les iPhone, eux, renvoient le plus souvent une altitude déjà corrigée par un modèle de géoïde mondial. Le même code peut donc donner deux résultats selon l'appareil, comme le relève la discussion du W3C à ce sujet.

  • Même corrigée, l'altitude d'un smartphone reste imprécise : l'erreur verticale du GPS est en général une fois et demie à deux fois l'erreur horizontale, soit souvent plusieurs mètres.
  • Le baromètre de certains téléphones et montres affine les variations, mais il dérive avec la météo.
  • La bonne pratique des applications de randonnée : prendre la position au GPS et l'altitude sur un MNT.

Les altitudes du terrain : RGE ALTI et LiDAR HD

L'IGN décrit le relief de toute la France avec des modèles numériques de terrain, en altitudes NGF-IGN69 :

ModèleRésolutionCouverture
RGE ALTI1 m (aussi diffusé à 5 m)France entière et outre-mer
LiDAR HD (MNT)50 cmEn cours de déploiement sur le territoire

Ce sont des modèles du sol nu, sans bâtiments ni végétation. Le LiDAR HD fournit aussi un modèle de surface (MNS) qui les inclut.

Le service d'altimétrie de la Géoplateforme interroge ces modèles sans clé ni téléchargement :

Altitude d'un point (plusieurs points séparés par « | ») :
https://data.geopf.fr/altimetrie/1.0/calcul/alti/rest/elevation.json?lon=6.1303&lat=45.8999&resource=ign_rge_alti_wld&zonly=true
→ {"elevations": [448.64]}

Profil le long d'une ligne, échantillonné en 500 points (5 000 au maximum) :
https://data.geopf.fr/altimetrie/1.0/calcul/alti/rest/elevationLine.json?lon=6.1303|6.1059&lat=45.8999|45.7984&resource=ign_rge_alti_wld&sampling=500&profile_mode=simple

Remplacez ign_rge_alti_wld par ign_lidar_hd_mnt_mono_wld pour le LiDAR HD. En dehors des données (en mer, hors couverture), le service renvoie la valeur -99999, à filtrer avant tout calcul.

Dénivelé : méfiez-vous des décimètres. Additionner toutes les petites variations d'un profil gonfle le dénivelé cumulé : plus le modèle est fin, plus il est « rugueux ». Entre Annecy et le sommet du Semnoz, le LiDAR HD donne ainsi une centaine de mètres de dénivelé positif de plus que le RGE ALTI. On n'additionne donc que les variations qui dépassent un seuil (1 m dans l'outil de ce site).

L'outil Profil altimétrique met tout cela en pratique : profil d'une ligne avec dénivelés et pentes, altitude d'un point avec sa valeur N et sa hauteur ellipsoïdale, comparaison avec le GPS de votre téléphone et exports CSV, GeoJSON 3D et GPX.

Démonstration

Cliquez n'importe où en France continentale : la démo interroge le RGE ALTI et la grille RAF20, puis place le point sur le schéma des trois surfaces.

À essayer : comparez N à Paris (environ 44 m), à Brest (environ 51 m) et au Mont-Blanc (environ 53 m), puis en montagne : l'altitude change de plus de 1 000 m alors que N ne varie que de quelques décimètres. Sur un téléphone, le bouton « Mon GPS » compare l'altitude donnée par l'appareil à celle du terrain.

Licences : textes et schémas sous licence CC BY-SA 4.0 (réutilisation libre en citant CartoForge et en partageant à l'identique) ; extraits de code sous licence MIT, à copier librement dans vos projets.
Liens, services et noms de couches vérifiés le 15/10/2026. Un lien cassé ? Signalez-le.