Vocabulaire autour de la géolocalisation : LBA, geofencing…


Je vous propose un article sur le vocabulaire et les concepts qui tournent autour de la géolocalisation.
Commençons par les LBA et LBS.

Location based applications

Les LBA sont des applications, le plus souvent sur smartphone, qui ont pour fonctionnalité principale de géolocaliser l’utilisateur et de réagir en fonction.
Ca peut être de lui afficher de la publicité contextuelle, de localiser ses proches ou ses contacts (et réciproquement), d’alerter en fonction de paramètres pré-établis ou même de transmettre des alertes de sécurités civiles afin de sauver des vies.

On parle aussi de LBS : location based services. C’est la même chose, mais en services.

Ces services sont souvent basés sur le concept de geofencing.

Qu’est-ce que le geofencing ?

Le geofencing, c’est la surveillance de la géolocalisation d’un utilisateur afin de déclencher une action lors :

  • de l’entrée dans une zone
  • de la sortie d’une zone
  • de rester un certain temps dans une zone
  • de se rapprocher de quelqu’un d’autre (zone circulaire qui peut être elle même en mouvement)
  • de s’éloigner de quelqu’un d’autre (zone circulaire qui peut être elle même en mouvement)
  • de rester proche de quelqu’un d’autre pendant un certain temps, éventuellement en se déplaçant avec lui

Geofencing

Une zone est appelée geofence. Ca peut être simplement un cercle avec un centre et un rayon, par exemple 300m.
Ca peut aussi être n’importe quelle forme, rectangle, triangle, polygone et surtout des formes plus complexes délimitant une rue, un quartier, une ville, un département, un pays, etc…
Ces zones complexes sont souvent décrites soit au format kml (Wikipedia anglais et Wikipedia français), soit au format geojson (Wikipedia en anglais car plus complet).

Geofences

Ex : paramétrage des geofences (zones) en back-office

geotrigger

Résultats dans l’application suite aux déplacements ayant déclenchés plusieurs alertes ou messages

Voici un article présentant le geofencing du point de vue smartphone Android ou iOS avec l’implémentation qui en est faite dans les OS :

Qu’est-ce que le geofencing ? (applidium.com)

En fait, on peut tout à fait en faire une autre implémentation, par exemple le SDK proposé ici :

A powerful platform for location based applications (developers.geoloqi.com)

Du point de vue marketing

Du point de vue marketing, l’usage principale est le « drive to store« . C’est à dire profiter que la personne est à proximité pour lui proposer un « bon plan » afin de l’inciter à rentrer dans le magasin, quitte à ce qu’elle fasse un détour.
L’objectif est plutôt de déclencher un achat d’impulsion, mais pas que, ça peut être aussi d’annoncer une happy hour exceptionnelle afin d’inciter les clients potentiels à venir profiter d’une heure creuse.

Un lien expliquant cela :

Geofencing : le bras armé du drive to store

Et aussi un livre sur le sujet :

Tout Savoir Sur : La Geolocalisation, nouvelle arme des marketeurs

Tout Savoir Sur : La Geolocalisation, nouvelle arme des marketeurs (Amazon)

Une fois dans le magasin, on peut aller plus loin en faisant du geofencing indoor (à l’intérieur).
Pour ça, il y a différentes technologies, la plus simple étant basée sur les iBeacons.

Qu’est ce qu’un iBeacon ?

Les iBeacons sont des petits émetteurs qui utilisent le protocole Bluetooth LE (Low Energy) que l’on place où l’on veut et dont on paramètre la portée du signal de 1 à 8m.

beacon
Ils émettent de manière régulière un identifiant découpé en trois partie :

  • UUID
  • major id
  • minor id

Il faut garder en tête que l’unicité n’est pas garantie vu que certains modèles d’iBeacons permettent de paramétrer les valeurs que l’on souhaite et donc on peut tomber par hasard ou volontairement sur les valeurs du voisin.
Le smartphone va être à l’écoute de tous les iBeacons qui portent le même UUID et c’est avec l’identifiant complet qu’il pourra déduire sa position exacte et l’action qu’il doit faire en conséquence.
La difficulté en indoor étant souvent le manque de réseau, l’application sur smartphone devra gérer l’aspect offline en ayant précharger la liste des iBeacons qu’elle pourra potentiellement rencontrer et les actions associées.
Si une action consiste à faire du tracking, la position devra être bufferisée en attendant de retrouver du réseau et de communiquer avec les serveurs.

Qu’est-ce que le tracking ?

Le tracking consiste à enregistrer les positions à intervalle plus ou moins régulier ou non, en fonction de :

  • smartphone en déplacement ou immobile
  • smartphone en charge (sur secteur ou batterie externe, notamment dans un véhicule) ou non (batterie limitée)

Ces critères servent à optimiser le tracking en préservant au mieux la batterie du smartphone.
L’objectif du tracking est de retracer le parcours ultérieurement ou en temps réel pour l’utilisateur lui même ou une tierce personne, par exemple son patron.
On peut par exemple gérer une flotte de travailleurs mobiles (livreurs, chauffeurs de taxi, etc…) et leur assigner des missions en optimisant la logistique.

Tracking

Geocoding et reverse geocoding

Viennent maintenant les concepts de geocoding et reverse geocoding quasi indispensables.
Ce sont des services en ligne qui :

  • pour le geocoding, donne les coordonnées GPS d’une adresse passée en paramètre. Exemple : pouvoir la situer sur une carte
  • pour le reverse geocoding, donne l’adresse postale correspondant aux coordonnées GPS passé en paramètre. Exemple : pouvoir afficher une localisation lisible par un humain

Ces services en ligne sont souvent payant. Ceux de Google sont limités en nombre de requêtes gratuites avant de devenir payant.

BAN

Pour le périmètre restreint de la France, on peut utiliser la BAN : Base Adresse Nationale contenant la position géographique de 25 millions d’adresses postal sur le territoire français. Cette base permet de faire du géocoding, du géocoding inverse ainsi que de vérifier l’existence d’une adresse.
Elle est récente car a été inaugurée le 15/04/2015.
Cette base est téléchargeable sous forme de fichier sur le site adresse.data.gouv.fr en licence gratuite de repartage.

En licence ODbL, il y a le projet BANO (Base d’Adresses Nationale Ouverte) d’Openstreetmap, qui fait parti du collectif du BAN.
Cette base est moins complète car ne dispose que de 15.5 millions d’adresses mais ça évolue : openstreetmap.fr/bano

Un rendu graphique de la couverture de BANO : tile.openstreetmap.fr/~cquest/leaflet/bano.html

Pour faciliter son intégration, l’Etalab a développé en open source un projet basé sur le moteur d’index Elasticsearch qui permet les recherches : github.com/etalab/ban-geocode

Représentation sur une carte

Pour représenter des données sur une carte, il faut déjà avoir une API permettant d’afficher un fond de carte.
Les plus courantes sont :

L’avantage de l’API de Google, en plus d’être hyper connu, c’est le lien facile avec Street view (www.google.com/maps/streetview/).
Par contre Leaflet et ces nombreux plugins (leafletjs.com/plugins.html) est beaucoup plus riche en fonctionnalités facilement intégrables, permet d’utiliser de nombreuses sources de fonds de cartes gratuites ou non et permet également de gérer un nombre beaucoup plus important de markers simultanément à l’aide de plugins de clustering optimisés.

Un marker est une position sur une carte représentée par un picto. En voici quelques exemples :

map-markers

Un cluster est un autre picto pour signifier qu’il y a plusieurs markers au même endroit ou assez proche pour ce niveau de zoom.
En général, la couleur et la taille sont en fonction du nombre de markers qui ont été rassemblés.
Exemple :

map-clusters

Pour les fonds de carte utilisables via Leaflet par exemple, on retrouve ceux de Google Maps, donc on peut mixer les fonds de carte de Google, y compris la vue satellite, et les fonctionnalités de Leaflet, puis OpenStreetMap, l’IGN, MapQuest, Baidu, Here…
Il y en a plein, certaines stylisées, en noir et blanc ou bien avec les pistes cyclables, les reliefs, etc…
Il y a aussi des sources de layers qui viennent rajouter des informations en surcouche.

Un fond de carte Google Maps avec Leaflet

Ajouter un fond de carte IGN à Leaflet.js

Carte choroplèthe

On change de domaine avec les cartes choroplèthes, là il s’agit de colorer des zones d’une carte en fonction de données statistiques.
Exemple :

choroplèthe

Pour ce genre de représentation graphique, bien que possible avec Leaflet nottament, il est conseillé de se tourner vers la librairie d3.js pour plus d’interactivité : d3js.org
Exemple interactif : http://www.nytimes.com/interactive/2013/04/08/business/global/asia-map.html?_r=0

Un site pas mal du tout pour sélectionner une palette de couleur : colorbrewer2.org

Projection cartographique et système géodésique

Projection cartographiquehttps://fr.wikipedia.org/wiki/Projection_cartographique

Système géodésiquehttps://fr.wikipedia.org/wiki/Syst%C3%A8me_g%C3%A9od%C3%A9sique
Le plus courant étant le WGS 84 car c’est celui des GPS.

Il existe des formules pour passer des coordonnées d’un système de projection à un autre, mais c’est toujours des approximations avec un certains niveau d’erreur.

Index géospatiale

Côté serveur, on va vouloir stocker dans une base de données des documents ou autres informations contenant une position géographique.
Plusieurs outils open source le permettent grâce à leur gestion d’index géospatiale : Elasticsearch, MongoDB, Couchbase server, PostgreSQL

Pour mieux comprendre comment un index géospatiale fonctionne, il faut connaitre quelques concepts :

Voici un article sur la librairie Google S2 : http://blog.christianperone.com/2015/08/googles-s2-geometry-on-the-sphere-cells-and-hilbert-curve/
Extrait : It’s a quadtree projected onto the unit sphere, plus using the Hilbert curve for a fast mapping between integer indices and cells.
Librairie en C++ de Google S2 : https://code.google.com/p/s2-geometry-library/
Portage en Python : https://github.com/qedus/sphere

Il y a évidemment d’autres algorithmes possibles.

Conclusion

Voilà, nous avons fait le tour des principaux concepts pour utiliser la géolocalisation dans une application.

Laissez un commentaire

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