Aller au contenu | Aller au menu | Aller à la recherche

MapFish c'est quoi exactement ?

Sur le blog de MapFish, Cédric Moullet, CTO chez CampToCamp, essaye de répondre à cette question, question apparemment récurrente. Je me permet de traduire son billet :

L'objectif de MapFish est de permettre la création d'applications de Web Mapping. D'accord mais MapFish c'est quoi exactement ?
MapFish est un framework logiciel. D'après wikipedia un framework peut être définit comme une structure conceptuelle utilisée pour résoudre et traiter des problèmes complexes. Les problèmes complexes dans le cas de MapFish sont les applications de Web Mapping. Un framework logiciel se définit comme une architecture ré-utilisable de conception logiciel. Un framework logiciel peut inclure des programmes de base, des bibliothèques de code, un langage de script, ou d'autres logiciels pour faciliter le développement et l'assemblage des différents composants d'un projet logiciel. Diverses parties du framework peuvent être exposé au travers d'API.
MapFish intègre un certain nombre de bibliothèques : ExtJS, OpenLayers, GeoExt, Tilecache, SQLAlchemy, Shapely, JTS. MapFish est le liant entre ces différentes bibliothèques. L'utilisation de ces bibliothèques reconnues offrent une grande souplesse de réalisation et permet de créer des applications très personnalisées.

Pour ceux qui ne connaissent pas les différentes bibliothèques présentent dans MapFish voici une présentation :

  • ExtJS est une bibliothèque JavaScript permettant de construire des applications Web interactives. C'est un élément non-spécifique au Web Mapping.
  • Openlayers est une bibliothèque JavaScript permettant d'intégrer des cartes dynamiques à une application Web.
  • GeoExt est une bibliothèque JavaScript fournissant les bases pour la création d'application de Web-Mapping et s'appuyant sur ExtJS et OpenLayers. GeoExt nécessite ExtJS et OpenLayers mais est distribué indépendemment des 2 autres bibliothèques.
  • TileCache est une bibliothèque Python fournissant un serveur WMS-C/TMS, Tile Mapping Service, qui peut être connecté à différents systèmes de cache et moteurs de rendu. Le cas le plus simple d'utilisation de TileCache nécessite seulement un accès en écriture à un disque, la possibilité d'exécuter des scripts CGI Python, et un service WMS que vous souhaitez mettre en cache.
  • SqlAlchemy est une bibliothèque Python fournissant une boîte à outil de manipulation SQL et de mapping d'objet-relationnel. C'est un élément non-spécifique au Web Mapping et qui permet de manipuler une base de données relationnelle avec un modèle objet.
  • Shapely est une bibliothèque Python permettant de manipuler et traiter des géométries spatiales 2D.
  • JTS alias JTS Topology Suite est une bibliothèque Java de fonctions et prédicats 2D.

Un exemple de liaison entre ces différentes bibliothèques est le protocole MapFish, qui permet de facilement lier les éléments clients et serveurs.

Mais MapFish ne fait pas que lier ces différentes bibliothèques, il ajoute des fonctionnalités comme :

  • les choroplets, côté clients, qui permet de faire des analyses cartographiques dynamiquement.
  • l'impression pdf, côté serveur, qui permet de produire un résultat "papier" de la vue de l'utilisateur.

En espérant que MapFish est plus clair pour vous!

Commentaires

1. Le vendredi 23 janvier 2009, 17:28 par guillaume

Donc si je comprends bien ExtJS est un composant de MapFish, de même que GeoExt qui s'appuie sur ExtJS tout en restant indépendant... Sans compter OpenLayers... Pas sûr que ce soit plus clair !
Pourquoi ne pas simplement indiquer que MapFish est un ensemble de modules permettant d'interconnecter OpenLayers, ExtJS et divers éléments serveur ?

2. Le lundi 26 janvier 2009, 18:11 par ReLuc

Ce n'est pas moi qui le dit...

MapFish intègre un certain nombre de bibliothèque OpenSource. Côté client : ExtJS, OpenLayers, GeoExt et des éléments spécifiques à MapFish. Côté serveur il y a des bibliothèques python et Java.

Et comme le dit Cédric Moullet, MapFish permet d'exploiter tout cela au sein d'une même solution.

3. Le vendredi 6 février 2009, 22:56 par Cédric Moullet

Merci René-Luc pour cette traduction !
Pour répondre à Guillaume (j'ose demander votre nom complet ?), le projet GeoExt vient de débuter et a permis de fédérer très rapidement bon nombre de personnes et d'entreprises (www.geoext.org/trac/geoex... autour d'OpenLayers et ExtJS. Vu que MapFish travaille depuis longtemps avec ces deux librairies, une certaine transition va avoir lieu vers GeoExt pour la partie client.
Côté serveur, outre Java et Python, on a également la possibilité de travailler avec du PHP ou du Ruby.

4. Le samedi 7 mars 2009, 17:21 par Eric Lemoine

Une réponse rapide à Guillaume : MapFish n'est pas seulement un moyen d'utiliser ensemble Ext et OpenLayers. Côté client, MapFish fournit des composants JavaScript : des composants non graphiques très en lien avec OpenLayers (héritant de OpenLayers.Control, OpenLayers.Strategy et OpenLayers.Protocol), et des composants graphiques utilisant Ext. Côté serveur, MapFish fournit une bibliothèque pour créer des cartes PDF, et un framework de développement Python basé sur Pylons (au même titre que GeoDjango). MapFish vise aussi à fournir des plugins (MapFish) aux frameworks web courants, il en existe déja un pour Rails, un pour Symfony est en courant de développement.