L’excellent blog GeoTribu diffuse la traduction en français du tutoriel GeoDjango. Sacré boulot, bravo !
Archive pour le mot-clef ‘GeoDjango’
Tutoriel GeoDjango en français
Vendredi 27 mars 2009GeoDjango, LE framework cartographique.
Samedi 10 janvier 2009J’en ai parlé dans le post précédent, mais pas de manière suffisamment détaillée pour satisfaire les curieux qui m’ont rappelé à l’ordre et soumis des questions diverses. Donc je vais essayer de me rattraper…
Qu’est-ce que GeoDjango ?
C’est une extension de Django (ça existe même en français) destinée à gérer les données géographique. OK, mais on n’avance pas là. Qu’est-ce que Django ? Un framework web en Python sous licence OpenSource BSD qui permet de structurer un site web au travers d’une structure Modele – Vue – Template très rapidement. Les modèles sont les tables de votre BD, mais en mode objet; les vues sont les actions et les manipulations diverses que vous voulez effectuer, et les templates sont des modèles de mise en page HTML destinés à présenter les résultats des vues. De plus, Django génère automatiquement un module d’administration des Modèles (des tables donc), qui permet facilement de CRUDer (lire, retrouver, mettre à jour, supprimer) le contenu de votre SI. Un peu comme PhpMyAdmin, mais en mieux !
A ceci, GeoDjango ajoute donc la dimension spatiale, tout comme PostGIS ajoute la dimension spatiale à PostgreSQL. Cela peut fonctionner avec PostgreSQL, MySQL ou Oracle, mais pour ces deux derniers toutes les fonctions ne sont pas encore intégrées (voir la table de compatibilité). Vous obtenez alors des tables spatiales référencées en tant que modèles, et manipuler les objets géométriques (intersection, union, extent, aire…). Ceci grâce au portage dans le code de GeoDjango des librairies bien connues GDAL et GEOS.
Depuis août 2008, GeoDjango fait partie intégrante de Django, tout en gardant sa propre doc et son wiki.
KiCéKiLaFé ?
Justin Bronn, qui va bientôt passer ses examens pour devenir District Attorney (procureur…). A l’occasion de la mise en place de son application Houston Crime Maps, il a choisi Django et y a progressivement intégré la dimension spatiale dont il avait besoin.
Et on peut voir ça où ?
Une petite application de démonstration est accessible ici. Elle a été construite par Dane Springmeyer, Josh Livni et Christopher Schmidt. Vous pouvez utiliser le login/passwd geo/geo pour vous connecter au module d’administration. Surprise, les données géographiques sont éditables grâce à l’intégration d’OpenLayers dans la page et de votre objet en mode vectoriel !
Sinon la présentation faite par Justin Bronn au Forum Texas GIS en octobre 2008 donne aussi quelques liens.
Ok, c’est beau, mais il y a de la doc ?
Oui, aussi. D’abord un tutoriel : http://geodjango.org/docs/tutorial.html#geographic-data
Un kit d’installation : http://geodjango.org/docs/install.html
Les spécificités des modèles GeoDjango (qui surclassent les modèles standard Django)
La DB-API, qui intègre les opérateurs spatiaux.
et plein d’autres trucs (sur GDAL, GEOS…)
et enfin, un groupe de discussion !
et sinon, tu en penses quoi ?
Je ne suis pas forcément très objectif, mais je suis un inconditionnel de Django en général et de GeoDjango en particulier. Ce que j’apprécie le plus est de pouvoir stocker les données géographiques sous PostGIS et de les manipuler ensuite pour les envoyer vers le client en GeoJSON par exemple après les avoir reprojetées ou simplifiées. Le GeoAdmin, et la capacité d’édition de la donnée qu’il apporte, même si elle est imparfaite, est aussi très agréable.
La prise en main n’est pas très difficile. Les tutoriels de Django et GeoDjango sont très accessibles, et la vitesse à laquelle on arrive à des résultats concrets donne vite envie d’aller plus loin.
Nouvelle année, nouvelles données INSEE
Dimanche 4 janvier 2009Si la nouvelle méthode de recensement de l’INSEE, qui procède désormais par échantillonnage, avait déjà permis d’avoir quelques estimations, l’année 2009 s’ouvre avec la publication des données légales de population pour 2006, qui remplacent donc celles vieillissantes de 1999. Ces données légales sont les seules valeurs officielles concernant la population des communes et des entités administratives d’un niveau supérieur.
Pour fêter ça, et parce que ce sont des données qui nous concernent tous, j’ai réalisé une petite application de cartographie dynamique desdits résultats, qui mérite quelques détails techniques.
La récupération des données.
Un petit script en python récupérant les différente synthèses départementales du site de l’INSEE et en extrayant le contenu utile m’a permis de constituer une table communale actualisé. Une jointure sur une table spatiale issue des données de Geosignal (que je remercie au passage pour le droit d’usage concédé gracieusement) , un petit tour sur les anciennes données INSEE (celles de 1999), et me voici avec une table complète : géométrie, code insee, pop1999 et pop2006. Un petit calcul (var = pop2006/pop1999 – 1), un autre (densite = pop2006 / (area(the_geom)/1000000)) et voilà deux autres colonnes, la variation de population communale entre 1999 et 2006, et la densité de chacune des communes en 2006.
La mise en ligne
Divers projets récents m’ont permis de constituer un back-office de publication utilisant GeoDjango, dans lequel j’ai donc injecté les données. Comme il intègre TileCache, les deux couches principales de l’application sont ainsi tuilées et cachées. Les autres (départements, villes, labels) non. Branchons là-dessus un bon client cartographique fait d’OpenLayers et d’ExtJS, et nous pouvons parcourir ce nouveau visage de la population française avec souplesse.
L’accès aux données
Un petit plus du client utilisé, et d’ExtJS en particulier, est sa capacité à accéder aux données attributaires en mode paginé. Un petit clic droit dans la liste des couches (notamment sur Densité ou Variation de population) ouvre un menu contextuel dans lequel l’item ‘Voir les données’ permet de lister l’ensemble des 36580 données communales par bloc de 10. Le tableau utilisé permet également de trier ou filtrer les données, ce qui est toujours pratique pour découvrir qui est la plus dense, qui a eu la plus forte variation…

Copie d'écran de l'application 'Recensement 2006'
Les petits soucis
Notre organisation administrative est complexe, et chaque année des communes fusionnent, se séparent ou disparaissent. Peu à la fois, mais à raison de 5 à 10 par an, ça peut faire beaucoup. Mon fond cartographique se base sur les communes de 1999, et je n’ai donc pu traiter correctement les données des communes ayant fusionnées avec d’autres (Lomme et Lille, Octeville et Cherbourg). Les variations et densités pour la ville ayant absorbé l’autre sont donc exagérées (la population 2006 de Lille est en fait la population de Lille et de Lomme, mais la carte ne l’affecte qu’à Lille et le calcul la compare avec la population 1999 de Lille seule). Mais sur le nombre, on est à moins de 1 pour 1000…
L’analyse
Contrairement aux résultats de 1999, qui faisaient apparaître une forte augmentation de la population dans les communes de première couronne (au contact de la ville centre), les résultats de 2006 montrent une stabilité de ces zones. Ce sont par contre les communes situées plus loin de la métropole qui voient leur population augmenter fortement. C’est vrai à Toulouse. C’est également visible à une autre échelle en région PACA, ou c’est tout l’arrière-pays qui voit la population augmenter tandis que le littoral stagne. C’est un peu la traduction spatiale et humaine de 7 ans de hausse continue des prix immobiliers, qui a sans cesse poussé les familles à aller plus loin, les rendant dès lors très sensibles au prix du carburant…
Littoralisation et métropolisation sont donc toujours très marquants, mais avec des expressions locales plus diffuses. Regardez Bordeaux aussi.
Intéressant aussi de constater la perte de population qui affecte la Champagne-Ardenne (sans ’s’ quand c’est la région !). C’est sans doute pourquoi le gouvernement songe à y envoyer les gens de l’INSEE…
Sinon, la France de 2006 compte 27187 communes de moins de 1000 habitants, soit près de 75 %.
Meilleurs voeux à tous !
D-DAY
Mardi 2 septembre 2008Deux événements majeurs aujourd’hui : la sortie de Chrome, navigateur créé par Google; mais aussi de la version finale de Django 1.0, dont David explique les nouveautés. Mais un peu de patience, l’un comme l’autre ne seront vraiment disponible que dans la soirée…
Certains durent d’autres pas…
Mardi 12 août 2008Phénomène assez inhabituel pour un projet quasi-institutionnel puisque sous couvert de l’OSGeo, le développement de MapBuilder vient d’être arrêté par son comité de pilotage. Les raisons invoquées sont d’une part l’aboutissement technique de la solution, désormais stable, complet et conforme aux standards; d’autre part la concurrence féroce livrée, bien involontairement, par OpenLayers, tant au niveau des utilisateurs que des développeurs. De ce que j’en constate, c’est aussi la fin d’un modèle de produit de webmapping, associant étroitement les environnements client et serveur. Comme Cartoweb, remplacé par le plus flexible MapFish (qui utilise également OpenLayers), MapBuilder était un produit tout en un, où un client spécifique communiquait avec un serveur idoine. Or, la diffusion des standards (WMS, WFS, mais aussi GeoRSS ou GeoJSON) exige du client que celui-ci soit indépendant d’une quelconque configuration serveur, pour peu que celui-ci puisse lui communiquer des flux répondant aux normes. MapFish client et MapFish serveur sont ainsi deux environnements complètement indépendants, même s’ils sont associés sous une même appellation.
De même, dans mes récents développements pour le Grand Toulouse, j’ai utilisé un framework Python (Django) sur le serveur (mais ça aurait pu être Symfony, enfin, presque…), et le même client que tout le monde, OpenLayers. L’intérêt d’OpenLayers, et la principale raison de son succès (voir aussi l’API du Géoportail…), est qu’il sait se faire oublier tout en pouvant intégrer une quantité de types de données impressionnante.
De ce fait, la récente intégration de GeoDjango dans la version principale de Django ouvre des perspectives plus qu’intéressantes. Outre le fait de pouvoir disposer du meilleur framework actuel (sans exagérer bien sûr, cf le lien plus haut), la possibilité ainsi offerte de manipuler (lire, interroger, croiser…) les données géographiques à partir d’un ORM est très séduisante car elle répond aux besoins du moment : stocker la donnée au meilleur format possible (PostGIS, what else ?) pour la diffuser sous quelque format que ce soit (XML, GML, GeoJSON, KML…) pour s’adapter à son contexte d’utilisation.