Un hotspot (point chaud en français)
désigne en cartographie une zone de concentration d’un phénomène social, économique,
biologique ou physique.
En géomarketing, on s’intéresse
par exemple aux hotspots de population : blocs d’immeubles ou quartier
d’habitat très dense et vertical. On identifie aussi les hotspots de richesse
(zones de concentration de hauts revenus résidentiels) ou encore les hotspots
d’attraction commerciale : limite de zones commerciales drainant des flux
liés à une forte densité de points de vente, etc.
Techniquement une carte de
hotspots est une couche de polygones : chacun délimite les frontières d’un
hotspot et les polygones ont un attribut qui hiérarchise l’importance de la
zone au regard du phénomène étudié. Lors de la restitution, il est souhaitable de
coupler une couche de hotspots avec une couche carte de chaleur (heatmap),
calculée sur la même base.
Après beaucoup d’errances sur ce
sujet, je pense que j’ai validé une méthode empirique acceptable pour la mise
au point d’une carte de hotspots à partir de fichier de points localisés. Si
les points sont correctement placés, la méthode dessine des contours de
concentrations réels qui s’affranchissent des zonages administratifs. Elle
fonctionne aussi très bien sur les bases de points volumineuses. Ce tutoriel en
quatre temps est destiné aux praticiens des données géo localisées familiers des
systèmes d’information géographique.
1/ Le fichier de points : la localisation des photos du site
Panoramio
Considérons l’exemple de
l’identification des zones à forte fréquentation touristique en France
métropolitaine. Notre beau pays regorge de zones d’intérêt touristique et il
n’existe pas de recensement, carte exhaustive de ces zones. Je vous propose de
la créer.
Pour cela, je dispose d’un
fichier de plus de deux millions de points : chaque point correspond aux
coordonnées géographiques d’une prise de vue photographique publiée sur Google Map
(via Panoramio). Les photos sont prises par de nombreux contributeurs touristes
et Panoramio fait un contrôle pour valider que la photo est pertinente pour
décrire un lieu. Les photos sont prises avec des appareils obligatoirement
équipés d’un système GPS. La localisation chargée sur Google/Panoramio est donc
très précise (< 5 mètres). Une API de Google/Panoramio permet d’extraire les
coordonnées géographiques de chaque photo sur tout ou partie de la planète. Le
fichier que j’exploite couvre la France métropolitaine et toutes ses zones
frontalières. Merci aux données massives (« bigdata ») : nous
disposons ainsi d’une source libre de grande qualité pour établir une carte des
hotspots de fréquentation touristique.
La localisation à Paris des photos chargées sous Panoramio, reflet brut
des zones touristiques
Chaque point bleu = coordonnée GPS d’une photographie
Je surligne à la main en rouge
les hotspots bien connus. On distingue au Sud-Ouest le château de Versailles, la
zone de La Défense (la Grande Arche attire des travailleurs et aussi beaucoup
de touristes), Montmartre, la Tour Eiffel, les Champs-Elysées, tout le centre
de Paris et la Seine avec le trajet des bateaux Mouches. Au Nord, la Cité des Sciences
et plus à l’Est, le cimetière du Père-Lachaise, qui accueille plus de 3 millions
de visiteurs par an, soit le cimetière le plus visité au monde. En zoomant un
peu plus sur ce cimetière, on trouve des concentrations inédites de photos sur la
tombe de Jim Morrison.
La localisation des photos prises au cimetière du Père-Lachaise (Paris
20°)
Cette source est donc vraiment
précise pour bien situer les lieux de fréquentation. Le parisien peut surligner
à la main les hotspots, mais on conviendra que c’est arbitraire et fastidieux à
généraliser sur un grand territoire !
2/ « rastérisation » des points avec une carte de chaleur
Passons donc à notre deuxième
point, la génération d’une carte de chaleur à partir des points photos. Il
s’agit d’une grille raster carroyée pour laquelle on attribue à chaque pixel
(carreau) une valeur de mesure correspondant à la densité de points photos dans
et autour du carreau. Pour une photo donnée de valeur 1, nous distribuons cette
valeur sur tous les carreaux avoisinants dans la limite d’un rayon fixé et à
raison inverse quartique de la distance du point au carreau. Ce calcul est fait
pour les 2 millions de points et il faut utiliser une bonne technologie. QGIS (version
2.10) fait très bien le travail. Ce logiciel est libre et il possède de très riches
et bons algorithmes pour générer des cartes de chaleurs et traiter les couches
rasters. Voici le lien
de téléchargement de QGIS.
Après chargement de notre couche
vectorielle de 2 millions de points photos, générons une grille de chaleur
raster (menu QGIS Raster + Carte de
chaleur) : fixons d’abord un rayon de calcul de 200 m (un rayon trop
étroit fait planter le soft). QGIS propose alors par défaut une grille à
carreaux trop macro ; il faut re-calibrer la dimension de la grille. Si le
système de projection est métrique, le redimensionnement est fait en mètres.
Mes données sont en projection long/lat EPSG 4326, je dimensionne mes carreaux
en degré. Ici je demande la création d’une grille raster format GeoTIFF de 10 551*16
880 carreaux, soient près de 180 millions de pixels avec un écartement de 0.001
degré de longitude et de latitude (soient en France des carreaux de 80m de
large et 160m de haut).
Le choix du rayon et de la taille des carreaux dépend du problème que l’on traite. Il faut choisir un rayon court pour des mesures avec impact fort de proximité ou si les frontières de hotspots sont très tranchées. Si le nombre et la densité de points est faible ou si l’on veut une vision macro de la mesure, il faut élargir le rayon et la taille des carreaux de la grille. La taille du rayon doit aussi être compatible, supérieure aux côtés du carreau de la grille.
Notez que vous pouvez intégrer des paramètres complémentaires pour la définition de la carte de chaleur : pondération des points par un indice d’attractivité ou de taille, ou encore variation du rayon de calcul selon la nature de vos points.
QGIS mouline seulement quelques minutes pour ce calcul. Par défaut, le style de la grille résultat s’affiche en noir et blanc
En allant dans les propriétés de
la couche, je définis un style d’affichage plus explicite pour cette couche
raster. Il y a quelques paramètres à changer : choisir un rendu avec
pseudo-couleur, choisir sa palette, puis recalculer les valeurs réelles minimum
et maximum de la grille, n’oubliez pas ensuite de classer en mode continu les
tranches de la palette de couleur, puis ajuster le nombre de classes et
manuellement les tranches. Ici, je ne voulais pas que des photos trop isolées
apparaissent dans le rendu de ma carte de chaleur, j’ai donc relevé le minimum
de la valeur affichable de la grille.
3/ Création de courbes de niveaux à partir de la grille raster
Attention : le rayon de 200 m est bien calé pour le rendu visuel de l’attraction. En revanche, il est trop court pour le calcul des hotspots. En effet, l’identification des courbes de niveaux s’appuie sur la grille et ne fonctionne pas dans ses trous. Une courbe de niveau relie les carreaux de même mesure. Si la grille est trop resserrée autour des points photos, une courbe de plus bas niveau risque de ne pas se refermer sur elle-même du fait de carreaux manquants. Pour cette raison, j’ai généré une deuxième grille similaire hormis le rayon que j’ai étendu à 500 mètres. Cette grille très (trop) lissée est exploitable uniquement pour la définition des courbes de niveau.
Pour calculer les courbes de
niveaux sur QGIS, rendez-vous sur le panel Raster+Extraction+Création
de contours. Il faut préciser le nom de la grille raster en entrée, le nom
du répertoire d’accueil du fichier vectoriel des contours en sortie, la
variable attribut (ici TourismS)
qui accueille le seuil de définition de chaque courbe de niveau.
Par défaut, QGIS propose la
création d’une série de courbes de niveaux basées sur la mesure de la grille
par pas de 10 entre les valeurs minimum et maximum de la grille. Notre grille
de photo a une très forte variabilité de mesure. Ce n’est pas adapté. L’outil
pré-génère une commande Gdal (outil libre de commandes SIG très puissant que
QGIS exploite abondamment). Rentrons en édition sur cette commande et modifions
le paramètre de définition des intervalles « –i 10.0 » en le remplaçant par une définition
d’intervalles fixes « -fl 10
50 200 500 1000 ». J’ai un peu tâtonné en regardant la
distribution de la mesure de la grille pour fixer ces seuils de 5 courbes de
niveau de fréquentation touristique. Je souhaitais définir 5 seuils « d’étoilage »
des niveaux de fréquentation et respecter la variance de la fréquentation. J’ai
appliqué une recette bien parisienne ; j’ai calé mes seuils sur la région
parisienne avec ses hotspots touristiques très importants et j’ai vérifié que
cela collait bien pour le reste du pays. D’autres démarches sont certainement
plus convaincantes…
J’ai donc demandé à QGIS de
lancer la commande :
gdal_contour
-a TourismS -fl 10 50 200 500 1000 10.0 "E:/0. PAUL RECUP/1.
data/PhotosPanoramio/FR_HotSpot_Photos.tif" "E:/0. PAUL RECUP/0. PaulTemporaire/1.
Dev/Tourisme/Fréquentation/FR_HotSpot_Contours"
J’obtiens 5 courbes de niveau et je leur applique un style catégorisé.
4/ « Polygonisation » des courbes de niveaux
Nous y sommes presque. Les
courbes de niveaux qui délimitent les hotspots sont des objets lignes. Or, les
requêtes cartographiques les plus courantes (inclusion, proximité…)
fonctionnent avec des polygones. Avec QGIS, on « polygonise » donc la
couche vecteurs de lignes de niveaux en allant sur Vecteur + Outil de géométrie + Lignes vers polygones. A l’affichage,
la couche stylée et polygonisée est la même que celle des contours lignes, mais
chaque Hotspot est désormais un objet polygone. Notons qu’un polygone de niveau
inférieur englobe la surface de tous les polygones hotspots de niveaux plus
élevés.
En fin de course, une série de
traitement de vérifications et de nettoyage des géométries des polygones
hotspots peut être nécessaire. Paris, par exemple est enserrée d’un très large
hotspot de bas niveau (mesure = 10) qui couvre quasiment toute la ville. Il est
vrai que la ville de Paris est une grande promenade touristique. Mais on peut
aussi considérer des seuils relatifs plus élevés pour la définition des
hotspots urbains et supprimer les hotspots de bas niveau qui couvrent un
territoire trop vaste. A chacun de valider la bonne cohérence de sa nouvelle
couche.
Voilà, c’est fait. Nous avons nos
hotspots de fréquentation touristique avec une grille conjointe de
compréhension de la géographie de l’intensité de la mesure. Il ne reste plus
qu’à publier cela sur le net, mais c’est une autre histoire (pas forcément
toujours simple) et que je ne vais pas développer ici.
Je vous remercie de m’avoir suivi
jusqu’ici, j’espère que vous êtes équipé pour adapter cette méthode empirique à
votre jeu de données points. Bonne session « hotspots ».