8
25 sep 2014

Ou comment se créer un Petit Robert de l’information géographique en 5 minutes et 3 clics.
Je vous présente un petit utilitaire sans prétention sinon d'être bien pratique pour la gestion de données.

DicoGIS - Animated demonstration

Présentation de l’outil

DicoGIS est un petit utilitaire qui produit un dictionnaire de données au format Excel 2003 (.xls). Disponible sous forme d’exécutable Windows (.exe) sans installation ou sous forme de script (voir les pré-requis) il peut donc s’utiliser directement sur une clé USB par exemple.

DicoGIS - Logo

Il est particulièrement utile dans certains cas de figure :

  • on vous refile une base de données fichiers ou PostGIS dans laquelle vous aimeriez savoir ce qu’il peut bien y avoir dedans ;
  • dans le cadre de votre travail ou d’un projet, vous souhaitez fournir facilement un dictionnaire des données fournies, que ce soit à vos collègues, partenaires ou clients.

J’ai commencé à le développer en complément de Metadator et je m’en sers aujourd’hui régulièrement, notamment pour réaliser un rapide audit des données et un support utile pour la conception des thésaurus internes dans la phase d’accompagnement des projets avec Isogeo.

Caractéristiques techniques

Côté développement

  • développé en Python 2.7.8 ;
  • librairie GDAL/OGR 1.11.0-2 ;
  • librairie python-excel/xlwt pour écrire les fichiers Excel 2003 (.xls) ;
  • librairie Tkinter / ttk pour l'interface graphique (par défaut avec Python sur Windows mais non incluse par défaut dans les distributions Debian) ;
  • librairie py2exe pour générer facilement l'exécutable Windows.

Le code est disponible sur GitHub en licence GPL 3, c’est-à-dire que chacun est tout à fait libre de réutiliser ou modifier le code.

Côté utilisation

Les formats pris en compte sont potentiellement tous ceux de GDAL et OGR mais pour l'instant voici ceux qui sont implémentés :

  • vecteurs : shapefile, tables MapInfo, GeoJSON, GML, KML
  • rasters : ECW, GeoTIFF, JPEG
  • bases de données "plates" (fichiers) : Esri File GDB
  • CAO : DXF (+ listing des DWG)
  • Documents cartos : Geospatial PDF

En mode script Python, c'est (a priori...) multiplateformes et a été testé sur:

  • Ubuntu 12/14.04
  • Windows 7/8.1
  • Mac OS X (merci à GIS Blog Fr)

DicoGIS est disponible en 3 langues (Français, Anglais et Espagnol) mais il est facile de personnaliser et/ou d'ajouter les traductions.

En ce qui concerne les performances, cela dépend surtout de la machine sur laquelle DicoGIS est lancé. De mon côté, le traitement met environ 30 secondes pour :

  • une quarantaine de vecteurs,
  • une dizaine de rasters ( qui pèsent environ 90 Mo au total),
  • 7 FileGDB contenant une soixantaine de vecteurs
  • et quelques DXF.

Comment l'utiliser

1. Télécharger la dernière version :

2. Dézipper et lancer DicoGIS.exe / le script DicoGIS.py

DicoGIS - Launch

3. Changer la langue au besoin

DicoGIS - Switch language

4.a Pour des données organisées en fichiers :

  1. Choisir le dossier parent : l’exploration commence et la barre de progression tourne jusqu’à la fin du listing
  2. Choisir les formats désirés

DicoGIS- Listing

4.b. Pour des données stockées dans une base PostgreSQL / PostGIS, c'est le même principe sauf qu'il faut entrer les paramètres de connexion :

 DicoGIS - Processing PostGIS

5. Lancer et attendre la fin du traitement : sauvegarder le fichier Excel généré.

DicoGIS - Processing files
6. Consulter le fichier en sortie et le fichier DicoGIS.log (dans lequel il y a un paquet d'informations ^^).

Et au final, quelles informations sur quels formats

En sortie, vous obtenez un fichier Excel (2003 = .xls) dans lequel les métadonnées sont organisées en différents onglets correspondant au type de donnée. J'ai fait une matrice des informations disponibles selon le format.

A venir (ou pas)

Voici les quelques évolutions que j'envisage, mais vu que je ne suis pas mère Thérésa, que j'ai pas non plus beaucoup de temps disponible et que j'ai la flemme :), il ne faut pas y voir un quelconque engagement :

  • prendre en compte de nouveaux formats : DGN, Spatialite, MXD, QGS, Geoconcept
  • ajouter un onglet de statistiques globales avec de jolis graphiques ;
  • basculer de python-xlwt vers xlsxwriter.
  • un jour sur Python 3.x mais il faudrait déjà que py2exe soit stable de ce côté-là.
  • travailler sur les performances en basculant les traitements en multiprocessing (mais je crois que ça coince avec py2exe).
img_slideshow: 
A propos de l'auteur: 
Julien Moura

Géographe qui s'est laissé gagner peu à peu par le côté géomatique de la Force. Intéressé par de nombreuses thématiques liées à l'urbain (ségrégation, environnement, risque et vulnérabilité, etc), j'aime bien l'idée de formaliser les pensées en les modélisant et en les automatisant au possible. A ce jeu là, les outils informatiques s'avèrent indispensables, en particulier Python et Javascript.

Commentaires

Pour ma part, je l'ai essayé il y a quelques semaines et je l'intègre maintenant systématiquement dans mon processus d'audit de données !

Merci julien pour cet outil :)

Merci à toi pour l'avoir adopté et pour ton commentaire :)

Testé, validé et diffusé.

Testé et validé pour les fichiers SIG,
en revanche, pas de résultats en sortie pour une base de données Postgis (Postgres 9.2, Postgis 2.0) sur un OS windows 7 ou 8 en 64 bits (la barre de progression reste inerte et pas de résultats en sortie).

Au plaisir d'en discuter en MP au besoin

Cordialement

Merci pour le retour.
Actuellement en voyage, je serai de retour vers le 27 de ce mois pour échanger sur le sujet. J'aurai bien besoin du fichier log et de savoir si l'ordinateur est derrière un proxy.

Cdlmt

Merci Pauline de l'utiliser en conditions réelles, les nombreux retours et le soutien sans faille. Quand tu veux pour intégrer la version polonaise :).

Super outil merci!

Par contre aucun de mes ecw n'est reconnu "not compatible file"...

Merci pour le commentaire, ça fait plaisir :)

Du coup, si vous pouvez m'envoyer un échantillon de ces ECW de façon à ce que je puisse comprendre pourquoi ils ne sont pas reconnus, ce sera avec plaisir. A priori, je penche pour un souci de driver ECW avec GDAL.

++