QGis 3.8, HotSpot Analysis Plugin et PySal

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 pourt pouvoir l’utiliser.

Tapez:

py3_env

pour passer dans l’environnement PYthon3, pui:

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 toujour 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…

Une réponse sur “QGis 3.8, HotSpot Analysis Plugin et PySal”

  1. 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

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *