Réponse courte

Les données de forage ne deviennent utiles dans un SIG que lorsque vous cessez de traiter un trou comme un point unique pour le considérer comme un objet 3D défini par trois tables liées : une tête (où commence le trou), une déviation (comment il s'incurve) et des logs d'intervalles (la nature de la roche, de profondeur à profondeur). Le plus difficile n'est pas de charger des points. C'est de calculer la position XYZ réelle de chaque intervalle enregistré à partir de la profondeur mesurée et des angles de déviation, dans un SCR et un référentiel vertical cohérents, afin que lithologie, analyses et relevés structuraux tombent là où la roche se trouve réellement.

Si vous aplatissez les données d'intervalle sur la coordonnée de tête, vous écartez l'axe de profondeur que tout le jeu de données existe pour capturer. Presque tout échec d'un « forage dans un SIG » remonte à cette seule erreur, ou à un décalage d'unités et de référentiel en aval.

Le modèle de données minimal

Un jeu de données de forage défendable est relationnel, et non une seule couche aplatie. La structure standard utilisée par les logiciels miniers et géotechniques (Leapfrog, Micromine, Datamine, l'extension QGIS Geoscience) est la suivante :

Table des têtes (collar)

Une ligne par trou. Champs obligatoires :

  • HoleID (clé primaire, texte, unique)
  • X, Y — emplacement de la tête dans un SCR projeté défini
  • Z — altitude de la tête (niveau du sol ou cote réduite), dans un référentiel vertical défini
  • TotalDepth — profondeur mesurée finale (MD) le long du trou

Table des déviations (survey)

Plusieurs lignes par trou, jointes sur HoleID. C'est l'enregistrement de déviation :

  • Depth — profondeur mesurée de la station de mesure, en mètres le long du trou
  • Azimuth — direction du trou à cette station, 0–360 degrés (indiquez s'il s'agit du nord grille ou du nord magnétique — cela compte)
  • Dip — inclinaison, généralement négative pour les trous pointant vers le bas (un trou vertical est à −90)

Même les trous « verticaux » dévient. Un trou de 300 m enregistré comme vertical peut s'écarter de 5 à 15 m de l'aplomb. En l'absence de déviation, vous supposez un trou rectiligne au pendage et à l'azimut de la tête, et vous explicitez cette hypothèse.

Tables d'intervalles (downhole)

Une table par thème de données — lithologie, altération, analyses, géotechnique (RQD), structure — chacune avec :

  • HoleID
  • From, To — début et fin de l'intervalle en profondeur mesurée
  • le(s) attribut(s) : Lithology, Au_ppm, RQD, etc.

Une règle de validation qui détecte la plupart des erreurs : au sein d'un trou, les intervalles ne doivent pas se chevaucher, ne doivent pas comporter de lacunes non voulues, et From < To, le To du dernier intervalle ne dépassant pas TotalDepth. Une simple vérification SQL repère les violations :

SELECT a.HoleID, a."From", a."To"
FROM litho a
JOIN litho b ON a.HoleID = b.HoleID
WHERE a."From" < b."To" AND a."To" > b."From" AND a.ctid <> b.ctid;

Pourquoi la profondeur n'est pas l'altitude

L'erreur conceptuelle la plus courante est de traiter la profondeur mesurée comme une profondeur sous la surface. La profondeur mesurée (MD) est la distance parcourue le long du forage depuis la tête. La profondeur verticale réelle (TVD) est la dénivelée verticale. Elles ne sont égales que dans un trou parfaitement vertical.

Pour un trou incliné, un intervalle à 200 m MD dans un trou pendant à −60 degrés se situe à une TVD d'environ 200 × sin(60°) = 173 m sous la tête, et il s'est aussi déplacé horizontalement de 200 × cos(60°) = 100 m par rapport à la tête. Placez cet intervalle au XY de la tête et à 200 m de profondeur, et vous avez mis la roche 27 m trop profond et à 100 m de là où elle se trouve.

Ainsi, l'altitude de tout point d'intervalle est :

Z_interval = Z_collar − TVD(depth)

calculée dans le même référentiel vertical que le Z de tête. Si les têtes ont été nivelées en hauteur au-dessus du géoïde EGM2008 (orthométrique) mais que vous y mêlez un MNT référencé à l'ellipsoïde WGS84, vous pouvez introduire un décalage vertical de 20 à 40 m avant même que la géologie n'entre en jeu. Choisissez le référentiel vertical une fois pour toutes et convertissez tout vers lui.

Calculer les XYZ en profondeur : la courbure minimale

Pour transformer la table de déviations en trace 3D, vous « désorientez » le trou (desurvey) — vous interpolez la position entre stations de mesure. La méthode standard de l'industrie est la courbure minimale, qui ajuste un arc de cercle entre deux stations plutôt qu'un segment rectiligne.

Entre la station 1 (profondeur, azimut I₁, pendage) et la station 2, avec une longueur mesurée ΔMD entre elles :

  1. Calculez l'angle de dogleg DL (le changement angulaire total entre les deux vecteurs d'orientation).
  2. Calculez le facteur de rapport RF = (2 / DL) × tan(DL / 2) (RF → 1 quand DL → 0).
  3. Les incréments sont des moyennes pondérées des vecteurs de direction aux deux stations, mises à l'échelle par (ΔMD / 2) × RF.

La méthode tangentielle (utilisant uniquement les angles de la station inférieure) est plus simple mais biaise systématiquement la trace dans les trous courbes ; la tangentielle équilibrée est meilleure ; la courbure minimale est la référence admise. La plupart des outils SIG et de modélisation l'implémentent, vous la codez donc rarement à la main — mais vous devez savoir quelle méthode votre outil a utilisée, car mélanger les méthodes de desurvey entre jeux de données produit des traces qui divergent de plusieurs mètres en profondeur.

En pratique, vous faites cela dans un outillage dédié : l'extension QGIS Geoscience (outils de forage), Leapfrog Geo, Micromine, ou un desurvey Python avec pandas. Le résultat est soit une polyligne 3D par trou, soit un point par milieu d'intervalle avec X, Y, Z calculés.

Flux de travail détaillé dans QGIS

  1. Chargez les trois CSV sous forme de tables. Définissez explicitement le SCR de la couche des têtes — par exemple EPSG:32735 (WGS84 / UTM zone 35S) pour un projet en Afrique australe. Ne laissez pas QGIS deviner.
  2. Installez l'extension Geoscience (Extensions → Installer/gérer les extensions). Utilisez son outil « Downhole Data », pointez-le vers les tables de têtes, de déviations et d'intervalles jointes sur HoleID.
  3. Générez les traces désorientées et les points d'intervalle. L'extension applique la courbure minimale et écrit des attributs X/Y/Z que vous pouvez inspecter.
  4. Vérifiez la cohérence des têtes par rapport à un MNT. Dans la calculatrice de champ, échantillonnez l'altitude du MNT à chaque XY de tête et comparez-la au Z mesuré. Des écarts au-delà de quelques mètres signalent généralement un décalage de SCR ou de référentiel, et non un mauvais levé.
  5. Stylisez la lithologie avec un rendu catégorisé sur les points d'intervalle, et visualisez dans la vue Carte 3D de QGIS ou exportez vers un format 3D.
  6. Construisez des coupes avec l'outil de coupe qProf ou Geoscience : définissez une ligne de coupe, fixez un couloir de projection (p. ex. 50 m de chaque côté), et tracez la lithologie en fonction de la distance et de l'altitude.

Pour les projets multi-utilisateurs, stockez les tables dans PostGIS. Créez la géométrie de tête avec ST_SetSRID(ST_MakePoint(x, y, z), 32735) et utilisez un type de géométrie 3D (PointZ) afin que l'altitude voyage avec la coordonnée. Un index spatial GiST sur la géométrie des têtes maintient des requêtes cartographiques rapides à mesure que la base grandit.

Pièges courants et leurs causes

  • Confusion sur la référence d'azimut. Des déviations enregistrées au nord magnétique tracées comme nord grille font pivoter toute la trace du trou de la déclinaison locale (qui peut dépasser 20 degrés en haute latitude ou en terrain minéralisé). Enregistrez et convertissez toujours la référence.
  • Convention de pendage négatif vs positif. Certains outils attendent −90 pour un trou vertical descendant, d'autres +90. Une inversion de signe envoie votre trace dans le ciel. Vérifiez visuellement un trou connu avant de faire confiance à un lot.
  • Intervalles qui se chevauchent. Un re-logging jamais réconcilié laisse deux lithologies revendiquer la même profondeur. La vérification SQL de chevauchement ci-dessus le détecte ; l'ignorer compte deux fois la longueur d'analyse lors du compositing.
  • Mélange de référentiels verticaux. Des cotes de tête issues d'une station totale (orthométriques) combinées à des hauteurs ellipsoïdales GNSS sans correction de géoïde. La géologie paraît correcte en plan et se révèle fausse en coupe.
  • Dérive de méthode de desurvey. Importer des XYZ pré-calculés d'un logiciel et les recalculer dans un autre, puis comparer — les deux divergent en profondeur et quelqu'un « corrige » des données réelles pour les faire coïncider avec un artefact.

Assurance qualité et validation

Avant que des données de forage n'alimentent un modèle, un rapport ou une décision :

  • Confirmez que le nombre de têtes est égal au nombre de HoleID uniques dans chaque table (des lignes orphelines de déviation ou d'analyse trahissent une faute de frappe dans la clé).
  • Confirmez la continuité From/To et l'absence de chevauchements par trou.
  • Vérifiez que le SCR et le référentiel vertical sont inscrits dans les métadonnées du projet, et non supposés.
  • Tracez toutes les têtes sur un fond de carte et sur le MNT — les valeurs aberrantes exposent généralement un X/Y transposé ou une erreur de zone.
  • Affichez un trou entièrement désorienté en 3D et confirmez que profondeur, pendage et azimut correspondent à l'enregistrement du foreur.

Le point de vue de Bathyl

Les données de forage sont le rare jeu de données géoscientifiques où la troisième dimension est l'essentiel ; nous traitons donc le modèle têtes-déviations-intervalles et un référentiel vertical unique déclaré comme des fondations non négociables. Le but d'un bon SIG de forage n'est pas une couche de points soignée, mais un objet 3D inspectable qu'un géologue peut couper, interroger et défendre face aux feuilles de logging d'origine.

À lire aussi chez Bathyl

Sources