Zum Inhalt

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. relation reference - 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;