Tout d’abord, la date: on est le 26 juin 2019.
J’ai eu des problèmes pour installer le plugin HotSpot Analysis et le plus dur quand on cherche sur le net c’est qu’on tombe pelle mêle sur des solutions du mois dernier et d’il y a 10 ans. Mais il faut un travail de détective pour savoir de quand elles datent.
Donc, si vous êtes en 2025, il est fort probable que les solutions que je propose dans cet article ne soient plus les bonnes…
Le plugin HotSpot Analysis est une bonne alternative pour la cartographie d’auto-correlations spatiales. Par contre, il souffre, actuellement d’un manque de « finition » dans son processus d’installation et d’un petit retard de maintenance.
Installation dans QGis 3.8
Si vous allez dans la fenêtre d’installation des extensions, lisez bien le texte:
Ce n’est pas comme d’habitude, un clic sur Installer l’extension et puis c’est prêt.
Il faut commencer par vérifier si vous avez déjà le paquet PySal dans votre installation Python. Si ce n’est pas le cas, il faudra l’installer avant d’installer le plugin HotSpot Analysis.
Pour savoir si PySal est Installé, ouvrez la console Python (Extension->Console Python)
Tapez après >>> import pysal
Si vous n’avez pas de message d’erreur, le paquet est installé. Si non, vous aurez:
Installer un paquet Python pour QGis
Fermez QGis. L’installation doit se faire en dehors. Dans la fenêtre de programmes, sous la rubrique QGis vous trouverez le programme OSGeo4W Shell.
Ce programme ouvre une fenêtre de commandes. Il faut l’exécuter en tant qu’administrateur, donc, cliquez droit sur le OSGeo4W Shell->plus->Ouvrir l’emplacement du fichier
Clic droit sur le nom du fichier->Exécuter en tant qu’administrateur
Si c’est la première fois que vous installez un paquet il se peut que la commande pip, nécessaire pour l’installation, ne soit pas déjà installée .
Pour l’installer tapez:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
puis:
python get-pip.py
On peut maintenant installer le paquet pysal dans votre installation Python:
pip install pysal
Mais ce n’est pas tout, il faut aussi installer pysal dans l’environnement Python3 pour pouvoir l’utiliser.
Tapez:
py3_env
pour passer dans l’environnement PYthon3, puis:
pip install pysal
Fermez la fenêtre de commande et relancez QGis. On va vérifier si l’installation du paquet s’est bien passée ou s’il faut la réinstaller avec certaines options.
Ouvrez la fenêtre de console Python et tapez
>>>import pysal
S’il n’y a pas d’erreur, vous avez fini. Par contre s’il y a toujours la même erreur il faut réinstaller le paquet:
Ouvrez la fenêtre Shell comme décrit ci-dessus et rentrez, une à une les lignes suivantes, en répondant « Y » à la question posée:
python get-pip.py
pip uninstall pysal
pip install –no-cache-dir pysal
py3_env
pip uninstall pysal
pip install –no-cache-dir pysal
Fermez la fenêtre de Shell et relancez QGis. cette fois le paquet pysal devrait être chargé sans erreur.
Installation du plugin
Une fois que vous aurez cliqué sur Installer le plugin , vous aurez la mauvaise surprise d’avoir un message d’erreur, du type:
Ceci est du au fait que la bibliothèque pysal a subi des modifications est que les concepteurs du plugin ne l’ont pas encore mis à jour.
Si vous ne l’avez pas, c’est qu’ils ont mis à jour le plugin.
Pour l’instant, il faut utiliser une solution de contournement un peu fastidieuse.
Il faut modifier le fichier hotspot_analysis.py
situé dans le répertoire C:\Users\USER\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\HotspotAnalysis
Il faut remplacer une série de lignes de code. (Le numéro de ligne ici n’est pas forcément le même que celui de votre installation)
Line 39 from pysal.esda.getisord import *
Line 40 from pysal.esda.moran import *
Line 41 from pysal.weights.Distance import DistanceBand
.
Line 472 thresh = pysal.min_threshold_dist_from_shapefile(path)
.
Line 600 moran = pysal.Moran(y, w)
.
Line 608 w = pysal.knnW_from_shapefile(layerName.split("|")[0], k=weightValue, p=1)
.
Line 613 w = pysal.queen_from_shapefile(layerName.split("|")[0])
Les trois premières lignes doivent être remplacées par:
from pysal.explore.esda.getisord import *
from pysal.explore.esda.moran import *
from pysal.lib.weights import DistanceBand, Queen, KNN, user
La ligne ~472 par
thresh = user.min_threshold_dist_from_shapefile(path)
La ligne ~600 par
moran = Moran(y, w)
La ligne ~608 par
w = KNN.from_shapefile(layerName.split("|")[0], k=weightValue, p=1)
Et enfin la ligne ~613 par
w = Queen.from_shapefile(layerName.split("|")[0])
Redemarrez QGis.
Allez dans Vecteur->HotSpot Analysis et vous verrez enfin apparaître la fenêtre du plugin. N’oubliez pas de charger une couche de points avec un attribut numérique, si non la fenêtre ne s’ouvre pas, sans afficher aucun message…
Pour galérer un peu moins on peut filtrer les dates des pages cherchées sur son moteur favori, par exemple sur https://www.startpage.com, cliquer sur « Date indifférente » et replacer par « Moins d’un an ». Ça ne va pas tout filtrer car bien des pages sont dynamiques mais ça peut aider