QGIS Plugins mit Python: Unterschied zwischen den Versionen

Aus Geometa Lab OST
Zur Navigation springen Zur Suche springen
 
(46 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''QGIS Plugins mit Python - PyQGIS'''
QGIS Plugin metadata


Siehe auch:
==  Importance of metadata  ==
* [[QGIS]], [[QGIS - Tipps und Tricks]], [[Python]]
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.


Wichtige Informationen:
Keep metadata.txt updated – Especially when releasing new versions.
* 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)
* 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:
== Structure of metadata.txt  ==  
* Documentation zum Schreiben von PyQGIS-Plugins:
A metadata.txt file consists of mandatory and optional attributes. Below is a breakdown of the most important attributes.
** QGIS Manual - Guide: http://qgis.org/en/documentation/manuals.html > QGIS Coding and Compilation Guide
** Forum: http://forum.qgis.org/viewforum.php?f=5
** Wiki-Artikel: http://www.qgis.org/wiki/Writing_Python_Plugins
** Community Support: http://gis.stackexchange.com/questions/tagged/pyqgis
* Tutorials / Bücher:
** http://pyqgis.com/ (erwartet auf 2014)
** [http://blog.qgis.org/node/59 Quantum GIS Blog]
** [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


Manuelles Installieren eines Python-Plugins myPlugin:
=== General Information  ===
* Download myPlugin.zip.
* name: The official name of the plugin.
* Auspacken von myPlugin in einem temporären Verzeichnis; nun sollte ein Ordner myPlugin/ vorhanden sein.
* author: Name(s) of the developer(s).
* Den Ordner myPlugin ins QGIS-Python-Plugin-Verzeichnis kopieren.
* email: Contact email for support or inquiries.
* QGIS (neu) starten und "Erweiterungen verwalten..." wählen. Dort sollte ein neuer Eintrag stehen => ankreuzen.
* qgisMinimumVersion: Minimum version of QGIS required to run the plugin (e.g., ''3.0'').  
* description=Short and clear description of the plugin functionality.
* about=Detailed explanation of the plugin, including its purpose, features, and how it works.
* tags= Example: ''vector, geocoding, point, address''
* hasProcessingProvider: ''yes'' if the plugin provides QGIS processing tools.


== Plattform-unabhängiges Programmieren ==
=== Versioning and Status ===
version=1.0
experimental=False
Changelog: 1.0 - Initial release.


Auf was ist bei der plattform-unabhängigen Programmieren zu achten?
=== Category ===
Ensure category is valid – Choose one from the predefined list:
* '''Raster'''
* '''Vector'''
* '''Database'''
* '''Mesh'''
* '''Web'''


* Encoding
=== Links ===
* Fonts: http://en.wikipedia.org/wiki/Liberation_fonts
Include a homepage or repository link – Essential for documentation and support.
* tbd.
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


== Eclipse/PyDev ==
=== Additional Settings ===
* icon: Path to the plugin icon.
* server: Set to True if the plugin runs on a server.


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] )?
== Example of a Well-Formatted metadata.txt File ==


=== Installation Eclipse ===
[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].


* Download minimalstes Eclipse 3.x, sprich nur Eclipse Platform Runtime Binary, welches leider nicht direkt auf der Hauptseite verfügbar ist
== Weblinks ==
# http://download.eclipse.org/eclipse/downloads/eclipse3x.php
* Homepage: http://www.qgis.org/ ([http://wiki.qgis.org/qgiswiki/Project_Organigram Project-Team QGIS])
# -> Latest Release
* Wiki: http://wiki.qgis.org/  
# Zur Platform Runtime Binary Sektion navigieren und entsprechenden Download starten
* Blog: http://blog.qgis.org
# Installation
* Bug tracker: https://trac.osgeo.org/qgis/


=== Einrichten Eclipse ===
[[Kategorie:QGIS]] [[Kategorie:Python]] [[Kategorie:Programmieren]] [[Kategorie:QGIS-Plugin]]
 
* 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 ==
 
* Testen von Qt-GUI Komponenten: http://www.voom.net/pyqt-qtest-example
 
[[Kategorie:Geoprocessing]] [[Kategorie:QGIS]] [[Kategorie:Python]]

Aktuelle Version vom 28. Januar 2025, 13:22 Uhr

QGIS Plugin metadata

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.

Keep metadata.txt updated – Especially when releasing new versions.

Structure of metadata.txt

A metadata.txt file consists of mandatory and optional attributes. Below is a breakdown of the most important attributes.

General Information

  • name: The official name of the plugin.
  • author: Name(s) of the developer(s).
  • email: Contact email for support or inquiries.
  • qgisMinimumVersion: Minimum version of QGIS required to run the plugin (e.g., 3.0).
  • description=Short and clear description of the plugin functionality.
  • about=Detailed explanation of the plugin, including its purpose, features, and how it works.
  • tags= Example: vector, geocoding, point, address
  • hasProcessingProvider: yes if the plugin provides QGIS processing tools.

Versioning and Status

version=1.0
experimental=False
Changelog: 1.0 - Initial release.

Category

Ensure category is valid – Choose one from the predefined list:

  • Raster
  • Vector
  • Database
  • Mesh
  • Web

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

Additional Settings

  • icon: Path to the plugin icon.
  • server: Set to True if the plugin runs on a server.

Example of a Well-Formatted metadata.txt File

[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 pyqgis developer cookbook.

Weblinks