|
|
| (27 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) |
| Zeile 1: |
Zeile 1: |
| '''QGIS Plugins mit Python - PyQGIS'''
| | QGIS Plugin metadata |
|
| |
|
| Siehe auch: [[QGIS for Devs]], [[QGIS]], [[QGIS - Tipps und Tricks]], [[Python]] (QGIS nutzt Python 2.7)
| | == Importance of metadata == |
| | The metadata.txt file is essential for defining the properties of a QGIS plugin. It provides key information such as the plugin name, author details, description, and category. Properly structured metadata ensures that plugins are correctly categorized, easily discoverable, and well-documented. |
|
| |
|
| == Allgemeines ==
| | Keep metadata.txt updated – Especially when releasing new versions. |
|
| |
|
| Wichtige Informationen:
| | == Structure of metadata.txt == |
| * Dokumentation/Tutorials: [http://www.qgis.org/pyqgis-cookbook/intro.html#python-applications PyQGis Cookbook] (QGIS Documentation), insbesondere [http://www.qgis.org/pyqgis-cookbook/plugins.html Kap. 'Developing Python Plugins'] (PyQGIS, QT4, Eclipse, Eclipse PyDev)
| | A metadata.txt file consists of mandatory and optional attributes. Below is a breakdown of the most important attributes. |
| * QGIS-Python-Plugin-Verzeichnis: C:\Documents and Settings\<username>\.qgis\python\plugins (Windows).
| |
| * QTDesigner unter Windows ist nun Bestandteil von der QT IDE [http://qt.nokia.com/products/ QTCreator].
| |
|
| |
|
| QGIS Plugins mit Python:
| | === General Information === |
| * Documentation zum Schreiben von PyQGIS-Plugins: | | * name: The official name of the plugin. |
| ** QGIS Manual - Guide: http://qgis.org/en/documentation/manuals.html > QGIS Coding and Compilation Guide
| | * author: Name(s) of the developer(s). |
| ** Forum: http://forum.qgis.org/viewforum.php?f=5 | | * email: Contact email for support or inquiries. |
| ** Wiki-Artikel: http://www.qgis.org/wiki/Writing_Python_Plugins | | * qgisMinimumVersion: Minimum version of QGIS required to run the plugin (e.g., ''3.0''). |
| ** Community Support: http://gis.stackexchange.com/questions/tagged/pyqgis | | * description=Short and clear description of the plugin functionality. |
| * Tutorials / Bücher:
| | * about=Detailed explanation of the plugin, including its purpose, features, and how it works. |
| ** http://pyqgis.com/ (erwartet auf 2014)
| | * tags= Example: ''vector, geocoding, point, address'' |
| ** [http://blog.qgis.org/node/59 Quantum GIS Blog] | | * hasProcessingProvider: ''yes'' if the plugin provides QGIS processing tools. |
| ** [http://www.qgis.org/wiki/Writing_Python_Plugins#How_to_debug_a_plugin_using_PDB How to debug a plugin using PDB] on QGIS Wiki (for C++ on Linux see [http://www.qgis.org/wiki/How_to_debug_QGIS_Plugins How to debug QGIS pugins]) | |
| ** ''Rapid GUI Programming with Python and Qt'', Summerfield, Mark - Gutes Buch zu PyQt 4, Python und QT wird auch erklärt. | |
| * Tools: | |
| ** QGIS Python Plugin Builder: http://pyqgis.org/builder/plugin_builder.py
| |
| ** From the QGIS-dev mailing list: [http://osgeo-org.1560.x6.nabble.com/A-common-set-of-functions-for-QGIS-plugins-td5233908.html "A common set of functions"].
| |
|
| |
|
| Manuelles Installieren eines Python-Plugins myPlugin:
| | === Versioning and Status === |
| * Download myPlugin.zip.
| | version=1.0 |
| * Auspacken von myPlugin in einem temporären Verzeichnis; nun sollte ein Ordner myPlugin/ vorhanden sein.
| | experimental=False |
| * Den Ordner myPlugin ins QGIS-Python-Plugin-Verzeichnis kopieren.
| | Changelog: 1.0 - Initial release. |
| * QGIS (neu) starten und "Erweiterungen verwalten..." wählen. Dort sollte ein neuer Eintrag stehen => ankreuzen.
| |
|
| |
|
| == Plattform-unabhängiges Programmieren == | | === Category === |
| | Ensure category is valid – Choose one from the predefined list: |
| | * '''Raster''' |
| | * '''Vector''' |
| | * '''Database''' |
| | * '''Mesh''' |
| | * '''Web''' |
|
| |
|
| Auf was ist bei der plattform-unabhängigen Programmieren zu achten?
| | === Links === |
| | Include a homepage or repository link – Essential for documentation and support. |
| | tracker=https://github.com/johndoe/spatial-analysis-plugin/issues |
| | repository=https://github.com/johndoe/spatial-analysis-plugin |
| | homepage=https://github.com/johndoe/spatial-analysis-plugin |
|
| |
|
| * Encoding
| | === Additional Settings === |
| * Fonts: http://en.wikipedia.org/wiki/Liberation_fonts | | * icon: Path to the plugin icon. |
| * tbd. | | * server: Set to True if the plugin runs on a server. |
|
| |
|
| == UX Guidelines == | | == Example of a Well-Formatted metadata.txt File == |
|
| |
|
| Siehe [[QGIS for Devs#UX Guidelines]] (GUI)
| | [general] |
| | name=Advanced Spatial Analysis |
| | author=John Doe |
| | email=johndoe@example.com |
| | qgisMinimumVersion=3.0 |
| | description=Perform advanced spatial analysis on vector layers. |
| | about=This plugin allows users to conduct advanced spatial analysis operations such as buffering, clipping, and overlay analysis. It integrates seamlessly with the QGIS processing framework. |
| | category=Vector |
| | tags=vector, spatial analysis, geoprocessing |
| | version=1.2 |
| | experimental=False |
| | Changelog: 1.2 - Added new analysis tools. |
| | tracker=https://github.com/johndoe/spatial-analysis-plugin/issues |
| | repository=https://github.com/johndoe/spatial-analysis-plugin |
| | homepage=https://github.com/johndoe/spatial-analysis-plugin |
| | hasProcessingProvider=yes |
| | icon=icon.png |
| | server=False |
| | |
| | There is more information about how a metadata.txt file should look like in the [https://docs.qgis.org/3.34/en/docs/pyqgis_developer_cookbook/plugins/plugins.html#metadata-txt pyqgis developer cookbook]. |
|
| |
|
| == Eclipse/PyDev == | | == Weblinks == |
| | * Homepage: http://www.qgis.org/ ([http://wiki.qgis.org/qgiswiki/Project_Organigram Project-Team QGIS]) |
| | * Wiki: http://wiki.qgis.org/ |
| | * Blog: http://blog.qgis.org |
| | * Bug tracker: https://trac.osgeo.org/qgis/ |
|
| |
|
| Wie kann man Eclipse mit PyDev zum Entwickeln von QGIS-Plugins (QT4) aufsetzen inklusive Unit-Testing und Debugging (gem. [http://www.qgis.org/pyqgis-cookbook/intro.html#python-applications] )?
| | [[Kategorie:QGIS]] [[Kategorie:Python]] [[Kategorie:Programmieren]] [[Kategorie:QGIS-Plugin]] |
| | |
| === Installation Eclipse ===
| |
| | |
| * Download minimalstes Eclipse 3.x, sprich nur Eclipse Platform Runtime Binary, welches leider nicht direkt auf der Hauptseite verfügbar ist
| |
| # http://download.eclipse.org/eclipse/downloads/eclipse3x.php
| |
| # -> Latest Release
| |
| # Zur Platform Runtime Binary Sektion navigieren und entsprechenden Download starten
| |
| # Installation
| |
| | |
| === Einrichten Eclipse ===
| |
| | |
| * Installation/Einrichten des Eclipse Marketplace
| |
| # Eclipse starten
| |
| # ''Help->Install New Software''
| |
| # ''Indigo - http://download.eclipse.org/releases/indigo'' als Quelle auswählen
| |
| # Im Filter Feld ''Market'' eingeben
| |
| # '''Marketplace Client''' auswählen und installieren
| |
| | |
| * Installation PyDev
| |
| # ''Help->Eclipse Marketplace...''
| |
| # Im Suchfeld nach '''pydev''' suchen
| |
| # ''PyDev - Python IDE for Eclipse'' installieren
| |
| # Konfiguration nach Eclipse Neustart:
| |
| # ''Window->Preferences''
| |
| # ''PyDev->Interpreter - Python'' für Linux oder ''PyDev->Interpreter - Iron Python'' und dann '''Auto Config''' wählen
| |
| | |
| ;Hinweis
| |
| :PyDev und den eingebauten Debugger kennen lernen: http://www.vogella.de/articles/Python/article.html
| |
| | |
| * Optional: Sourcecontrol EGit einrichten
| |
| # ''Help->Eclipse Marketplace...''
| |
| # Im Suchfeld nach '''egit''' suchen
| |
| # ''EGit - Git Team Provider'' auswählen und installieren
| |
| | |
| * CDT
| |
| # ''Help->Install New Software''
| |
| # ''Indigo - http://download.eclipse.org/releases/indigo'' als Quelle auswählen
| |
| # In der Kategorie Programming Languages ''C/C++ Development Tools'' auswählen und installieren
| |
| | |
| * Python und QT4
| |
| # Folgende Pakete müssen für Linux, am Beispiel Ubuntu, installiert werden um mit qt4 und sqlite arbeiten zu können
| |
| ## python-qt4-sql
| |
| ## python-qt4-dev
| |
| ## libqt4-dev
| |
| ## libqt4-sql-sqlite
| |
| ## qt4-dev-tools
| |
| ## qt4-doc-html
| |
| ## pyqt4-dev-tools
| |
| | |
| * Installation Eclipse Plugin
| |
| # Download von http://qt.nokia.com/products/eclipse-integration/
| |
| | |
| ;Hinweis
| |
| :Um die qt-Umgebung, sprich Designer etc. kennen zu lernen, ist das eingebaute Eclipse-CheatSheet sehr gut geeignet. Eclipse->Help->Cheat Sheets...
| |
| :Ein Wiki mit vielen Tutorials gibts hier: http://diotavelli.net/PyQtWiki/Tutorials
| |
| | |
| Eine alternative Anleitung zur Installation gibts hier: http://popdevelop.com/2010/04/setting-up-ide-and-creating-a-cross-platform-qt-python-gui-application/
| |
| | |
| * QGIS installieren
| |
| # Nach Anleitung von http://www.qgis.org/wiki/Download vorgehen
| |
| # Zur Entwicklung libqgis-dev zusätzlich installieren
| |
| | |
| == Debugging von Python-QGIS-Plugins mit Eclipse ==
| |
| | |
| ;Warum ist das Debugging von Plugins nicht so einfach wie bei einem Python-Programm?
| |
| :Grund dafür ist, dass bei Plugins ein weiterer Prozess, also nicht unser Plugin-Code, die Lebensdauer unseres Codes bestimmt. Das heisst, dass wir in den wenigsten Fällen direkt in den Programmcode des 'Host'-Prozesses eingreifen können um an der Stelle zu warten, an welcher unser Plugin zum Einsatz kommt.
| |
| | |
| ;Wie verbinden wir nun den Eclipse-PyDev-Debugger und ein QGIS-Plugin?
| |
| :Die Lösung die PyDev hierzu anbietet, verwendet einen sogenannten Remote-Debugger. Dabei agiert Eclipse-PyDev als Server, welcher auf einem bestimmten Port (Default ist 5678) auf eine Verbindung eines entsprechend ausgerüsteten Python-Programmes wartet. Sobald die Verbindung zu Stande gekommen ist können wir wie gewohnt debuggen.
| |
| | |
| === Remote-Debugger / Debug Server ===
| |
| | |
| Als erstes wechseln wir in die Debug Perspektive von Eclipse. Dadurch erhalten wir zwei zusätzliche Symbole im Toolbar [[Datei:EclipseDebugServerIcons.png|200px|thumb|right|Toolbar Icons]] , welche uns erlauben den Remote-Debugger zu Starten/Stoppen. Alternativ dazu können wir den Debug-Server im Menu ''Pydev->Start/End Debug Server'' kontrollieren.
| |
| | |
| Wir starten nun den Remote-Debugger durch anklicken des entsprechenden Symbols oder im Menu ''Pydev->Start Debug Server''. In der Konsole wird nun ausgegeben [[Datei:EclipsePydevDebugServerConsoleOutput.png|200px|thumb|right|Console output]], auf welchem Port der Debug Server auf eine Verbindung wartet. Der Port kann in den allgemeinen PyDev Einstellungen unter Debug angepasst werden.
| |
| | |
| === Anpassungen im Python-Plugin Code ===
| |
| | |
| Damit unser Plugin mit dem Debug Server verbinden kann müssen wir den folgenden Code einbauen, '''am besten direkt nach den üblichen Module Imports von Python'''
| |
| | |
| <pre>
| |
| #...
| |
| | |
| import os
| |
| from os import *
| |
| pydevPysrcPath = os.environ.get('ECLIPSE_PYSRC_PATH', '')
| |
| if pydevPysrcPath:
| |
| if os.path.exists(pydevPysrcPath):
| |
| import sys
| |
| sys.path.append(pydevPysrcPath)
| |
| import pydevd
| |
| pydevd.settrace()
| |
| else:
| |
| print "Specified ECLIPSE_PYSRC_PATH [%s] does not exist" % (pydevPysrcPath)
| |
| | |
| #...
| |
| </pre>
| |
| | |
| Damit haben wir die Möglichkeit den Eclipse-Debug-Server nur dann zu kontaktieren, wenn wir auch die entsprechende Umgebungsvariable '''ECLIPSE_PYSRC_PATH''' gesetzt haben. Dies funktioniert natürlich nur dann, wenn wir auch die 'Host'-Applikation aus dieser Konsole starten.
| |
| | |
| ;Beispielaufruf in der Konsole (Linux)
| |
| <pre>
| |
| ~$ export ECLIPSE_PYSRC_PATH=/opt/eclipse/plugins/org.python.pydev.debug_2.2.3.2011100616/pysrc/
| |
| ~$ qgis &
| |
| </pre>
| |
| | |
| ;Beispiel (Windows)
| |
| * Die Umgebungsvariable ECLIPSE_PYSRC_PATH setzen und QGIS starten.
| |
| * Dazu gibt es zwei Möglichkeiten: 1. Batchdatei mit folgendem Inhalt (dann diese Batchdatei ausführen):
| |
| <pre>
| |
| set ECLIPSE_PYSRC_PATH=/opt/eclipse/plugins/org.python.pydev.debug_2.2.3.2011100616/pysrc/"
| |
| qgis.exe
| |
| </pre>
| |
| * oder ECLIPSE_PYSRC_PATH dauerhaft als Systemvariable eintragen und QGIS mittels Doppelklick auf Icon - oder aus dem Startmenü- starten.
| |
| | |
| ; Weiterführende Informationen
| |
| : remote-debugging: http://pydev.org/manual_adv_remote_debugger.html
| |
| | |
| == Testing von PyQT Apps ==
| |
| | |
| * Writing Uni Tests for QGIS Plugins: http://snorf.net/blog/2014/01/04/writing-unit-tests-for-qgis-python-plugins/
| |
| * Testen von Qt-GUI Komponenten: http://www.voom.net/pyqt-qtest-example
| |
| | |
| == How to publish a plugin ==
| |
| | |
| Preparation:
| |
| * Check if all attributes in the metadata.txt file are in order:
| |
| ** The version needs to be different to the previous one in order for the upload to work.
| |
| ** If needed change the experimental flag from true to false. Experimental plugins won't be shown in the QGIS plugin list by default.
| |
| ** It is recommended to have an Icon set for the plugin. Its max. size does not seem to be specified.
| |
| * Remove all files from the directory you want to upload that are not needed for the plugin to run(e.g. *.pyc files, files and folders from IDEs, .gitignore etc.).
| |
| * File names can only contain ASCII characters in order for the upload to work. Characters like Umlauts in file names will cause an Error when uploading.
| |
| * The plugin directory can't contain hyphens in its name (if it does the plugin might still work in QGIS but it will show an error message).
| |
| * ZIP your plugin directory.
| |
| | |
| Upload:
| |
| * In order to upload a plugin on the official QGIS page a OSGeo ID is required. It can be created here: https://www.osgeo.org/cgi-bin/ldap_create_user.py
| |
| * On the page https://plugins.qgis.org/ login with your OSGeo ID.
| |
| * The plugin (ZIP archive) can be uploaded here: https://plugins.qgis.org/plugins/add/ Check experimental field if the plugin still is experimental.
| |
| * After uploading the plugin it won't be immediately available in the plugin list. It first has to get approved. The approval can take up to 2 weeks. Check "How to add your plugin to this repository" on https://plugins.qgis.org/ for the criteria the plugin has to meet in order to get approved.
| |
| | |
| [[Kategorie:Geoprocessing]] [[Kategorie:QGIS]] [[Kategorie:Python]] [[Kategorie:Programmieren]]
| |