Metaattribute
Metaattribute ermöglichen es, INTERLIS-Modelle mit zusätzlichen Informationen zu ergänzen, die in der aktuellen Spezifikation von INTERLIS nicht vorgesehen sind. Siehe die Syntax, wie sie generell angegeben werden, hier eCH-0117 Meta-Attribute für INTERLIS-Modelle oder zusammengefasst und im Kontext von Model Baker weiter unten.
Einem Metaelement können kompositorisch Metaattribute zugeordnet sein (Klasse "MetaAttribut"). Metaattribute sind weder durch die Sprache INTERLIS noch durch das Metamodell genauer definiert. Sie dienen insbesondere dazu, dass Informationen, die über INTERLIS hinausgehen, als Bestandteil der Modelldaten beigefügt werden können. Metaattribute haben einen Namen (Attribut "Name"), der innerhalb der Metaattribute desselben Metaelementes eindeutig sein muss, und den beschreibenden Wert (Attribut "Value").
Die ursprüngliche Quelle dieses Zitats findet sich in KOGIS (2008): INTERLIS 2-Metamodell
Metaattribute in INTERLIS-Dateien
Kommentar vs. Metaattribut
Ein INTERLIS-Kommentar beginnt mit !! und endet mit einem Zeilenende. Ein Metaattribut beginnt ebenfalls mit !!, gefolgt von einem @:
Syntax
Nach dem Beginn !!@ folgt der Name des Metaattributs, dann ein Gleichheitszeichen =, dann der Attributwert:
!!@<name>=<value>
Gefolgt vom referenzierten Element (MODEL, TOPIC, CLASS usw.)
Beispiel
ExceptionalLoadsRoute.ili:
!!@ furtherInformation=https://www.astra.admin.ch/
MODEL ExceptionalLoadsCatalogues_V1 (en)
AT "http://models.geo.admin.ch/ASTRA/"
VERSION "2017-02-08" =
IMPORTS CatalogueObjects_V1,Units;
!!@ topicInformation="Route-Type"
TOPIC TypeOfRouteCatalogue
EXTENDS CatalogueObjects_V1.Catalogues =
!!@ qgis.modelbaker.dispExpression="CONCAT(type, ' sometext')"
CLASS TypeOfRoute
EXTENDS CatalogueObjects_V1.Catalogues.Item =
furtherInformation ist auf ExceptionalLoadsCatalogues_V1 referenziert, topicInformation auf TypeOfRouteCatalogue und qgis.modelbaker.dispExpression auf TypeOfRoute.
Für eine komplexere Nutzung siehe das INTERLIS 2-Metamodell
Metaattribute in der Datenbank
Beim Importieren der Daten aus der INTERLIS-Datei in die DB werden mit ili2db, das in Model Baker integriert ist, die Metaattribute in der Tabelle t_ili2db_meta_attrs gespeichert:
| ilielement | attr_name | attr_value |
|---|---|---|
| ExceptionalLoadsCatalogues_V1 | furtherInformation | https://www.astra.admin.ch/ |
| ExceptionalLoadsCatalogues_V1.TypeOfRouteCatalogue | topicInformation | Route-Type |
| ExceptionalLoadsCatalogues_V1.TypeOfRouteCatalogue.TypeOfRoute | qgis.modelbaker.dispExpression | CONCAT(type, ' sometext') |
Model Baker-spezifische Metaattribute
Einige zusätzliche nicht standardisierte Metaattribute werden von Model Baker als Eigenschaften im QGIS-Projekt verstanden.
Liste spezifischer Attribute
- qgis.modelbaker.dispExpression
Wird als Anzeige-Ausdruck (display expression) für einen Layer verwendet. Der Anzeige-Ausdruck ist der Name, der verwendet wird, um ein Feature über Text zu identifizieren. Einer der Orte, an denen dies verwendet wird, ist die Combobox, die für ein Relation Reference Widget in Feature-Formularen angezeigt wird.
- qgis.modelbaker.formOrder
Wird verwendet, um die Reihenfolge der Attribute im Formular zu definieren, wie !!@qgis.modelbaker.formOrder=1. Wenn du die Reihenfolge eines Attributs definierst, haben alle anderen Attribute in der Klasse eine niedrigere Priorität, was bedeutet, dass wenn du die Reihenfolge für ein einzelnes Attribut setzt (der Wert spielt keine Rolle), es als erstes Attribut im entsprechenden Formular erscheint.
Extra Meta Attribute File
In diesen externen Dateien können die Metaattribute gespeichert werden, anstatt sie direkt in den INTERLIS-Dateien zu haben.
Diese sogenannten Extra Meta Attribute Files (oder The File Formerly Known As TOML-File) werden im INI-Format (nicht TOML) geschrieben, können aber dennoch die Dateiendung .toml oder .ini haben.
Du kannst die Extra Meta Attribute Files in den Erweiterten Optionen auswählen. Diese Konfiguration wird für das Modell gespeichert. Das bedeutet, wenn du dasselbe Modell später erneut auswählst, wird die Datei weiterhin referenziert. Diese Information wird im Hauptdialog des Project Generators angezeigt.
Im Hintergrund schreibt ili2pg die Metaattribute aus der externen Metaattribut-Datei in den PostGIS- oder GeoPackage-Speicher, wo der Project Generator sie verwenden kann, um das QGIS-Projekt zu erstellen.
Beispiele für Metaattribut-Dateien
ExceptionalLoadsRoute.ini:
["ExceptionalLoadsRoute.TypeOfRouteCatalogue.TypeOfRoute"]
qgis.modelbaker.dispExpression="type"
Oder unter Verwendung eines komplexeren Ausdrucks:
["ExceptionalLoadsCatalogues_V1.TypeOfRouteCatalogue.TypeOfRoute"]
qgis.modelbaker.dispExpression="CONCAT(type, ' sometext')"
Die Schlüssel, die für die INI-Abschnitte verwendet werden müssen, sind die voll qualifizierten INTERLIS-Namen der Objekte. Im obigen Beispiel ist dies ["ExceptionalLoadsCatalogues_V1.TypeOfRouteCatalogue.TypeOfRoute"]. Eine Liste aller verfügbaren Namen findest du in der Datenbanktabelle t_ili2db_classname nach einem Schema-Import.
INTERLIS-Beispiel
Das obige Beispiel würde folgendermassen direkt in einer INTERLIS-Datei (ExceptionalLoadsRoute.ili) geschrieben. Wenn die obige Konfiguration in der ini-Datei steht, ist das ili-Metattribut nicht mehr erforderlich; dies ist hier nur zur Referenz.
!!@qgis.modelbaker.dispExpression="type"
CLASS TypeOfRoute=
type: MANDATORY TEXT*25;
END TypeOfRoute;