Skip to Content

Du krigeage et du libre et/ou gratuit: inventaire des solutions dans le domaine spatial (logiciels SIGs, applications, librairies, mais sans doute non exhaustif...)


Le krigeage est une procédure de plus en plus en vogue dans le monde géomatique grand public. Il est même souvent proposé comme première solution à divers problèmes d'interpolation sur les forums.  Cela vient sans aucun de son implémentation conviviale dans le logiciel ArcGIS.

Je m'étonne toujours de ces propositions, car pour moi qui ai suivi un cours de géostatistique (minière) dans mon cursus universitaire de géologie, bien la comprendre n'est pas une tâche aisée (à tel point que je n'ose toujours pas l'appliquer dans une grande partie  des cas (domaine spatial), ayant peur d'avoir mal maîtrisé tous les paramètres).

Comme le souligne William Huber, grand spécialiste du monde géospatial (créateur de Quantitative Decision et modérateur sur gis.stackexchange), dans Arcgis 10.1: Minimum number of samples for kriging interpolation 

"I will step up on a soapbox for a brief rant: in my opinion, the fastest way to get bad results with a computer program is to accept its default parameters. ArcGIS is one of the richest, most powerful environments for getting bad results this way. The moral is do not use software for important work until you understand how to control it. Down from the soapbox now..."

et dans How to perform Ordinary Kriging in SAGA via QGIS SEXTANTE Plug-in?

"A lot of people like Isaaks & Srivastava. If you are using kriging software without having the knowledge contained in this textbook (at a minimum), then you are not doing kriging, you're just getting into trouble."

La géostatistique et le krigeage ne sont effet  pas des méthodes « neutres ». Le fait, par exemple, de représenter un MNT par une variable régionalisée (fonction) implique que certaines conditions de départ soient réunies, à l'inverse des autres techniques d'interpolation déterministes (Splines, etc.);

Objectif

Il existe beaucoup d'autres logiciels propriétaires/payants comme SurferIsatis de Geovariances, le plus complet, ou..., qui permettent de faire du krigeage, mais qu'en est-il dans le domaine du libre (Open Source) et gratuit (Freeware) ?

L'objectif ici est simplement de fournir un inventaire détaillé de ces alternatives ( = celles que je connais, en complément à la réponse d'Anita Graser (Underdark) sur gis.stackexchange: Open source methods for kriging?).

Nous examinerons donc dans la suite:

  1. Les logiciels SIGs
  2. La « galaxie » R
  3. Avec Octave  (clone de Matlab)
  4. Les librairies/Applications spécialisées (C/C++)
  5. Avec Python
  6. Avec.NET
  7. Avec JavaScript

avec quelques illustrations pour agrémenter la lecture.

Je laisse à d'autres, beaucoup plus qualifiés que moi, le soin d'aborder tous les aspects théoriques (ce n'est pas le but du sujet), de même que les différents types de krigeage (notons cependant que le krigeage ordinaire est le plus utilisé du fait de ses particularités, composante régionale présumée constante, mais de moyenne inconnue).

Et donc, pas de théorie et pas d'applications pratiques ni d'exemples détaillés, mais j'insisterai sur les possibilités d'Analyse variographique de chaque solution, car c'est l'élément fondamental et le plus complexe de la procédure (choix des paramètres, portée, palier, pépite, modèles d'ajustement, cet aspect étant la partie la plus délicate). L'analyse de l'incertitude de la prévision du krigeage est tout aussi importante.

figures réalisées avec les modules Python ambhas, geostatsmodels (voir plus bas) et matplotlib

Dans ArcGIS, par exemple, seule l'extension Geostatistical Analyst permet de le faire d'une manière visuelle (Geostatistical Wizard). Le krigeage disponible dans Spatial Analyst utilise une analyse par défaut (« boîte noire », voir Krigeage (Spatial Analyst) ou Kriging with ArcGIS, par exemple).

Les solutions

Il faut être clair dès le départ: aucune des solutions proposées (hormis SGeMS , voir plus bas) ne dispose d'une interface aussi conviviale que celle d'ArcGIS (Geostatistical Wizard)  qui est pourtant critiquée par beaucoup de géostatisticiens, car elle « masquerait » la complexité des traitements (traitements variographiques, « boîte noire » au niveau des algorithmes utilisés d'où fiabilité des prédictions, etc.), mais je ne suis pas un géostatisticien professionnel.

Il est aussi clair pour moi que ce n'est qu'en utilisant les solutions qui vont être proposées que l'on peut vraiment apprendre et comprendre la géostatistique et le krigeage, car si on n'en connait pas un minimum, ça ne marchera pas. Mais cela prend du temps et le temps...

Il importe ici de séparer les logiciels SIGs des autres et des librairies. Ces derniers ne permettent pas un travail interactif: il faut importer les données, les traiter, puis les exporter pour pouvoir les utiliser dans un logiciel SIG, mais il faut bien se rendre compte que:

"As any other GIS, ArcGIS has limits considering the sophistication of the geostatistical analysis" dans A Practical Guide to Geostatistical Mapping of Environmental Variables (2007) de Tomislav Hengl,  p. xiii .

Il existe des sites dédiés à ces solutions comme, spatial-analyst.net, Geostat-course.org, Geomorphometry.org qui offrent des tutoriels et des livres gratuits comme A Practical Guide to Geostatistical Mapping ou A Practical Guide to Geostatistical Mapping of Environmental Variables de la Commission européenne (déjà cité) et des livres comme Model-based Geostatistics (Diggle, P., Ribeiro, P.J., 2007), Geomorphometry: Concepts, Software, Applications (plusieurs articles, 2009), Applied Spatial Data Analysis with R (Bivand R.S, Pebesma, E., Gómez-Rubio, V., 2013) ou Applied Geostatistics with SGeMS: A User's Guide (Remy, N.,Boucher,R, A., Jianbing Wu, 2011). Hormis la liste d' Anita Graser, il en existe aussi d'autres comme celle de AI_GEOSTATS avec des applications comme E{Z}-Kriging (Windows, Linux et Mac OS X avec Wine) qui permet aux étudiant(e)s d'explorer le monde des variogrammes et du krigeage ordinaire visuellement (attention, c'est une simulation pour apprendre,  elle ne permet pas de faire du krigeage à partir de ses données).

E{Z}-Kriging

1) Logiciels SIGs

  • SAGA GIS: il permet d'effectuer l'analyse variographique (limitée) et les krigeages ordinaire et universel, avec variantes, ainsi que le krigeage de bloc (voir Geostatistics in SAGA(pdf)).

  • gvSIG, OpenJump, uDig et toute la série des logiciels en Java qui utilisent la bibliothèque Java SEXTANTE peuvent utiliser les algorithmes similaires à ceux de SAGA GIS via la librairie (krigeages ordinaire et universel, validation croisée);

avec OpenJump

avec gvSIG

variogramme expérimental (points rouges) et 2 variogrammes ajustés suivant des modèles différents(tiré de Geostatistics in ILWIS)

v.krige et v.autokrige (basé sur le package R automap) 

  • QGIS, sans doute le plus utilisé, peut le faire:
    • en utilisant les commandes de SAGA GIS (pas d'analyse variographique) par l'entremise de la Boîte à outils de Traitements;
                                       
    • par l'entremise de scripts R (voir plus bas) dans la Boîte à outils de Traitements (il existe des scripts prêts à l'emploi comme ceux de INTA-Suelos/QGIS-R-Geostatistics, par exemple, car l'extension SDA4PP, citée par Anita Graser, qui utilisait R n'a pas été mise à jour pour les versions 2.x);

      avec un script R utilisant gstat dans la boïte à outil de Traitements

    • par l'entremise de modules Python comme ceux qui seront vus plus bas.

      avec les modules Python, geostatsmodels  (voir plus bas) et matplotlib

                                        

      Résultat d'un krigeage dans QGIS avec le script R

figure tirée de Senimapeta: Interpolasi (2)

  • SPRING GIS (gratuit) est un logiciel SIG développé par l'Institut National de Recherche Spatiale du Brésil (Brazil's National Institute for Space Research, INPE/DPI, Image Processing Division), gratuit après enregistrement. Il permet d'effectuer l'analyse variographique, divers types de krigeage dont les krigeages simple et ordinaire, le krigeage d'indicatrices  et le cokrigeage, avec validation croisée;
  • et sans doute d'autres que je ne connais pas...

2) La «  galaxie » R

Il existe un nombre étonnamment élevé de packages permettant de faire de la géostatistique (voir Geostatistics packages on CRAN et Geostatistics dans CRAN Task View: Analysis of Spatial Data), de même que des tutoriels, des cours ou des livres à ce sujet (trop nombreux pour être cités).  En pratique, il est possible d'appliquer la grande majorité des variantes de krigeage. Le problème est alors le choix: lequel utiliser ? Il y en a deux qui se détachent, gstat et  geoR. La plupart d'entre eux permettent d'effectuer des validations croisées.

Comme R n'est pas un logiciel SIG, il est nécessaire d'importer les données puis de les exporter après traitements avec des packages comme Rgdal ou bien de créer un script à incorporer dans la Boîte à outils de Traitements dans QGIS. Il faut aussi mettre ses mains dans le cambouis avec la ligne de commandes, ce qui en rebutera beaucoup...

  • gstat: ce package,  sans doute le plus utilisé, est devenu une référence. Ancien programme indépendant, il est utilisé par de nombreux autres logiciels. Il dispose d'un nombre impressionnant de fonctions d'analyse variographique et de krigeage ;
    • analyse variographique;
    • krigeages simple, ordinaire, universel, conditionnel, non linéaire, krigeage de blocs, ...;
    • cokrigeage simple, ordinaire et universel;
    • et bien d'autres ...
  • difficile à appréhender de prime abord, il dispose de sa « boîte noire », le package automap: vous entrez les données et il vous fournit le « meilleur » résultat possible en utilisant toutes les arcanes de gstat (à la différence des autres boîtes noires, il est toujours possible de décomposer la procédure suivie et de l'adapter si nécessaire). Pour un débutant, c'est le plus facile à utiliser (pour ne pas se tromper...);


Exemple de résultats obtenus avec R et le package automap

 

  • geoR: il dispose des mêmes fonctions que gstat, mais abordées de manière différente, avec des particularités propres comme le krigeage bayésien (en pratique les deux sont complémentaires). Pour certains, c'est le package géostatistique le plus complet de R. geoRglm étend encore ses possibilités;
  • d'autres packages permettent d'effectuer divers types de krigeage plus ou moins spécialisés et/ou avec des approches différentes, comme Fields, kriging, constrainedKrigingSpatialTools, geospt, intamap (alternative à automap, plus spécialisé) agrémenté de pgsp (pour les traitements bayésiens) ou ramps (géostatistique bayésienne). vardiag ou nmle,  ne s'occupent que des traitements des variogrammes;
  • il y a même moyen d'utiliser les fonctions de SAGA GIS avec RSAGA;
  • et il faut aussi signaler RGeostats qui  permet à l'équipe de Géostatistique du Centre de Géosciences (MINES ParisTech)  de développer des prototypes pour l'application de nouveaux modèles et qui permet de tout faire (un peu particulière, car gratuite, mais avec licence après enregistrement, voir Download RGeostats).

3) Avec Octave (clone libre de Matlab)

4) Les librairies/Applications spécialisées (C/C++)

Il s'agit de deux librairies en C/C++ spécialisées en géostatistique. Elles possèdent une interface graphique et une API Python . Il s'agit de:

provenant des captures d'écran du site de SGeMS

Elles implémentent l'analyse variographique et toutes les méthodes de krigeage et même plus (des méthodes dont je n'ai jamais entendu parler..). Il existe un livre déjà cité, des tutoriels et des modes d'emploi comme HPGL manual, mais je ne les ai jamais abordées sérieusement.

5) Avec Python

Hormis les API Python des librairies citées, il n'existe paradoxalement aucune implémentation du krigeage dans les principaux modules scientifiques comme Numpy, Scipy ou dans la série des scikit-learn ni dans Pysal. Ce qui s'en approche le plus est la Gaussian process regression (à la base du krigeage, voir discussion dans la liste Scipy-user: Kriging module, ce que fait aussi GPy: Gaussian Process Toolbox). Ceci a amené plusieurs auteurs a proposer leurs solutions:

Exemple de résultat obtenu avec geostatsmodels

  • geostatpy qui permet l'analyse variographique, les krigeages simple et ordinaire, la validation croisée et le krigeage de bloc (2D et 3D), mais sans possibilité d'exporter simplement les couches raster résultantes ;
  • PyKrige  qui permet l'analyse variographique, les krigeages simple et ordinaire, mais qui, lui, permet d'exporter les résultats au format ESRI ASCII  grid (.asc)
  • la version de Wikipedia en portugais propose une version basique du krigage simple avec Numpy: Algoritmo da krigagem (Python).
  • et enfin, avec les Notebook IPython il est tout à fait possible de passer de Python à R et vice versa (voir mon Krigeage avec Fiona et le package automap, 3D avec Mayavi).

6) Avec .NET

  • avec le GeostatisticalTool de Dot Spatial ("geographic information system library for .NET4") déjà signalé avec MapWindow (analyse variographique, krigeages simples, ordinaire et universel) et que je n'ai jamais abordé (n'utilisant pas .NET).

7) Avec JavaScript

  • récemment, a été proposée une librairie kriging.js qui permet d'effectuer le krigeage ordinaire (exemple).

Conclusions

Il y a sans doute d'autres solutions que je ne connais pas. Personnellement, mon premier réflexe est d'utiliser R avec le package automap  (pour me rassurer un peu dans mes doutes dans les choix des paramètres...). Ensuite, si nécessaire, je passe à d'autres solutions pour affiner (ou comparer)  les résultats à partir des paramètres obtenus.

Je conçois que ce n'est sans doute pas facile pour la majorité des Sigistes qui préférera toujours une solution interactive  « pousse bouton » , ce qui est normal.

En pratique, vous pouvez utiliser ce que vous voulez, mais l'important est de bien comprendre ce que vous faites ( il y a une grande différence entre appliquer simplement un algorithme de krigeage et faire du krigeage) et les limites de la solution choisie.

Dans la grande majorité des cas soumis sur les forums, une solution déterministe donnerait d'aussi bons résultats, surtout si l'on ne veut pas faire de la prédiction/évaluation, ce pour quoi a été développé le krigeage dans le cas de la prospection minière par Daniel G. Krige. De plus, de par sa nature, le krigeage a tendance à lisser (adoucir) les résultats.

Á titre historique et en conclusion, je vous fournis le lien du livre Practical Geostatistics (1979) de Isobel Clark, un de ceux avec lesquels j'ai abordé la géostatistique minière, et que l'auteur a gracieusement mis en ligne à http://www.kriging.com/pg1979_download.html


Site officiel : Aide-Mémoire de Géostatistique Linéaire de Pierre Chauvet (version pdf)
Autres Liens : Géostatistique dans « Bibliographie en géomatique » sur le Portail SIG


Creative Commons License
licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Pas de Modification 2.0 France

Commentaires

Poster un nouveau commentaire

Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.