{"id":27,"date":"2015-11-12T22:12:04","date_gmt":"2015-11-12T21:12:04","guid":{"rendered":"http:\/\/jacquescortes.fr\/blog\/?p=27"},"modified":"2015-11-13T11:09:15","modified_gmt":"2015-11-13T10:09:15","slug":"vocabulaire-autour-de-la-geolocalisation-lba-geofencing","status":"publish","type":"post","link":"http:\/\/www.jacquescortes.fr\/blog\/2015\/11\/vocabulaire-autour-de-la-geolocalisation-lba-geofencing\/","title":{"rendered":"Vocabulaire autour de la g\u00e9olocalisation : LBA, geofencing&#8230;"},"content":{"rendered":"<p>Je vous propose un article sur le vocabulaire et les concepts qui tournent autour de la g\u00e9olocalisation.<br \/>\nCommen\u00e7ons par les LBA et LBS.<\/p>\n<h1>Location based applications<\/h1>\n<p>Les <strong>LBA<\/strong> sont des applications, le plus souvent sur smartphone, qui ont pour fonctionnalit\u00e9 principale de g\u00e9olocaliser l&rsquo;utilisateur et de r\u00e9agir en fonction.<br \/>\nCa peut \u00eatre de lui afficher de la publicit\u00e9 contextuelle, de localiser ses proches ou ses contacts (et r\u00e9ciproquement), d&rsquo;alerter en fonction de param\u00e8tres pr\u00e9-\u00e9tablis ou m\u00eame de transmettre des alertes de s\u00e9curit\u00e9s civiles afin de sauver des vies.<\/p>\n<p>On parle aussi de <strong>LBS<\/strong> : location based services. C&rsquo;est la m\u00eame chose, mais en services.<\/p>\n<p>Ces services sont souvent bas\u00e9s sur le concept de <strong>geofencing<\/strong>.<\/p>\n<h1>Qu&rsquo;est-ce que le geofencing ?<\/h1>\n<p>Le geofencing, c&rsquo;est la surveillance de la g\u00e9olocalisation d&rsquo;un utilisateur afin de d\u00e9clencher une action lors :<\/p>\n<ul>\n<li>de l&rsquo;entr\u00e9e dans une zone<\/li>\n<li>de la sortie d&rsquo;une zone<\/li>\n<li>de rester un certain temps dans une zone<\/li>\n<li>de se rapprocher de quelqu&rsquo;un d&rsquo;autre (zone circulaire qui peut \u00eatre elle m\u00eame en mouvement)<\/li>\n<li>de s&rsquo;\u00e9loigner de quelqu&rsquo;un d&rsquo;autre (zone circulaire qui peut \u00eatre elle m\u00eame en mouvement)<\/li>\n<li>de rester proche de quelqu&rsquo;un d&rsquo;autre pendant un certain temps, \u00e9ventuellement en se d\u00e9pla\u00e7ant avec lui<\/li>\n<\/ul>\n<p><a href=\"http:\/\/jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/geofencing.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-30\" src=\"http:\/\/jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/geofencing-300x157.png\" alt=\"Geofencing\" width=\"508\" height=\"266\" srcset=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/geofencing-300x157.png 300w, http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/geofencing.png 413w\" sizes=\"auto, (max-width: 508px) 100vw, 508px\" \/><\/a><\/p>\n<p>Une zone est appel\u00e9e\u00a0<strong>geofence<\/strong>. Ca peut \u00eatre simplement un cercle avec un centre et un rayon, par exemple 300m.<br \/>\nCa peut aussi \u00eatre n&rsquo;importe quelle forme, rectangle, triangle, polygone et surtout des formes plus complexes d\u00e9limitant une rue, un quartier, une ville, un d\u00e9partement, un pays, etc&#8230;<br \/>\nCes zones complexes sont souvent d\u00e9crites soit au format <strong>kml<\/strong> (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Keyhole_Markup_Language\" target=\"_blank\">Wikipedia anglais<\/a>\u00a0et\u00a0<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Keyhole_Markup_Language\" target=\"_blank\">Wikipedia fran\u00e7ais<\/a>), soit au format <strong>geojson<\/strong> (<a href=\"https:\/\/en.wikipedia.org\/wiki\/GeoJSON\" target=\"_blank\">Wikipedia<\/a>\u00a0en anglais car plus complet).<\/p>\n<p><a href=\"http:\/\/jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/geofences.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-42 \" src=\"http:\/\/jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/geofences.jpg\" alt=\"Geofences\" width=\"612\" height=\"364\" srcset=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/geofences.jpg 900w, http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/geofences-300x178.jpg 300w\" sizes=\"auto, (max-width: 612px) 100vw, 612px\" \/><\/a><\/p>\n<p style=\"text-align: center;\">Ex : param\u00e9trage des geofences (zones) en back-office<\/p>\n<p><a href=\"http:\/\/jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/geotrigger.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43 \" src=\"http:\/\/jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/geotrigger.jpg\" alt=\"geotrigger\" width=\"613\" height=\"294\" srcset=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/geotrigger.jpg 900w, http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/geotrigger-300x144.jpg 300w\" sizes=\"auto, (max-width: 613px) 100vw, 613px\" \/><\/a><\/p>\n<p style=\"text-align: center;\">R\u00e9sultats dans l&rsquo;application suite aux d\u00e9placements ayant d\u00e9clench\u00e9s plusieurs alertes ou messages<\/p>\n<p>Voici un article pr\u00e9sentant le geofencing du point de vue smartphone Android ou iOS avec l&rsquo;impl\u00e9mentation qui en est faite dans les OS :<\/p>\n<p><a href=\"http:\/\/applidium.com\/news\/geofencing_kezako\/\" target=\"_blank\" class=\"broken_link\">Qu&rsquo;est-ce que le geofencing ? (applidium.com)<\/a><\/p>\n<p>En fait, on peut tout \u00e0 fait en faire une autre impl\u00e9mentation, par exemple le SDK propos\u00e9 ici :<\/p>\n<p><a href=\"https:\/\/developers.geoloqi.com\/\" target=\"_blank\">A powerful platform for location based applications (developers.geoloqi.com)<\/a><\/p>\n<h1>Du point de vue marketing<\/h1>\n<p>Du point de vue marketing, l&rsquo;usage principale est le \u00ab\u00a0<strong>drive to store<\/strong>\u00ab\u00a0. C&rsquo;est \u00e0 dire profiter que la personne est \u00e0 proximit\u00e9 pour lui proposer un \u00ab\u00a0bon plan\u00a0\u00bb afin de l&rsquo;inciter \u00e0 rentrer dans le magasin, quitte \u00e0 ce qu&rsquo;elle fasse un d\u00e9tour.<br \/>\nL&rsquo;objectif est plut\u00f4t de d\u00e9clencher un achat d&rsquo;impulsion, mais pas que, \u00e7a peut \u00eatre aussi d&rsquo;annoncer une happy hour exceptionnelle afin d&rsquo;inciter les clients potentiels \u00e0 venir profiter d&rsquo;une heure creuse.<\/p>\n<p>Un lien expliquant cela :<\/p>\n<p><a href=\"http:\/\/visionarymarketing.fr\/blog\/2014\/07\/geofencing\/\" target=\"_blank\" class=\"broken_link\">Geofencing : le bras arm\u00e9 du drive to store<\/a><\/p>\n<p>Et aussi un livre sur le sujet :<\/p>\n<p><a href=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/livre_geomarketing.jpg\" rel=\"attachment wp-att-33\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-33 size-medium\" src=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/livre_geomarketing-246x300.jpg\" alt=\"Tout Savoir Sur : La Geolocalisation, nouvelle arme des marketeurs\" width=\"246\" height=\"300\" srcset=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/livre_geomarketing-246x300.jpg 246w, http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/livre_geomarketing-300x366.jpg 300w, http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/livre_geomarketing.jpg 410w\" sizes=\"auto, (max-width: 246px) 100vw, 246px\" \/><\/a><\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.amazon.fr\/dp\/291886692X\" target=\"_blank\" class=\"broken_link\">Tout Savoir Sur : La Geolocalisation, nouvelle arme des marketeurs (Amazon)<\/a><\/p>\n<p>Une fois dans le magasin, on peut aller plus loin en faisant du <strong>geofencing indoor<\/strong> (\u00e0 l&rsquo;int\u00e9rieur).<br \/>\nPour \u00e7a, il y a diff\u00e9rentes technologies, la plus simple \u00e9tant bas\u00e9e sur les <strong>iBeacons<\/strong>.<\/p>\n<h1>Qu&rsquo;est ce qu&rsquo;un iBeacon ?<\/h1>\n<p>Les iBeacons sont des petits \u00e9metteurs qui utilisent le protocole\u00a0Bluetooth LE (Low\u00a0Energy) que l&rsquo;on place o\u00f9 l&rsquo;on veut et dont on param\u00e8tre la port\u00e9e du signal de 1 \u00e0 8m.<\/p>\n<p><a href=\"http:\/\/jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/beacon_section_no_logo.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-38\" src=\"http:\/\/jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/beacon_section_no_logo-300x175.png\" alt=\"beacon\" width=\"463\" height=\"270\" srcset=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/beacon_section_no_logo-300x175.png 300w, http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/beacon_section_no_logo-1024x597.png 1024w\" sizes=\"auto, (max-width: 463px) 100vw, 463px\" \/><\/a><br \/>\nIls \u00e9mettent de mani\u00e8re r\u00e9guli\u00e8re un identifiant d\u00e9coup\u00e9 en trois partie :<\/p>\n<ul>\n<li>UUID<\/li>\n<li>major id<\/li>\n<li>minor id<\/li>\n<\/ul>\n<p>Il faut garder en t\u00eate que l&rsquo;unicit\u00e9 n&rsquo;est pas garantie vu que certains\u00a0mod\u00e8les d&rsquo;iBeacons permettent de param\u00e9trer les valeurs que l&rsquo;on souhaite et donc on peut tomber par hasard ou volontairement sur les valeurs du voisin.<br \/>\nLe smartphone va \u00eatre \u00e0 l&rsquo;\u00e9coute de tous les iBeacons qui portent le m\u00eame UUID et c&rsquo;est avec l&rsquo;identifiant complet qu&rsquo;il pourra d\u00e9duire sa position exacte et l&rsquo;action qu&rsquo;il doit faire en cons\u00e9quence.<br \/>\nLa difficult\u00e9 en indoor \u00e9tant souvent le manque de r\u00e9seau, l&rsquo;application sur smartphone devra g\u00e9rer l&rsquo;aspect offline en ayant pr\u00e9charger la liste des iBeacons qu&rsquo;elle pourra potentiellement rencontrer et les actions associ\u00e9es.<br \/>\nSi une action consiste \u00e0 faire du <strong>tracking<\/strong>, la position devra \u00eatre bufferis\u00e9e en attendant de retrouver du r\u00e9seau et de communiquer avec les serveurs.<\/p>\n<h1>Qu&rsquo;est-ce que le tracking ?<\/h1>\n<p>Le tracking consiste \u00e0 enregistrer les positions \u00e0 intervalle plus ou moins r\u00e9gulier ou non, en fonction de :<\/p>\n<ul>\n<li>smartphone\u00a0en d\u00e9placement ou immobile<\/li>\n<li>smartphone en charge (sur secteur ou batterie externe, notamment dans un v\u00e9hicule) ou non (batterie limit\u00e9e)<\/li>\n<\/ul>\n<p>Ces crit\u00e8res servent \u00e0 optimiser le tracking en pr\u00e9servant au mieux la batterie du smartphone.<br \/>\nL&rsquo;objectif du tracking est de retracer le parcours ult\u00e9rieurement ou en temps r\u00e9el pour l&rsquo;utilisateur lui m\u00eame ou une tierce personne, par exemple son patron.<br \/>\nOn peut par exemple g\u00e9rer une flotte de travailleurs mobiles (livreurs, chauffeurs de taxi, etc&#8230;) et leur assigner des missions en optimisant la logistique.<\/p>\n<p><a href=\"http:\/\/jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/shipment-tracking-vehicle.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41\" src=\"http:\/\/jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/shipment-tracking-vehicle-300x124.jpg\" alt=\"Tracking\" width=\"433\" height=\"179\" srcset=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/shipment-tracking-vehicle-300x124.jpg 300w, http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/shipment-tracking-vehicle-1024x424.jpg 1024w, http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/shipment-tracking-vehicle.jpg 1600w\" sizes=\"auto, (max-width: 433px) 100vw, 433px\" \/><\/a><\/p>\n<h1>Geocoding et reverse geocoding<\/h1>\n<p>Viennent maintenant les concepts de geocoding et reverse geocoding quasi indispensables.<br \/>\nCe sont des services en ligne qui :<\/p>\n<ul>\n<li>pour le geocoding, donne les coordonn\u00e9es GPS d&rsquo;une adresse pass\u00e9e en param\u00e8tre. Exemple : pouvoir la situer sur une carte<\/li>\n<li>pour le reverse geocoding, donne l&rsquo;adresse postale correspondant aux coordonn\u00e9es GPS pass\u00e9 en param\u00e8tre. Exemple : pouvoir afficher une localisation lisible par un humain<\/li>\n<\/ul>\n<p>Ces services en ligne sont souvent payant. Ceux de Google sont limit\u00e9s en nombre de requ\u00eates gratuites avant de devenir payant.<\/p>\n<h1>BAN<\/h1>\n<p>Pour le p\u00e9rim\u00e8tre restreint de la France, on peut utiliser la <strong><a href=\"https:\/\/fr.wikipedia.org\/wiki\/Base_Adresse_Nationale\" target=\"_blank\">BAN<\/a><\/strong>\u00a0: Base Adresse Nationale contenant la position g\u00e9ographique de 25 millions d&rsquo;adresses postal sur le territoire fran\u00e7ais. Cette base permet de faire du g\u00e9ocoding, du g\u00e9ocoding inverse ainsi que de v\u00e9rifier l&rsquo;existence d&rsquo;une adresse.<br \/>\nElle est r\u00e9cente car a \u00e9t\u00e9 inaugur\u00e9e le 15\/04\/2015.<br \/>\nCette base est t\u00e9l\u00e9chargeable sous forme de fichier sur le site\u00a0<a href=\"https:\/\/adresse.data.gouv.fr\/\" target=\"_blank\">adresse.data.gouv.fr<\/a>\u00a0en licence gratuite de repartage.<\/p>\n<p>En licence ODbL, il y a le projet BANO (Base d&rsquo;Adresses Nationale Ouverte) d&rsquo;Openstreetmap, qui fait parti du collectif du BAN.<br \/>\nCette base est moins compl\u00e8te car ne dispose que de 15.5 millions d&rsquo;adresses mais \u00e7a \u00e9volue :\u00a0<a href=\"http:\/\/openstreetmap.fr\/bano\" target=\"_blank\" class=\"broken_link\">openstreetmap.fr\/bano<\/a><\/p>\n<p>Un rendu graphique de la couverture de BANO :\u00a0<a href=\"http:\/\/tile.openstreetmap.fr\/~cquest\/leaflet\/bano.html\" target=\"_blank\" class=\"broken_link\">tile.openstreetmap.fr\/~cquest\/leaflet\/bano.html<\/a><\/p>\n<p>Pour faciliter son int\u00e9gration, l&rsquo;Etalab a d\u00e9velopp\u00e9 en open source un projet bas\u00e9 sur le moteur d&rsquo;index Elasticsearch qui permet les recherches\u00a0:\u00a0<a href=\"https:\/\/github.com\/etalab\/ban-geocode\">github.com\/etalab\/ban-geocode<\/a><\/p>\n<h1>Repr\u00e9sentation sur une carte<\/h1>\n<p>Pour repr\u00e9senter des donn\u00e9es sur une carte, il faut d\u00e9j\u00e0 avoir une API permettant d&rsquo;afficher un fond de carte.<br \/>\nLes plus courantes sont :<\/p>\n<ul>\n<li>Google Maps APIs :\u00a0<a href=\"https:\/\/www.google.com\/intx\/en_uk\/work\/mapsearth\/products\/mapsapi.html\" target=\"_blank\">www.google.com\/intx\/en_uk\/work\/mapsearth\/products\/mapsapi.html<\/a><\/li>\n<li>Openlayers :\u00a0<a href=\"http:\/\/openlayers.org\/\" target=\"_blank\">openlayers.org<\/a><\/li>\n<li>Leaflet :\u00a0<a href=\"http:\/\/leafletjs.com\/\" target=\"_blank\">leafletjs.com<\/a><\/li>\n<\/ul>\n<p>L&rsquo;avantage de l&rsquo;API de Google, en plus d&rsquo;\u00eatre hyper connu, c&rsquo;est le lien facile avec Street view (<a href=\"https:\/\/www.google.com\/maps\/streetview\/\" target=\"_blank\">www.google.com\/maps\/streetview\/<\/a>).<br \/>\nPar contre Leaflet et ces nombreux plugins (<a href=\"http:\/\/leafletjs.com\/plugins.html\" target=\"_blank\">leafletjs.com\/plugins.html<\/a>) est beaucoup plus riche en fonctionnalit\u00e9s facilement int\u00e9grables, permet d&rsquo;utiliser de nombreuses sources de fonds de cartes gratuites ou non et permet \u00e9galement de g\u00e9rer un nombre beaucoup plus important de markers simultan\u00e9ment \u00e0 l&rsquo;aide de plugins de clustering optimis\u00e9s.<\/p>\n<p>Un <strong>marker<\/strong> est une position sur une carte repr\u00e9sent\u00e9e par un picto. En voici quelques exemples :<\/p>\n<p><a href=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/store-locator-plus-map-markers.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-61\" src=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/store-locator-plus-map-markers-300x138.png\" alt=\"map-markers\" width=\"424\" height=\"195\" srcset=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/store-locator-plus-map-markers-300x138.png 300w, http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/store-locator-plus-map-markers.png 600w\" sizes=\"auto, (max-width: 424px) 100vw, 424px\" \/><\/a><\/p>\n<p>Un <strong>cluster<\/strong> est un autre picto pour signifier qu&rsquo;il y a plusieurs markers au m\u00eame endroit ou assez proche pour ce niveau de zoom.<br \/>\nEn g\u00e9n\u00e9ral, la couleur et la taille sont en fonction du nombre de markers qui ont \u00e9t\u00e9 rassembl\u00e9s.<br \/>\nExemple :<\/p>\n<p><a href=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/sample-data-clustering-live-map.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-62\" src=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/sample-data-clustering-live-map-300x193.jpg\" alt=\"map-clusters\" width=\"388\" height=\"250\" srcset=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/sample-data-clustering-live-map-300x193.jpg 300w, http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/sample-data-clustering-live-map.jpg 436w\" sizes=\"auto, (max-width: 388px) 100vw, 388px\" \/><\/a><\/p>\n<p>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\u00e9s de Leaflet, puis OpenStreetMap, l&rsquo;IGN, MapQuest, Baidu, Here&#8230;<br \/>\nIl y en a plein, certaines stylis\u00e9es, en noir et blanc ou bien avec les pistes cyclables, les reliefs, etc&#8230;<br \/>\nIl y a aussi des sources de <strong>layers<\/strong> qui viennent rajouter des informations en surcouche.<\/p>\n<p><a href=\"http:\/\/blog.philippe-poisse.eu\/index.php?post\/2014\/07\/14\/Un-fond-de-carte-Google-Maps-avec-Leaflet\" target=\"_blank\">Un fond de carte Google Maps avec Leaflet<\/a><\/p>\n<p><a href=\"http:\/\/blog.la-trace.com\/ajouter-un-fond-de-carte-ign-a-leaflet-js\/\" target=\"_blank\" class=\"broken_link\">Ajouter un fond de carte IGN \u00e0 Leaflet.js<\/a><\/p>\n<h1>Carte choropl\u00e8the<\/h1>\n<p>On change de domaine avec les <strong><a href=\"https:\/\/fr.wikipedia.org\/wiki\/Carte_choropl%C3%A8the\" target=\"_blank\">cartes choropl\u00e8thes<\/a><\/strong>, l\u00e0 il s&rsquo;agit de colorer des zones d&rsquo;une carte en fonction de donn\u00e9es statistiques.<br \/>\nExemple :<\/p>\n<p><a href=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/chroplet.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-63\" src=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/chroplet-300x158.jpg\" alt=\"choropl\u00e8the\" width=\"513\" height=\"270\" srcset=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/chroplet-300x158.jpg 300w, http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/chroplet.jpg 800w\" sizes=\"auto, (max-width: 513px) 100vw, 513px\" \/><\/a><\/p>\n<p>Pour ce genre de repr\u00e9sentation graphique, bien que possible avec Leaflet nottament, il est conseill\u00e9 de se tourner vers la librairie d3.js pour plus d&rsquo;interactivit\u00e9 :\u00a0<a href=\"http:\/\/d3js.org\/\" target=\"_blank\">d3js.org<\/a><br \/>\nExemple interactif :\u00a0<a href=\"http:\/\/www.nytimes.com\/interactive\/2013\/04\/08\/business\/global\/asia-map.html?_r=0\" target=\"_blank\">http:\/\/www.nytimes.com\/interactive\/2013\/04\/08\/business\/global\/asia-map.html?_r=0<\/a><\/p>\n<p>Un site pas mal du tout pour s\u00e9lectionner une palette de couleur :\u00a0<a href=\"http:\/\/colorbrewer2.org\/\" target=\"_blank\">colorbrewer2.org<\/a><\/p>\n<h1>Projection cartographique et syst\u00e8me g\u00e9od\u00e9sique<\/h1>\n<p><strong>Projection cartographique<\/strong> :\u00a0<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Projection_cartographique\" target=\"_blank\">https:\/\/fr.wikipedia.org\/wiki\/Projection_cartographique<\/a><\/p>\n<p><strong>Syst\u00e8me g\u00e9od\u00e9sique<\/strong> :\u00a0<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Syst%C3%A8me_g%C3%A9od%C3%A9sique\" target=\"_blank\">https:\/\/fr.wikipedia.org\/wiki\/Syst%C3%A8me_g%C3%A9od%C3%A9sique<\/a><br \/>\nLe plus courant \u00e9tant le <a href=\"https:\/\/fr.wikipedia.org\/wiki\/WGS_84\" target=\"_blank\">WGS 84<\/a> car c&rsquo;est celui des GPS.<\/p>\n<p>Il existe des formules pour passer des coordonn\u00e9es d&rsquo;un syst\u00e8me de projection \u00e0 un autre, mais c&rsquo;est toujours des approximations avec un certains niveau d&rsquo;erreur.<\/p>\n<h1>Index g\u00e9ospatiale<\/h1>\n<p>C\u00f4t\u00e9 serveur, on va vouloir stocker dans une base de donn\u00e9es des documents ou autres informations contenant une position g\u00e9ographique.<br \/>\nPlusieurs outils open source le permettent gr\u00e2ce \u00e0 leur gestion d&rsquo;<strong>index g\u00e9ospatiale<\/strong> : <a href=\"https:\/\/www.elastic.co\/\">Elasticsearch<\/a>, <a href=\"https:\/\/www.mongodb.com\/\">MongoDB<\/a>, <a href=\"http:\/\/www.couchbase.com\/\">Couchbase server<\/a>, <a href=\"http:\/\/www.postgresql.org\/\">PostgreSQL<\/a>&#8230;<\/p>\n<p>Pour mieux comprendre comment un index g\u00e9ospatiale fonctionne, il faut connaitre quelques concepts :<\/p>\n<ul>\n<li>Le <strong>quadtree<\/strong> : <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Quadtree\" target=\"_blank\">https:\/\/fr.wikipedia.org\/wiki\/Quadtree<\/a><a href=\"https:\/\/fr.wikipedia.org\/wiki\/Quadtree\">https:\/\/fr.wikipedia.org\/wiki\/Quadtree<\/a><a href=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/quadtree.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-67\" src=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/quadtree.png\" alt=\"quadtree\" width=\"300\" height=\"300\" srcset=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/quadtree.png 300w, http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/quadtree-150x150.png 150w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/li>\n<li>La projection de deux\u00a0dimensions vers une seule comme celle de la <strong>courbe de Hilbert<\/strong> (Hilbert curves):\u00a0<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Courbe_de_Hilbert\" target=\"_blank\">https:\/\/fr.wikipedia.org\/wiki\/Courbe_de_Hilbert<\/a> ou en anglais :\u00a0<a href=\"http:\/\/datagenetics.com\/blog\/march22013\/index.html\" target=\"_blank\" class=\"broken_link\">http:\/\/datagenetics.com\/blog\/march22013\/index.html<\/a><a href=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/Hilbert_curve.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-66\" src=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/Hilbert_curve-300x194.png\" alt=\"Hilbert curve\" width=\"300\" height=\"194\" srcset=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/Hilbert_curve-300x194.png 300w, http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/11\/Hilbert_curve.png 544w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/li>\n<\/ul>\n<p>Voici un article sur la librairie Google S2 : <a href=\"http:\/\/blog.christianperone.com\/2015\/08\/googles-s2-geometry-on-the-sphere-cells-and-hilbert-curve\/\" target=\"_blank\">http:\/\/blog.christianperone.com\/2015\/08\/googles-s2-geometry-on-the-sphere-cells-and-hilbert-curve\/<\/a><br \/>\nExtrait : It\u2019s a quadtree projected onto the unit sphere, plus using the Hilbert curve for a fast mapping between integer indices and cells.<br \/>\nLibrairie en C++ de Google S2 : <a href=\"https:\/\/code.google.com\/p\/s2-geometry-library\/\" target=\"_blank\">https:\/\/code.google.com\/p\/s2-geometry-library\/<\/a><br \/>\nPortage en Python : <a href=\"https:\/\/github.com\/qedus\/sphere\" target=\"_blank\">https:\/\/github.com\/qedus\/sphere<\/a><\/p>\n<p>Il y a \u00e9videmment d&rsquo;autres algorithmes possibles.<\/p>\n<h1>Conclusion<\/h1>\n<p>Voil\u00e0, nous avons fait le tour des principaux concepts pour utiliser la g\u00e9olocalisation dans une application.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Je vous propose un article sur le vocabulaire et les concepts qui tournent autour de la g\u00e9olocalisation. Commen\u00e7ons par les LBA et LBS. Location based applications Les LBA sont des applications, le plus souvent sur smartphone, qui ont pour fonctionnalit\u00e9 principale de g\u00e9olocaliser l&rsquo;utilisateur et de r\u00e9agir en fonction. Ca peut \u00eatre de lui afficher [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":30,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"series":[],"class_list":{"0":"post-27","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-geospatiale","8":"czr-hentry"},"_links":{"self":[{"href":"http:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/posts\/27","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/comments?post=27"}],"version-history":[{"count":24,"href":"http:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/posts\/27\/revisions"}],"predecessor-version":[{"id":86,"href":"http:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/posts\/27\/revisions\/86"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/media\/30"}],"wp:attachment":[{"href":"http:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/media?parent=27"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/categories?post=27"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/tags?post=27"},{"taxonomy":"series","embeddable":true,"href":"http:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/series?post=27"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}