INTERLIS 2 – einfach vermittelt

Wozu dienen Baskets?

Im Rahmen unserer INTERLIS 2 Ausbildungen treten zu bestimmten Themen gehäuft Fragen auf. Dazu gehört der Umgang mit Baskets, den wir in diesem Blog etwas erläutern wollen.

Was sind Baskets?

Ein BASKET ist ein Behälter zur Organisation von Objekten in der Transferdatei. Anwendung findet ein BASKET oft als strukturelles Unterelement des Typs TOPIC. Es enthält in diesem Fall alle zusammengehörenden Objekte eines Topics. Im folgenden Beispiel werden Baskets genutzt, um die Daten zum Thema OeVLinien in der Transferdatei in die zwei Gruppen Postauto und Stadtbus zu unterteilen.

Output in der Transferdatei:

 
blog2_1.png
 

Deklaration auf Stufe TOPIC:

MODEL Tarifverbund_Katalog_V1_0 (de) AT "https://models.geow.cloud" VERSION "2020-10-23" =
 
    IMPORTS CatalogueObjects_V1;
   
    TOPIC Katalog_OeVLinien = 

      BASKET OID AS INTERLIS.UUIDOID;
  
      CLASS OeVLinie EXTENDS CatalogueObjects_V1.Catalogues.Item = 
        Bezeichnung : MANDATORY TEXT*99; 
        Code : MANDATORY TEXT*15; 
      END OeVLinie; 
  
      STRUCTURE OeVLinie_KatRef 
        EXTENDS CatalogueObjects_V1.Catalogues.CatalogueReference = 
        Reference (EXTENDED) : MANDATORY REFERENCE TO (EXTERNAL) OeVLinie; 
      END OeVLinie_KatRef; 
  
    END Katalog_OeVLinien;
  
END Tarifverbund_Katalog_V1_0.

Selbstverständlich liesse sich eine Gruppierung auch mit einem spezifischen Attribut und einer globalen Aufzählung realisieren. Der Vorteil von Baskets ist jedoch, dass sie das Schema nicht tangieren. Zudem bieten Baskets den Vorteil, dass Import- und Export-Werkzeuge automatisch Konsistenzprüfungen zwischen Klassen (zB. Validierung von Fremdschlüssel-Beziehungen) innerhalb der Gruppe anwenden. Solche Aspekte müssten bei einer Lösung basierend auf spezifischen Attributen zusätzlich formuliert werden.

Schreiben des XTF mit FME

 

Im folgenden Beispiel werden Daten aus einer Excel-Datei mit FME in eine Transferstruktur für einen externen Katalog gebracht. Das Ziel ist es, die Netzlinien mit einem Code < 100 in einem Basket «Stadtbus»  und jene mit einem Code > 99 im Basket «Postauto» zu gruppieren:

blog2_2.png
 

Die Gruppierung in die vorgesehenen Baskets erfolgt dynamisch im AttributeManager, auf dem Attribut Basket (der Name des Attributs kann frei definiert werden) über das folgende einfache Condition Statement:

blog2_3.png
 

Das frisch befüllte Attribut Basket wird auf dem Export Feature Type dem Attribut xtf_basket zugewiesen. Die Liste der möglichen Baskets pro Topic ist zu definieren (grün umrandet in der unteren Abbildung). Es kann sich durchaus anbieten, eine solche Liste dynamisch aus der Objektklasse zu generieren und über einen Reader direkt zu lesen. Voraussetzung dafür ist, dass sich die Gruppierung in allen Klassen eindeutig bewerkstelligen lässt.

 
blog2_4.jpg

Das resultierende Transferfile haben wir bereits weiter oben aufgeführt.

Fazit

Will ich die Zugehörigkeit der Daten topic-weit in einer Transferdatei konsistent unterscheiden, bzw. gruppieren können, dann sind Baskets eine gute Wahl. Ist die Gruppierung jedoch kein Bedürfnis, so kann ich Baskets ruhig vergessen.

Gerne führen wir bei Interesse auch für Ihr Team INTERLIS-Kurse durch → Beispielveranstaltung Interlis Schulung Kanton Zug.

 
Renato BordoniInterlis