Sur le Forum, il y a de plus en plus de questions sur l'utilisation de Python avec ArcGis ou avec Qgis, des demandes de correction de scripts "qui ne marchent pas" ou enfin des demandes de formations au langage.
Je pense qu'il est bon de repréciser certaines choses (pour ne pas répéter la même chose chaque fois)
Python, c'est quoi ?
- Python est un langage de programmation complet, Open Source, qui permet de faire énormément de choses dans sa version standard (telle qu'elle est installée).
- il est multiplateformes (Windows, Linux, Mac OS X, divers Unix, mais aussi Android, Iphone etc.) et, hormis rare exceptions, les scripts, simples fichiers texte, sont universels (fonctionnent de la même manière, quelle que soit l'OS), ce qui n'est pas le cas de VB script et autres, monoplateformes;
- il n'a, à priori, rien à voir avec les SIGs, ce n'est pas le langage de script ou de macros d'un SIG particulier comme Avenue, par exemple, et le domaine des SIGs n'est qu'un "petit" domaine d'application de Python. Il suffit de consulter le site "Planet Python" (http://planet.python.org/ ) pour s'en rendre compte;
- l'adjonction de modules/extensions très, très nombreux lui permet de traiter pratiquement toutes les données et/ou de communiquer avec un très grand nombre de programmes de toute sorte (depuis Oracle ou PostgreSQL jusqu'à un traitement de texte en passant par Microsoft Office et autres). Ils ajoutent des fonctions supplémentaires à l'installation standard.
- le site de référence pour ces modules est PyPI, le Python Package Index (http://pypi.python.org/pypi)
- ArcPy , qgis ou grass ne sont que des modules parmi d'autres, destinés à traiter les données d'ArcGIS, Quantum GIS et GRASS GIS, rien de plus, rien de moins;
- Si l'on veut traiter d'autres données, il est très facile de trouver un module adéquat (XML, données encodées sur Microsoft Excel, Oracle, création de graphiques, etc.). Cela ne se fait pas avec ArcPy ou qgis ou en réinventant la roue;
- ainsi, il y a aussi d'autres modules pour traiter les "objets" SIG (shapefiles, rasters, bases de données spatiales etc.). Ils ne sont à priori ni meilleurs, ni moins bons, juste différents et ne font pas appel à des logiciels SIGs. Rien n'empêche de les utiliser aussi et en complément des modules de ArcGIS, QuantumGIS ou GRASS GIS;
- ces modules ne sont souvent malheureusement pas installés d'office avec les logiciels SIGs qui n'installent que ceux dont ils ont besoin (ArcGIS ou Quantum GIS sur Windows);
- ils n'ont rien à voir avec le programme et il est nécessaire de les installer en plus dans votre installation Python (répertoire site-packages) et pour cela, il faut connaitre un minimum comment fonctionne Python (http://www.portailsig.org/content/python-pour-les-sigistes-comment-installer-un-module-externe-geojson-shapely-ou-gdalogr-par-)
Comment l'apprendre ?
- le géomaticien n'est à priori pas un informaticien et l'on voit souvent poindre des questions du genre "je voudrais apprendre Python pour le logiciel X";
- le module Python qui permet de communiquer avec ce logiciel particulier n'est lui-même qu'une "couche" en plus : il ne fait qu'ajouter des nouvelles fonctions à la librairie standard de Python;
- vouloir apprendre Python en ne s'intéressant qu'à ces fonctions supplémentaires est un peu réducteur et conduit à des problèmes , même si le concepteur du logiciel vous dit le contraire (ce qui est rarement le cas, même ESRI le prend en compte), mais on veut aller très vite...
- il semble plus profitable d'avoir d'abord une bonne idée de ce que peut faire Python, de sa philosophie (de comment le faire sans nécessairement aller trop loin) puis appliquer cette connaissance à l'utilisation du module X (si l'on n'a pas bien compris la notion de liste en Python, il sera difficile d'utiliser les curseurs employés par le module ArcGIS, par exemple)
- cela permettra dans un premier temps de comprendre ce que fait un script, de le modifier éventuellement ou de rechercher sur Internet des solutions à vos problèmes (il y a des milliers de tutoriels ou de scripts pour tout traiter et rien n'empêche de s'en servir, de les copier et/ou de les modifier au lieu de se "casser la nénette");
- l'important est que votre script fonctionne bien pour ce que vous voulez faire, même si un programmeur trouve qu'il est "mal foutu", qu'il y a moyen de faire mieux etc.. Tout le monde n'est pas programmeur et le temps est précieux. Mais le temps passé à apprendre certaines de leurs astuces est aussi précieux. Cest comme ça qu'on apprend peu à peu...
Bon courage
Quelques références sur le Portail SIG sans module lié à un logiciel SIG :
Python et les shapefiles :
http://www.portailsig.org/content/py...les-shapefiles
http://www.portailsig.org/content/py...imple-utiliser
Python et les rasters
http://www.portailsig.org/content/py...modis-ou-les-d
http://www.portailsig.org/content/py...es-tfw-jgwpngw
http://www.portailsig.org/content/le...*****-worldfil
http://www.portailsig.org/content/pci2geotiff
Python et les MNT
http://www.portailsig.org/content/py...es-ou-mnt-srtm
Python et Microsoft Excel
http://www.portailsig.org/content/py...on-quantum-gis
Python et fichiers XML
http://www.portailsig.org/content/xm...nter-la-roue-0
Python et fichiers KML
http://www.portailsig.org/content/py...dule-simplekml
Python et analyse géospatiale
Python: le module Shapely, géométries, prédicats spatiaux, analyse spatiale, matrices de Clementini (DE-9IM), traitements de shapefiles ou autres, et représentation avec matplotlib
Débat
http://www.portailsig.org/content/py...comprehensions
Liens sociaux