Erstellen Sie Ihr eigenes QGIS-Plugin-Repository

Die meisten öffentlich verfügbaren QGIS-Plugins werden im offiziellen Repository gehostet . In einigen Fällen ist es jedoch erforderlich, ein eigenes Plugin-Repository zu erstellen, um beispielsweise Ihr Plugin in einem engen Kreis von Kollegen einer bestimmten Organisation zu verteilen. In diesem Artikel erfahren Sie, wie Sie unser eigenes Plugin-Repository implementieren und welche Mindestanforderungen ein Plug-In erfüllen muss, um es in seinem eigenen Repository abzulegen.


Anmerkung 2
, , QGIS 3.10.5 LTR.

Plugin Manager


QGIS verfügt über ein spezielles Tool für die Arbeit mit Plugins - den Plugin-Manager. Sie können nach Plugins suchen, diese installieren und entfernen, das Erscheinungsbild neuer Versionen installierter Plugins verfolgen, Repositorys von Drittanbietern verbinden usw. Für jedes Plugin bietet der Plugin-Manager ein Fenster mit Informationen zum Plugin. Es gibt drei Szenarien zum Ausfüllen dieser Informationen:

  1. Das Plugin befindet sich im Repository, ist jedoch nicht auf Ihrem Computer installiert. In diesem Fall werden alle Informationen für den Plugin-Manager aus der Plugin-Beschreibung in der Datei plugins.xml extrahiert.
  2. Das Plugin ist auf Ihrem Computer installiert und es besteht eine Verbindung zum Repository. In diesem Fall wird ein Teil der Informationen weiterhin aus der Plugin-Beschreibung in der Datei plugins.xml und ein Teil aus der Metadatendatei metadata.txt extrahiert
  3. Das Plugin ist auf Ihrem Computer installiert und es besteht keine Verbindung zum Repository. In diesem Fall werden alle Informationen für den Plugin-Manager aus der Metadatendatei metadata.txt extrahiert.

In der folgenden Tabelle wird beschrieben, woher die Parameter im Fenster stammen, mit Informationen zum Plugin in jeweils drei Fällen:
Parameter im Plugin-Informationsfenster im QGIS-Plugin-Manager
Die Quelle, aus der der Parameter vor der Installation aus dem Repository entnommen wird
Die Quelle, aus der der Parameter stammt, wenn das Plug-In auf Ihrem Computer installiert ist und eine Verbindung zum Repository besteht
Die Quelle, aus der der Parameter stammt, wenn das Plug-In auf Ihrem Computer installiert ist und keine Verbindung zum Repository besteht
Name
plugins.xml (Nameigenschaft des pyqgis_plugin-Tags)
plugins.xml (Nameigenschaft des pyqgis_plugin-Tags)
metadata.txt
Beschreibung
plugins.xml
metadata.txt
metadata.txt
Über
plugins.xml
metadata.txt
metadata.txt
Installierte Version
metadata.txt  (Versionsparameter)
metadata.txt  (Versionsparameter)
Verfügbare Version
plugins.xml ( version pyqgis_plugin)
plugins.xml ( version pyqgis_plugin)
Download url
plugins.xml
plugins.xml
Changelog
metadata.txt
metadata.txt
Tags
plugins.xml
metadata.txt
metadata.txt
Author
plugins.xml
plugins.xml
metadata.txt
Email
metadata.txt
metadata.txt
Homepage
plugins.xml
plugins.xml
metadata.txt
Bug tracker
plugins.xml
plugins.xml
metadata.txt
Code repository
plugins.xml
plugins.xml
metadata.txt
QgisMinimumVersion
plugins.xml
metadata.txt
metadata.txt
QgisMaximumVersion
plugins.xml
metadata.txt
metadata.txt
Experimental
plugins.xml
metadata.txt
metadata.txt
Deprecated
plugins.xml
metadata.txt
metadata.txt
Icon
plugins.xml
metadata.txt
metadata.txt
Category
plugins.xml
plugins.xml
metadata.txt
  • , QGIS, metadata.txt plugins.xml . initGui() .
  • Installed version Available version, QGIS . Installed version Available version, QGIS «Installed version of this plugin is higher than any version found in repository». , , .
  • , metadata.txt plugins.xml . .
  • Available version plugins.xml version pyqgis_plugin, version.
  • metadata.txt plugins.xml Experimental Deprecated, .
  • QGIS (QgisMinimumVersion) (QgisMaximumVersion) , metadata.txt plugins.xml.
  • , . , QgisMinimumVersion + 0.99.



Jedes Plugin im Repository muss in einem separaten Zip-Archiv verpackt sein, in dem der Stammordner vorhanden sein muss. Darin befinden sich die Dateien Ihres Plugins sowie die Datei metadata.txt. Mit dem Namen des Stammordners vergleicht der QGIS-Plugin-Manager die lokal installierten Plugins mit den im Repository verfügbaren Plugins. Die Merkmale eines solchen Vergleichs werden unten im Abschnitt Kommunikation zwischen dem lokalen Plugin und dem Plugin im Repository erläutert .

Ein funktionsfähiges QGIS-Plugin sollte nur zwei erforderliche Dateien in seinem Verzeichnis enthalten:
 
  • __init__.py ist der Ausgangspunkt des Plugins. Die Datei muss die classFactory () -Methode enthalten.
  • metadata.txt - enthält allgemeine Informationen zum Plugin.

Ein Beispiel für ein Plugin mit einem minimalen Satz von Dateien finden Sie hier .

Sie können die Struktur von Plugins in der offiziellen Dokumentation genauer untersuchen .

Metadatendatei


Wie bereits erwähnt, muss sich im Verzeichnis jedes Plugins eine Datei metadata.txt befinden, die allgemeine Informationen zum Plugin enthält. Die Informationen daraus werden verwendet, um im QGIS-Plugin-Manager anzuzeigen, nach einem Plugin zu suchen usw.

Die Struktur der Metadatendatei sollte wie folgt aussehen:

[general]
Parameter1_Name: Parameter1_Value
Parameter2_Name: Parameter2_Value
ParameterN_Name: ParameterN_Value

Oder:

[general]
Parameter1_Name= Parameter1_Value
Parameter2_Name= Parameter2_Value
ParameterN_Name= ParameterN_Value

Sie können entweder einen Doppelpunkt oder das Symbol "=" als Trennzeichen für den Parameternamen und seinen Wert verwenden. Es ist jedoch nicht erforderlich, dass eine einzelne Metadatendatei nur einen Trennzeichentyp enthält. Leerzeichen vor und nach dem Trennzeichen wirken sich nicht auf das Lesen von Daten aus metadata.txt aus. Daher können sie in beliebiger Menge vorhanden sein oder ganz fehlen. Beachten Sie auch, dass das Schlüsselwort "[allgemein]" am Anfang der Metadatendatei erforderlich ist.

Folgende Parameter sind erforderlich, ohne die das Plug-In unterbrochen werden kann:

  • name - Name des Plugins,
  • version - Plugin Version,
  • qgisMinimumVersion ist die Mindestversion von QGIS, die für die Arbeit mit diesem Plugin geeignet ist.

Informationen zu anderen Parametern finden Sie hier .

plugins.xml


Jedes Repository sollte eine plugins.xml-Datei enthalten, die dem Plugin-Manager allgemeine Informationen zu allen im Repository verfügbaren Plugins enthält.

Hinweis
, .

Die Struktur von plugins.xml sollte wie folgt sein:

<plugins>
    <pyqgis_plugin name="Plugin1_Name" version="Plugin1_Version">                 
        <Plugin1_Parameter1_Name>Plugin1_Parameter1_Value</Plugin1_Parameter1_Name>
        <Plugin1_Parameter2_Name>Plugin1_Parameter2_Value</Plugin1_Parameter2_Name>
        ....
        <Plugin1_ParameterN_Name>Plugin1_ParameterN_Value</Plugin1_ParameterN_Name>
    </pyqgis_plugin>
    ...
    <pyqgis_plugin name="PluginN_Name" version="PluginN_Version">
       <PluginN_Parameter1_Name>PluginN_Parameter1_Value</PluginN_Parameter1_Name>
       <PluginN_Parameter2_Name>PluginN_Parameter2_Value</PluginN_Parameter2_Name>
        ....
       <PluginN_ParameterN_Name>PluginN_ParameterN_Value</PluginN_ParameterN_Name>
    </pyqgis_plugin>
</plugins>

Die erforderlichen Parameter, ohne die das Repository unterbrochen werden kann, sind folgende:

  • name - der Name des Plugins (angegeben als Parameter des pyqgis_plugin-Tags)
  • version - Version des Plugins (angegeben als Parameter des Tags pyqgis_plugin),
  • qgis_minimum_version - die Mindestversion von QGIS, die für die Arbeit mit diesem Plugin geeignet ist.
  • download_url - URL, unter der sich das Zip-Archiv mit Ihrem Plugin befindet.

Es wird empfohlen, die Beispieldatei plugins.xml aus dem offiziellen QGIS-Repository zu studieren (ersetzen Sie die Nummern am Ende des Links durch die auf Ihrem Computer installierte Version von QGIS).

Trinkgeld
plugins.xml, . xml.

Die Beziehung zwischen dem lokalen Plugin und dem Plugin im Repository


Wie versteht der Plugin-Manager, dass ein bestimmtes auf Ihrem Computer installiertes Plugin und ein Plugin im verbundenen Repository dasselbe Plugin sind, um beispielsweise zu überprüfen, ob eine neue Version des Plugins im Repository angezeigt wurde?

Ohne auf technische Details einzugehen, lautet die Regel für das Verbinden von Plugins wie folgt: Das lokale Plug-In und das Plug-In im Repository werden vom QGIS-Plug-In-Manager als dasselbe Plug-In betrachtet, wenn der Name des Plug-In-Stammordners entweder mit dem Text bis zum ersten Punkt aus dem Tag Dateiname übereinstimmt oder wenn das Tag Dateiname fehlt. mit Text zum ersten Punkt des letzten Pfadelements aus dem Tag download_url.

Mit anderen Worten, wenn das Dateinamen-Tag in der Plugin-Beschreibung von plugins.xml vorhanden ist, wird der Teil bis zum ersten Punkt (fett hervorgehoben) daraus extrahiert, der genau der Name des Stammordners des installierten Plugins sein muss, damit der QGIS-Plugin-Manager sie als eins und betrachtet das gleiche Plugin. Wenn das Tag Dateiname fehlt, wird das letzte Pfadelement aus dem Tag download_url auf die gleiche Weise analysiert. Der Teil, der bis zum ersten Punkt daraus extrahiert wurde (fett hervorgehoben), muss auch genau der Name des Stammordners des installierten Plug-Ins sein, damit der QGIS-Plug-In-Manager sie als dasselbe Plug-In betrachtet. Wenn zwischen dem Namen des Stammordners und dem extrahierten Teil aus Dateiname oder (falls Dateiname fehlt) aus Download-URL keine Übereinstimmung besteht, werden die Plugins als unterschiedliche Plugins betrachtet.

<file_name>PluginName.2.1.0.zip</file_name>



<download_url>YourRepositoryURL/PluginName.2.1.0.zip</download_url>



In Anbetracht dieser Regel wird empfohlen, das Tag file_name in der Plugins-Beschreibung in der Datei plugins.xml hinzuzufügen, das nicht den Namen Ihres Zip-Archivs, sondern den Namen des Stammordners Ihres Plugins angibt, zu dem Sie optional eine Version oder andere Informationen hinzufügen können, wobei Sie diese durch einen Punkt trennen. In diesem Fall können Sie das Zip-Archiv mit dem Plugin beliebig benennen, indem Sie den Namen des Plugins und seine Version durch einen Bindestrich trennen, wie es im offiziellen Repository üblich ist.

Hinweis
QGIS file_name .

Beispiele für korrekt gestaltete Plugins


Beispiel 1


Plugin-Dateistruktur


FolderName.SomeInfo.zip
---FolderName
------__init__.py
------metadata.txt


Metadata.txt-Datei


[general]
name: PluginName
version: 2.1.0
qgisMinimumVersion: 3.0


Plugins.xml-Datei


<plugins> 
   <pyqgis_plugin name="PluginName" version="2.1.0">
       <qgis_minimum_version>3.0.0</qgis_minimum_version>
        <download_url>YourRepositoryURL/FolderName.SomeInfo.zip</download_url>
   </pyqgis_plugin>
</plugins>

In diesem Beispiel wird die Verbindung zwischen dem lokal auf Ihrem Computer installierten Plugin und dem Plugin im Repository über den Namen des Stammordners und das Tag download_url hergestellt. Daher müssen der Teil des Namens des Zip-Archivs bis zum ersten Punkt und der Name des Stammordners des Plugins genau übereinstimmen.

Beispiel 2


Plugin-Dateistruktur


ArchiveName.SomeInfo.zip
---FolderName
------__init__.py
------metadata.txt


Metadata.txt-Datei


[general]
name: PluginName
version: 2.1.0
qgisMinimumVersion: 3.0


Plugins.xml-Datei


<plugins>
   <pyqgis_plugin name="PluginName" version="2.1.0">
       <qgis_minimum_version>3.0.0</qgis_minimum_version>
        <file_name>FolderName.SomeInfo</file_name>
        <download_url>YourRepositoryURL/ArchiveName.SomeInfo.zip</download_url>
   </pyqgis_plugin>
</plugins>

In diesem Beispiel erfolgt die Verbindung zwischen dem lokal auf Ihrem Computer installierten Plugin und dem Plugin im Repository über den Namen des Stammordners und das Tag Dateiname. In diesem Fall können sich der Teil des Namens des Zip-Archivs bis zum ersten Punkt und der Name des Stammordners unterscheiden.

Repository erstellen


Das QGIS-Plugin-Repository sollte aus einer Datei plugins.xml bestehen, die dem Plugin-Manager allgemeine Informationen zu allen im Repository verfügbaren Plugins und Zip-Archiven enthält, die die Plugins selbst enthalten. Das Repository kann auf Webdiensten wie GitHub oder Bitbucket gehostet werden.

Eine wichtige Voraussetzung für die Erkennung eines solchen Repositorys durch QGIS ist der Zugriff auf Dateien über eine direkte Verbindung. Dies kann beispielsweise mit Github-Seiten oder Bitbucket-Seiten erfolgen. Google Drive oder DropBox funktionieren für diese Zwecke nicht. Sie erlauben keinen direkten Link zu einer Datei der Form ... / filename.extension.

Anweisungen zur Verwendung von GitHub zum Hosten einer statischen Website finden Sie hier .

Anweisungen zur Verwendung von Bitbucket zum Hosten einer statischen Website finden Sie hier .

In der Regel müssen Sie Ihr Repository nur gemäß der Vorlage umbenennen:

username.imtqy.com (für GitHub)
oder
username.bitbucket.io (für Bitbucket)

Nach den erforderlichen Einstellungen sieht der Link zu Ihrem QGIS-Repository folgendermaßen aus:

username.imtqy.com/plugins.xml (für GitHub)
oder
username.bitbucket.io/plugins.xml(für Bitbucket)

Dieser Link muss angegeben werden im URL-Feld im QGIS-Plugin-Manager beim Verbinden eines neuen Repositorys. Wenn die Verbindung zum Repository erfolgreich hergestellt wurde, wird der Status des Repositorys auf "verbunden" gesetzt und die in der Datei plugins.xml beschriebenen Plugins werden in der Liste der verfügbaren Plugins angezeigt.

All Articles