QGIS for Devs

Aus Geoinformation HSR
Zur Navigation springen Zur Suche springen

See also:

Python Console

In QGIS you can open a console using "Menu > Plugins" or "Ctrl-Alt-P". Then this window should show:

 1 Python Console 
 2 Use iface to access QGIS API interface or Type help(iface) for more info.
 3 _

Hint: If you do the following from the Python console:

  geom = iface.activeLayer().selectedFeatures()[0].geometry() 

As soon as you do anything with QgsGeometry object, QGIS crashes! This is a long standing unresolved issue 777 with python bindings. This works:

 feat = iface.activeLayer().selectedFeatures()[0]
 geom = QgsGeometry(feat.geometry())

Test:

  • geom.type(), geom.length(), geom.asPolyline() crashes if the line has three vertices, with only two vertices it returns an empty array.

See also e.g. Python Scripting (PyQGIS) on qgistutorials.com.

Writing Python plugins

There's a plugin interface for C++ and for Python:

Some details about metadata.txt:

  • If "hasProcessingProvider" exists, this should also be mentioned in the "about".
  • "hasProcessingProvider" (yes or no). If processing tool / processing tool then this should be in description and about and processing should appear in "tags".
  • The licence must be GPL 2 or 3. Does the "LICENSE" file exist in the repo? If not, add GPL 3 from the template.
  • "homepage" should point to the "real" website or at least to the repo "README.md" (not just to the repo, and README.md should not be called "readme.md")

ChaGPT can help. Try the following propt:

Analyse the attributes of the metadata.txt file of a QGIS plugin (especially description and about) and give feedback on clarity, accuracy and consistency of content. The most important metadata.txt attributes are name, description, about, category, tags. The category attribute can only contain one of the following values: Raster, Vector, Database, Mesh, Web. Further specifications are contained here: https://docs.qgis.org/3.34/en/docs/pyqgis_developer_cookbook/plugins/plugins.html#metadata-txt. Output only the improvement suggestions. 

See also:

Manual installation of a Python plugin

Die manuelle Installation eines Python-Plugins, das sich noch nicht in einem Repository befindet, passiert wie folgt:

  • Plugins befinden sich in QGIS standardmässig im Ordner .qgis2\python\plugins. Der Ordner .qgis2 wiederum befindet sich im Homeordner. Dieser ist zum Beispiel unter Windows C:\Users\Benutzername.
  • Dorthin gehören alle Programm- und Daten-Dateien.
  • Nach einem Neustart von QGIS kann man das Plugin unter Erweiterungen -> Plugins aktivieren, falls es nicht schon ist.

Guidelines

Her are some recommendations and guidelines:

Regarding In/Output:

  • A "File open..." dialog should open 1. in the user directory the first time it's used, 2. in the directory last used, 3. and this directory last used should be stored in the "Qt User Database".
  • Prefer Memory Layer, then GeoPackage over Shapefile, when there's a need to store or export results.

These are the User Interface Design (UX/GUI) Guidelines for QGIS (click-based! e.g. for desktops and laptops):

  1. You can find the (rather small) HIG (Human Interface Guidelines) in chap. 5 of "Developers guide for QGIS" https://github.com/qgis/QGIS/blob/master/CODING . See also starting on line 1441 of https://github.com/qgis/QGIS/blob/master/doc/CODING.t2t . HTML version here: http://htmlpreview.github.io/?https://raw.github.com/qgis/QGIS/master/doc/CODING.html#toc60 .
  2. In addition there is this (rather large) (Graphical) User Interface (UI/GUI) Design with Qt: http://qt-project.org/doc/qt-4.8/qt-gui-concepts.html .
  3. Finally, there exist the “Windows 8 App UX Guidelines”. This is only “good to know” and can be used in cases of doubt or where the two Guidelines (QGIS+Qt) don’t apply

User Interface Design (UX/GUI) Guidelines (touch-based! e.g. for tablets):

Testing Python Plugins

Publication of a Python Plugin

See 'How to publish a plugin'.

Weblinks