#1 Thu 11 July 2013 20:16
- emunasa
- Juste Inscrit !
- Date d'inscription: 5 Jul 2013
- Messages: 4
QGIS: developper en Python ?
Bonjour ,
dans le cadre d'un projet des études ( disant un stage ) nous sommes amené ( moi et mon binome ) à developper une application SIG personnalisée sous un SIG Open Source . nous avons opté pour le SIG Open Source Qgis avec le langage Python . Aprés, nous sommes un peu perdu entre les differents outils à utiliser, les versions , les bibliotheques et tous ça . Si quelqu'un peut nous aider par des orientations , d'où commencer ? comment ? qu'est ce qu'on a besoin d'installer , d'intégrer ?
Merci d'avance
Hors ligne
#2 Fri 12 July 2013 13:16
- tqhien
- Participant actif
- Lieu: Clamart
- Date d'inscription: 22 Apr 2011
- Messages: 78
Re: QGIS: developper en Python ?
Bonjour,
Tout d'abord, une question : qu'entendez-vous par application personnalisée ?
S'il s'agit de faire des formulaires de saisie : il faudra créer des fichier .iu avec qt designer et un peu de code python pour les traitements.
S'il s'agit de créer des fonctionnalités particulières : un plugin en python est-il suffisant ?
Dans ces deux cas, il suffit d'installer la version binaire par défaut (Par osgeo4w pour windows par exemple) et de rajouter quelques fichiers là où il faut.
S'il s'agit de redessiner complètement l'interface ou d'effectuer des modifications plus lourdes, dans ce cas, il faudra passer par une recompilation du programme, soit avec Visual C++ (pour windows) ou QT pour les autres plateformes.
Cordialement.
Hien.
Hors ligne
#3 Sat 13 July 2013 14:23
- emunasa
- Juste Inscrit !
- Date d'inscription: 5 Jul 2013
- Messages: 4
Re: QGIS: developper en Python ?
Merci pour votre intéraction .
en fait , notre application s'agir d'une application independante et non pas un plugin mais qui utilise quelque fonctionnalités de base déja existantes dans QGis ( par exemple la selection , Zoom , pan ...etc ) . Alors notre utilisateur peut ne pas posséder Qgis mais il suffit d'executer notre application . est ce que c'est faisable déja ?
Cordialement
Hors ligne
#4 Mon 15 July 2013 10:50
- tqhien
- Participant actif
- Lieu: Clamart
- Date d'inscription: 22 Apr 2011
- Messages: 78
Re: QGIS: developper en Python ?
Bonjour,
Un tutoriel (en anglais) existe à l'adresse suivante : http://geospatialdesktop.com/2009/02/cr … ication_1/ qui décrit comment créer une application personnalisée en Python qui utilise l'API de QGIS mais le site donne une erreur actuellement. Il suffit d'y accéder via le cache de Google par exemple.
Quelques remarques : l'application nécessite que QGIS soit installé. Ce n'est donc pas à proprement parler une application indépendante. Si la taille de l'installation n'est pas un souci, alors cette solution peut s'avérer intéressante. Vous pouvez également inclure QGIS en version "portable" dans votre installation : les dernières versions de l'installateur OSGeo4W démarrent en chemin relatif (cf fichiers batchs) et il vous faudra peut-être les adapter pour votre application. Par contre, si la taille totale est limitée (comme un démonstrateur sur CD), en fonction de la taille des données à afficher, il faudra peut-être passer par un programme réellement indépendant, nécessitant l'utilisation des bibliothèques C++ de QGIS et une compilation.
Cordialement.
Hors ligne
#5 Wed 04 January 2017 15:13
- lesjj10
- Participant occasionnel
- Date d'inscription: 18 Dec 2014
- Messages: 16
Re: QGIS: developper en Python ?
Attention, le tutoriel http://geospatialdesktop.com/2009/02/cr … ication_1/ stitule qu'une installation de QGIS via OsGeo4W ne nécessite aucune modification de paramètre. Aujourd'hui, ce n'est plus vrai, au moins avec windows.
Pour ma part, j'ai ajouté, dans la variable path la valeur C:\OSGEO4~1\apps\qgis\bin (j'ai installé QGIS dans le répertoire C:\OSGEO4~1) et j'ai initié la variable PYTHONPATH à la valeur C:\OSGEO4~1\apps\qgis\python
Dernière modification par lesjj10 (Wed 04 January 2017 15:15)
Hors ligne
#6 Wed 04 January 2017 15:25
- FPNO
- Participant actif
- Date d'inscription: 24 Oct 2013
- Messages: 139
Re: QGIS: developper en Python ?
Bonjour
Si j'ai bien compris vous souhaitez une appli pour publier des projets QGIS vous avez ceci :
https://qgiscloud.com/
Cdt
Franck
Hors ligne
#7 Wed 04 January 2017 17:30
- Anthony Philibert
- Juste Inscrit !
- Date d'inscription: 25 Oct 2016
- Messages: 5
Re: QGIS: developper en Python ?
Bonjour,
Si la taille n'est pas un critère restrictif, vous pouvez installer qgis avec Osgeo4w puis copier le dossier d'installation de qgis
dans le dossier de votre application.
Afin de pouvoir lancer le code python contenant votre application, vous devrez créer un fichier .bat comme dans l'exemple suivant.
Code:
set CHEMIN_APPLICATION=%cd% CALL "%CHEMIN_APPLICATION%qgisbino4w_env.bat" set GDAL_DATA=%CHEMIN_APPLICATION%qgissharegdal set QGIS_PREFIX_PATH=%CHEMIN_APPLICATION%qgisappsqgis set PROCESSING_PATH=%CHEMIN_APPLICATION%qgisappsqgispythonplugins set PYTHONPATH=%CHEMIN_APPLICATION%qgisappsqgispython;%QGIS_PREFIX_PATH%;%PROCESSING_PATH% set PATH=%CHEMIN_APPLICATION%qgisbin;%TEST%qgisappsqgisbin;%PATH% python nom_de_votre_fichier_python.py
En plaçant le dossier de qgis, votre fichier python contenant votre code et le fichier bat précédent dans un même dossier vous pourrez créer une application qui se lance de n'importe quel dossier.
Si vous avez des problèmes pour créer une interface graphique dans votre code python, je pourrais vous fournir un exemple.
Hors ligne
#8 Fri 06 January 2017 16:23
- lesjj10
- Participant occasionnel
- Date d'inscription: 18 Dec 2014
- Messages: 16
Re: QGIS: developper en Python ?
Bonjour,
Merci de ces réponses.
J'ai créé un fichier .bat en me basant sur la dernière réponse de la discussion http://georezo.net/forum/viewtopic.php?pid=290135 et en l'adaptant à mon installation via OSGeo4W :
Code:
SET OSGEO4W_ROOT=C:\OSGeo4W64 set path=%OSGEO4W_ROOT%\bin;%WINDIR%\system32;%WINDIR%;%WINDIR%\WBem;%OSGEO4W_ROOT%\apps\qgis\bin SET PYTHONPATH=%OSGEO4W_ROOT%\apps\Python27;%OSGEO4W_ROOT%\apps\Python27\Lib;%OSGEO4W_ROOT%\apps\Python27\sip;%OSGEO4W_ROOT%\apps\qgis\python SET PYTHONHOME=%OSGEO4W_ROOT%\apps\Python27 SET QGISHOME=C:\OSGeo4W64
Je lance un terminal puis ce fichier .bat. Ensuite, mon application fonctionne sans problème.
Pour amméliorer cette situation, j'ai modifié mes variables d'environnement systèmes (je suis sur windows 10) pour ne plus être obligé de lancer mon .bat. J'ai modiffié la valeur de la variable path. J'ai créé les variables PYTHONPATH, PYTHONHOME et QGISHOME en affectant les mêmes valeurs que celles présentes dans le fichier .bat. Cela ne fonctionne pas tant que je n'ai pas executé mon .bat.
Code:
C:\Users\geomajic>python c:\QGIS\code_python\TransShpCsv.py C:\QGIS\Demonstartion\Forets1.shp C:\QGIS\code_python\exportcsv.csv Traceback (most recent call last): File "c:\QGIS\code_python\TransShpCsv.py", line 1, in <module> from qgis.core import * File "C:\OSGeo4W64\apps\qgis\python\qgis\__init__.py", line 27, in <module> from qgis.core import QgsFeature, QgsGeometry File "C:\OSGeo4W64\apps\qgis\python\qgis\core\__init__.py", line 30, in <module> from qgis._core import * ImportError: DLL load failed: Le systÞme dÆexploitation ne peut pas exÚcuter %1.
Pourtant, les valeurs de sys.path avant et après l'execution de ce .bat sont identiques :
Code:
C:\OSGeo4W64\apps\Python27\lib\site-packages\matplotlib-1.3.1-py2.7-win-amd64.egg C:\OSGeo4W64\apps\Python27\lib\site-packages\nose-1.3.3-py2.7.egg C:\OSGeo4W64\apps\Python27\lib\site-packages\tornado-4.0.1-py2.7-win-amd64.egg C:\OSGeo4W64\apps\Python27\lib\site-packages\backports.ssl_match_hostname-3.4.0.2-py2.7.egg C:\OSGeo4W64\apps\Python27\lib\site-packages\certifi-14.05.14-py2.7.egg c:\osgeo4~1\apps\python27\lib\site-packages\python_dateutil-2.1-py2.7.egg C:\OSGeo4W64\apps\Python27 C:\OSGeo4W64\apps\Python27\Lib C:\OSGeo4W64\apps\Python27\sip C:\OSGeo4W64\apps\qgis\python C:\OSGeo4W64\bin\python27.zip C:\OSGeo4W64\apps\Python27\DLLs C:\OSGeo4W64\apps\Python27\lib\plat-win C:\OSGeo4W64\apps\Python27\lib\lib-tk C:\OSGeo4W64\bin C:\OSGeo4W64\apps\Python27\lib\site-packages C:\OSGeo4W64\apps\Python27\lib\site-packages\PIL C:\OSGeo4W64\apps\Python27\lib\site-packages\jinja2-2.7.2-py2.7.egg C:\OSGeo4W64\apps\Python27\lib\site-packages\markupsafe-0.23-py2.7-win-amd64.egg C:\OSGeo4W64\apps\Python27\lib\site-packages\pytz-2012j-py2.7.egg C:\OSGeo4W64\apps\Python27\lib\site-packages\win32 C:\OSGeo4W64\apps\Python27\lib\site-packages\win32\lib C:\OSGeo4W64\apps\Python27\lib\site-packages\Pythonwin C:\OSGeo4W64\apps\Python27\lib\site-packages\Shapely-1.2.18-py2.7-win-amd64.egg C:\OSGeo4W64\apps\Python27\lib\site-packages\wx-2.8-msw-unicode C:\OSGeo4W64\apps\Python27\lib\site-packages\xlrd-0.9.2-py2.7.egg C:\OSGeo4W64\apps\Python27\lib\site-packages\xlwt-0.7.5-py2.7.egg
Est-ce que j'ai oublié de créer une variable ou d'affecter une valeur?
PS : je suis conscient que mes questions sont parfois longues mais j'essaye d'être le plus complet possible pour expliquer le mieux possible la situation que je rencontte.
Hors ligne
#9 Mon 09 January 2017 08:54
- Sylvain PIERRE
- Participant assidu
- Lieu: Strasbourg
- Date d'inscription: 6 Sep 2005
- Messages: 170
Re: QGIS: developper en Python ?
Bonjour,
Pourquoi
ne plus être obligé de lancer mon .bat
?
Si c'est parce que vous êtes en phase de développement je comprends, ça devient vite fastidieux.
Par contre en production, le fait de passer par un .bat ne me choque pas (c'est de cette manière que QGIS est lancé).
Pour revenir au premier cas (dev/debug) je vous conseille d'utiliser Eclipse/Pydev comme environnement de développement, vous pourrez exécutez et debugger votre application à partir d'Eclipse (vous aurez ici aussi à mettre en place la configuration qui permettra à Eclipse/ Pydev la reconnaissance de l'API de QGIS.
Sylvain
Hors ligne