Solutions libres alternatives à Google Maps

Solutions libres alternatives à Google Maps

Déjeuner cartographique autour des alternatives et solutions open source à Google Maps.

http://makina-corpus.com/expertise/cartographie

A746319cbfd0236a4d0548e7d1fc1983?s=128

Makina Corpus

February 09, 2012
Tweet

Transcript

  1. Les alternatives libres à Google Maps Mathieu Leplatre @leplatrem www.makina-corpus.com

  2. Une longue liste d'utilisations interdites * mode déconnecté, embarqué *

    géocodage en masse * applications non ouvertes au public (e.g. intranet, extranet) * applications payantes * afficher de grandes cartes * suivre des flottes, des livraisons... ...
  3. Une longue liste d'utilisations interdites... et encore... * mettre les

    tuiles en cache * fournir des services de navigation * impressions commerciales * utilisation hors API * hors d'un navigateur * ...
  4. Des utilisations impossibles * maîtriser ce qu'affiche l'API * paramétrer

    les éléments affichés * définir un style complet * accéder aux données brutes (seulement à des images)
  5. De nombreuses limitations * erreurs difficiles voire impossible à corriger

    * usage payant si fort trafic * esthétique : des cartes trop vues * philosophie : des données propriétaires
  6. Principaux services de Google Maps * fonds de carte (tuiles)

    * visionneuse interactive (API javascript) * publication aisée dans une page web * géocodage * itinéraires * cartes statiques
  7. Les solutions libres offrent les mêmes services Open source/Open data

    Google * fonds de carte (tuiles) ✔ ✔ * visionneuse interactive ✔ ✔ * publication web simple ✔ ✔ * cartes statiques ✔ ~ * géocodage ~ ✔ * itinéraires ~ ✔
  8. Les solutions libres sont plus souples Open source/Open data Google

    * choix des styles ✔ ~ * modification/correction ✔ ~ * impression de cartes ✔ * cartes en mode déconnecté ✔ * applications mobiles ✔ * ajout de tout type de données ✔ * choix des données visualisées ✔ * choix de la langue des tuiles ✔
  9. Google Maps a révolutionné les cartes interactives Il faut réutiliser

    les meilleurs principes
  10. Fonds de carte L'approche Google Maps : des compromis !

    * une seule projection : Mercator sphérique (900913,WGS 84) * une seule couche ! * du cache pour la rapidité →Rupture avec la plupart des portails Web SIG
  11. Les données OpenStreetMap * créé en 2004 (Absence données libres)

    * édition collaborative (cf. Wikipedia) * free tagging (~NoSQL) * données WGS 84 (GPS) * API REST (moult éditeurs)
  12. Serveur de tuiles OpenStreetMap nomstyle/z/x/y.png PostGIS Mapnik Apache + feuilles

    de style + mod_tile OSM scripts dump + diffs
  13. Serveur de tuiles Makina Corpus * autonomie (ex : utilisation

    commerciale) * styles personnalisés (ex : charte, filtres) * produits dérivés (ex : packs, application voyage) * mobile (ex : offline) * R&D (ex : outils BI) ... à l'écoute de vos besoins !
  14. Style par défaut - OpenStreetMap

  15. Style, contenu, langue, symboles... ... tout est paramétrable

  16. Style allégé – Makina Corpus

  17. Style MapQuest

  18. Visionneuse L'approche Google Maps : * rapidité (légèreté) * ergonomie

    (pan, molette) * simplicité ( sans arborescence) * compatibilité (navigateurs, mobiles) … quelles sont les solutions libres équivalentes ?
  19. OpenLayers (Metacarta, 2006) + très populaire + support protocoles OGC

    + gestion des projections + compatibilité - 1 Mo (!) - lenteur - tuiles chargées x8 - HTML généré archaïque - GeoExt :(
  20. Modest Maps JS (Stamen Design, 2011) + léger ( ~80

    ko) + ultra-rapide et robuste + support mobile - sans support vectoriel - sans interaction - une seule couche :)
  21. Leaflet (Cloudmade, 2011) + léger (100 ko) + API simplifiée

    (à-la GMaps) + mobile (multitouch+accel. sur iOS) + HTML5 Canvas (ex : 2M objets) + projections + CSS3 & Animations + compatible IE6 :) - Tuiles ou GeoJSON/WMS - édition : élémentaire
  22. Illustrations * Carte VéloToulouse : Leaflet + Mustache + YQL

    * Livetitude : Leaflet + HTML5 websockets * Gr@ce : Leaflet + HTML5 WebSQL et LocalStorage (offline)
  23. Comment publier ses données ? L'approche Google Maps : culture

    du Web * Consultation d'une carte comme une page web ! * Partage d'une carte comme une image * Survol des objets en Javascript ... en rupture avec la plupart des portails Web SIG
  24. Comment publier ses données ? L'approche privilégiée chez Makina Corpus

    GeoServer GeoExt OpenLayers GeoNetwork ~ Mo ~ Mo ~ Go Django* JQuery Leaflet + Mapnik ~ Mo ~ Ko ~ Ko
  25. Le projet MapBox (DevelopmentSeed, 2011) * Orienté communication (statique, OpenData)

    * TileMill (MSPaint des cartes) * Format MBTiles (SQLite) * Survol des objets en Javascript (UTF-Grid) * Wax (config., légende, tooltips) Une boite à outils flexibles, innovants … et audacieux !
  26. Illustrations * Publier un GeoJSON avec QGis et Leaflet *

    Fabriquer des tuiles avec TileMill * Afficher un fichier MBTiles avec django-mbtiles
  27. Conclusion * OpenStreetMap + OpenData * Éco-système libre riche et

    varié * Choix d'architecture décisifs
  28. Pour aller plus loin...

  29. Géocodage Geonames from geopy import geocoders gn = geocoders.GeoNames() gn.geocode('Mirail

    Toulouse') (u'Le Mirail, B3, FR', (43.5764114330089, 1.3945770263671875)) Nominatim $ curl "http://open.mapquestapi.com/nominatim/v1/search? format=json&q=Mirail%20Toulouse" [{"place_id":"697188","lat":"43.5763978","lon":"1.3916297", ... , ...}]
  30. Itinéraires * Open MapQuest http://open.mapquest.com * OpenRouteService http://www.openrouteservice.org * Yours

    http://www.yournavigation.org * Cloudmade http://maps.cloudmade.com Plus d'informations sur http://wiki.openstreetmap.org/wiki/Routing
  31. Street View ? * Do It Yourself streetview, FOSSGIS 2012,

    Germany http://www.diy-streetview.com
  32. Remplacer Google Maps par des solutions libres ? Est-ce bien

    raisonnable ?
  33. Pistes cyclables OSM Pistes cyclables Google

  34. None
  35. ... mais sûrement, la qualité ne peut pas être aussi

    bonne... ?
  36. Dans Google Maps : * la rue Alaric II est

    devenue une impasse
  37. dans Google Maps : * une société privée s'est installée

    dans la mairie * la pharmacie du Capitole n'est pas au bon angle de la place
  38. dans Google Maps : * la mairie remplace l'école maternelle

    Lakanal
  39. Google Maps : mélange le français et l'occitan

  40. Merci Mathieu Leplatre @leplatrem

  41. Les alternatives libres à Google Maps Mathieu Leplatre @leplatrem www.makina-corpus.com

  42. Une longue liste d'utilisations interdites * mode déconnecté, embarqué *

    géocodage en masse * applications non ouvertes au public (e.g. intranet, extranet) * applications payantes * afficher de grandes cartes * suivre des flottes, des livraisons... ... L'utilisation de Google Maps est gratuite mais elle est soumise à de très nombreuses restrictions décrites dans les conditions d'utilisation des services : http://www.google.com/intl/en_fr/help/terms_maps.html http://code.google.com/apis/maps/terms.html http://www.google.com/permissions/geoguidelines.html
  43. Une longue liste d'utilisations interdites... et encore... * mettre les

    tuiles en cache * fournir des services de navigation * impressions commerciales * utilisation hors API * hors d'un navigateur * ... Certaines restrictions sont levées dans la version Enterprise (> 100 k€, facturée en fonction des conditions de déploiement, d'accès...)
  44. Des utilisations impossibles * maîtriser ce qu'affiche l'API * paramétrer

    les éléments affichés * définir un style complet * accéder aux données brutes (seulement à des images) Google ne diffuse que des images dont le contenu n'est pas paramétrable. C'est Google qui choisit ce qui doit apparaître ou pas dans les images Les données ne sont pas accessibles : on ne peut pas choisir d'afficher toutes les boîtes aux lettres mais pas les stations services Le rendu n'est pas très finement paramétrable : il est possible d'altérer légèrement les routes, les transports publics, les cours d'eau, quelques points d'intérêts. Il n'est pas possible de choisir la largeur et la présence de chaque type de voies, de régler l'affichage suivant le niveau de zoom, de sélectionner des éléments individuels...
  45. De nombreuses limitations * erreurs difficiles voire impossible à corriger

    * usage payant si fort trafic * esthétique : des cartes trop vues * philosophie : des données propriétaires Risque de se voir imposer de la publicité tel qu'annoncé en octobre 2011 Google est maître chez lui : * les données contribuées par le public ne peuvent être récupérées * Google s'en réserve un usage illimité Google Maps est à l'opposé du mouvement Open Data. Les données sont propriétaires et inaccessibles individuellement.
  46. Principaux services de Google Maps * fonds de carte (tuiles)

    * visionneuse interactive (API javascript) * publication aisée dans une page web * géocodage * itinéraires * cartes statiques Rappel des principaux services et composants de Google Maps utilisés par les entreprises et les collectivités
  47. Les solutions libres offrent les mêmes services Open source/Open data

    Google * fonds de carte (tuiles) ✔ ✔ * visionneuse interactive ✔ ✔ * publication web simple ✔ ✔ * cartes statiques ✔ ~ * géocodage ~ ✔ * itinéraires ~ ✔ Les solutions libres offrent des services équivalents à ceux de Google Maps Solutions Libres : ce sont les logiciels libres et les données libres
  48. Les solutions libres sont plus souples Open source/Open data Google

    * choix des styles ✔ ~ * modification/correction ✔ ~ * impression de cartes ✔ * cartes en mode déconnecté ✔ * applications mobiles ✔ * ajout de tout type de données ✔ * choix des données visualisées ✔ * choix de la langue des tuiles ✔ Les solutions libres présentent de nombreux atouts supplémentaires car elles offrent plus de souplesse. L'imagination et les connaissances techniques sont les seules limites...
  49. Google Maps a révolutionné les cartes interactives Il faut réutiliser

    les meilleurs principes Google Maps : - tout le monde connaît et utilise - la mamie du Cantal aussi ! - au début du siècle, avant Google Maps (Maporama, Mappy, Localis...) ? On oublie vite, mais il fallait cliquer dans les coins ! Pour indiquer une adresse, il y avait un formulaire, au lieu d'un champ unique ! Pour zoomer, impossible d'utiliser la molette...
  50. Fonds de carte L'approche Google Maps : des compromis !

    * une seule projection : Mercator sphérique (900913,WGS 84) * une seule couche ! * du cache pour la rapidité →Rupture avec la plupart des portails Web SIG - la simplicité à base de compromis. - sur la précision : une projection universelle : … en France 15cm (vous allez me dire « Et les Lapons alors ? », … bonne raison pour chercher une alternative à Google Maps) - sur la quantité d'informations : une seule couche - sur la fraîcheur des infos : cache Portails web SIG : pas toujours la puissance de frappe de Google et ses 350k serveurs, mais que les contours des communes mettent 20 secondes à s'afficher, non !
  51. Les données OpenStreetMap * créé en 2004 (Absence données libres)

    * édition collaborative (cf. Wikipedia) * free tagging (~NoSQL) * données WGS 84 (GPS) * API REST (moult éditeurs) - Approche communautaire autour des données - Le free tagging permet de créer autant de types de données que souhaité (bornes à incendie, anneaux d'amarrage,nids de poules...) - Éditeurs lourds, Web, … : JOSM, Merkaartor, Potlatch...
  52. Serveur de tuiles OpenStreetMap nomstyle/z/x/y.png PostGIS Mapnik Apache + feuilles

    de style + mod_tile OSM scripts dump + diffs - Ces éléments décrivent une architecture minimaliste et masquent la complexité de la tâche : e.g. tuning PostGIS (données > 200 Go ) - Apache et mod_tile sollicitent Mapnik si besoin (cache disque sinon) - le script de mise à jour marque les tuiles « dirty » pour régénération lors d'une future demande
  53. Serveur de tuiles Makina Corpus * autonomie (ex : utilisation

    commerciale) * styles personnalisés (ex : charte, filtres) * produits dérivés (ex : packs, application voyage) * mobile (ex : offline) * R&D (ex : outils BI) ... à l'écoute de vos besoins ! Makina Corpus a construit son propre serveur de tuiles. Cela permet : - soulager les serveurs OSM, pas prévus pour utilisation commerciale - gérer des palettes de couleurs adaptées aux chartes graphiques - filtres sur les données dessinées - ex : packs de tuiles d'une zone sur demande - mobile : tuiles à insérer dans un LocalStorage
  54. Style par défaut - OpenStreetMap À partir des données d'OpenStreetMap,

    il est ainsi possible de créer des styles de cartes totalement différents... Le style par défaut du site http://www.openstreetmap.org/ est peu agréable mais présente beaucoup d'informations
  55. Style, contenu, langue, symboles... ... tout est paramétrable Les données

    d'OSM permettent de paramétrer chacun des éléments de la représentation : - style (couleur, largeur, visibilité...) - montrer/masquer les informations (bâtiments officiels, nom des entreprises, parking, points d'intérêt...) - langue - symboles : choix des pictogrammes, de leur taille - ... Cette souplesse permet de construire des cartes interactives s'adaptant aux besoins de l'utilisateur.
  56. Style allégé – Makina Corpus Makina Corpus crée des styles

    cartographiques adaptés à différents usage. Le style présenté est destiné à une carte multi-usage.
  57. Style MapQuest Il est possible de construire son propre style

    : c'est une opération longue requérant une connaissance approfondie des outils cartographiques et des compétences graphiques. Une solution plus simple est d'utiliser des tuiles existantes préparées par des prestataires comme Makina Corpus ou MapQuest Pour un coût supérieur des prestataires peuvent préparer des tuiles sur mesure (Makina Corpus, GeoFabrik, Developement Seed, CloudMade...)
  58. Visionneuse L'approche Google Maps : * rapidité (légèreté) * ergonomie

    (pan, molette) * simplicité ( sans arborescence) * compatibilité (navigateurs, mobiles) … quelles sont les solutions libres équivalentes ? Pour visualiser les tuiles, les pages web doivent comporter une visionneuse. Google Maps a révolutionné l'ergonomie des interactions avec les cartes en ligne.
  59. OpenLayers (Metacarta, 2006) + très populaire + support protocoles OGC

    + gestion des projections + compatibilité - 1 Mo (!) - lenteur - tuiles chargées x8 - HTML généré archaïque - GeoExt :( OpenLayers : - utilisé massivement chez Makina Corpus - nos formations OpenLayers ont beaucoup de succès > * cette bibliothèque est largement utilisée * elle est complexe - nos critiques émanent d'expériences concrètes, OL est souvent trop lourd (même après compression) ! Il est bien sûr possible de réduire la taille de la biliothèque. Il existe même des outils automatiques pour cela (eg http://openlayerer.appspot.com/) mais attention à la gestion des dépendances ! Le résultat est parfois inutilisable.
  60. Modest Maps JS (Stamen Design, 2011) + léger ( ~80

    ko) + ultra-rapide et robuste + support mobile - sans support vectoriel - sans interaction - une seule couche :) Modest Maps (modestmaps.js) : - l’extrême inverse ! - ultra-léger (19 ko gzippé) - code minimaliste donc robuste - sans interaction : même pas de bouton pour zoomer ! Juste une API et des évènements ! ne fait rien ! … mais le fait bien !
  61. Leaflet (Cloudmade, 2011) + léger (100 ko) + API simplifiée

    (à-la GMaps) + mobile (multitouch+accel. sur iOS) + HTML5 Canvas (ex : 2M objets) + projections + CSS3 & Animations + compatible IE6 :) - Tuiles ou GeoJSON/WMS - édition : élémentaire - meilleur compromis - HTML5 Canvas : 2 millions d'objets vectoriels côté client JS : http://www.giscloud.com/blog/gis-cloud-starts-html5-mapping-revolution rendu complet de données brutes : http://kothic.org/js/ Attention à la charge CPU ( ~batterie sur mobiles) - interactions édition basiques mais simples à coder –> modèle objet clair. Ex : éditeur de lignes en une vingtaine de LOC Également présents : tile5 (canvas), polymaps (SVG)
  62. Illustrations * Carte VéloToulouse : Leaflet + Mustache + YQL

    * Livetitude : Leaflet + HTML5 websockets * Gr@ce : Leaflet + HTML5 WebSQL et LocalStorage (offline) Démonstrations réalisées lors de la présentation : Carte vélo Toulouse : http://www.makina-corpus.org/blog/carte-des-v%C3%A9los-avec-leafl Livetitude : https://github.com/makinacorpus/livetitude Demo chez Heroku : http://vivid-warrior-6693.herokuapp.com/ http://www.makina-corpus.org/blog/des-cartes-collaboratives-avec-live Livetitude permet de positionner des informations sur des cartes de manière collaborative en temps réel, de les exporter au format GeoJSON, de publier la carte sur une page Web... Leaflet offline storage (en développement) : https://github.com/CloudMade/Leaflet/issues/68#issuecomment-29733
  63. Comment publier ses données ? L'approche Google Maps : culture

    du Web * Consultation d'une carte comme une page web ! * Partage d'une carte comme une image * Survol des objets en Javascript ... en rupture avec la plupart des portails Web SIG La publication de données spatiales sur Internet est devenue extrêmement simple.
  64. Comment publier ses données ? L'approche privilégiée chez Makina Corpus

    GeoServer GeoExt OpenLayers GeoNetwork ~ Mo ~ Mo ~ Go Django* JQuery Leaflet + Mapnik ~ Mo ~ Ko ~ Ko - Approche OGC : seulement si adaptée ou nécessaire (e.g. directive INSPIRE) C'est une approche qui fonctionne et a fait ses preuves - Problèmes : - difficile à adapter aux besoins métier : météo (altitude), océanographie (sous-marin), géologie (sous-sol) - lourdeur Approche privilégiée par Makina Corpus : utiliser des composants léger adaptés au développement des besoins métier, et visualiser avec des outils du monde du Web (jQuery) * Django, Pyramid voire Drupal ou Plone suivant les besoins
  65. Le projet MapBox (DevelopmentSeed, 2011) * Orienté communication (statique, OpenData)

    * TileMill (MSPaint des cartes) * Format MBTiles (SQLite) * Survol des objets en Javascript (UTF-Grid) * Wax (config., légende, tooltips) Une boite à outils flexibles, innovants … et audacieux ! Comment fonctionne les UTF-Grid ? http://mapbox.com/mbtiles-spec/utfgrid/
  66. Illustrations * Publier un GeoJSON avec QGis et Leaflet *

    Fabriquer des tuiles avec TileMill * Afficher un fichier MBTiles avec django-mbtiles Démonstrations réalisées lors de la présentation : Django-mbtiles : https://github.com/makinacorpus/django-mbtiles La gestion de tuiles cartographiques dans Django fera l'objet d'une conférence Makina Corpus lors des prochaines rencontres Django 2012 : http://rencontres.django-fr.org/2012/conferences.html#c4
  67. Conclusion * OpenStreetMap + OpenData * Éco-système libre riche et

    varié * Choix d'architecture décisifs Remplacer Google Maps est possible. On gagne au passage de la flexibilité, de la richesse et de la puissance. Surtout, c'est un choix en phase avec l'ouverture des données et le mouvement OpenData.
  68. Pour aller plus loin...

  69. Géocodage Geonames from geopy import geocoders gn = geocoders.GeoNames() gn.geocode('Mirail

    Toulouse') (u'Le Mirail, B3, FR', (43.5764114330089, 1.3945770263671875)) Nominatim $ curl "http://open.mapquestapi.com/nominatim/v1/search? format=json&q=Mirail%20Toulouse" [{"place_id":"697188","lat":"43.5763978","lon":"1.3916297", ... , ...}] Plusieurs solutions existent pour le géocodage à partir de données libres. Open MapQuest est la plus aboutie.
  70. Itinéraires * Open MapQuest http://open.mapquest.com * OpenRouteService http://www.openrouteservice.org * Yours

    http://www.yournavigation.org * Cloudmade http://maps.cloudmade.com Plus d'informations sur http://wiki.openstreetmap.org/wiki/Routing
  71. Street View ? * Do It Yourself streetview, FOSSGIS 2012,

    Germany http://www.diy-streetview.com Il n'y a pas encore d'équivalent libre de Street View. DIY streetview http://www.diy-streetview.com semble actif OpenView http://openviewproject.org/ est en sommeil
  72. Remplacer Google Maps par des solutions libres ? Est-ce bien

    raisonnable ? Les solutions techniques et les données existent. Est-il cependant concevable de se passer de Google Maps en utilisant des logiciels et des données libres ?
  73. Pistes cyclables OSM Pistes cyclables Google Les applications et les

    cartes spécialisées sont plus faciles à réaliser. Comparer ici les données sur les pistes cyclables dans OpenStreetMap et dans Google Maps. (vue de Toulouse, le 06/02/2012)
  74. OpenStreetMap permet d'enregistrer des données de toute nature comme l'accessibilité

    en fauteuil. Il devient possible de produire des cartes et des outils spécialisés.
  75. ... mais sûrement, la qualité ne peut pas être aussi

    bonne... ? Une bande d'amateurs peut-elle vraiment produire des données plus efficacement que le géant Google ? En Europe, les données OpenStreetMap sont beaucoup plus riches, variées et souvent de meilleure qualité que celle de Google Maps Une bonne partie des amateurs contribuant à OpenStreetMap sont aussi des professionnels qualifiés (SIG, urbanistes, développeurs informatiques...) Les contributeurs sont nombreux (> 500 000) et motivés Des entités publiques et privées contribuent leur données (cadastre, ville de Brest, ville de Toulouse...)
  76. Dans Google Maps : * la rue Alaric II est

    devenue une impasse Il est fréquent de trouver des erreurs dans les jeux de données de Google Maps (capture de Toulouse, le 06/02/2012) Loin de nous l'idée de dire qu'OpenStreetMap est parfait. Nous tenons simplement à souligner dans les diapos suivantes qu'il est aisé de trouver des erreurs dans la solution qui domine aujourd'hui le marché. Si vous trouvez des erreurs ou surtout des omissions dans OSM, nous vous encourageons à les corriger vous-même sur http://www.openstreetmap.org/
  77. dans Google Maps : * une société privée s'est installée

    dans la mairie * la pharmacie du Capitole n'est pas au bon angle de la place (capture de Toulouse, le 06/02/2012)
  78. dans Google Maps : * la mairie remplace l'école maternelle

    Lakanal (capture de Toulouse, le 06/02/2012)
  79. Google Maps : mélange le français et l'occitan Google Maps

    a fréquemment des problèmes avec les noms propres et les langues L'avantage d'OpenStreetMap est que la collecte des informations est généralement faite par des autochtones...
  80. Merci Mathieu Leplatre @leplatrem