(H)Interlis(tig)

Für FME gibt es ein gutes Plugin, um Interlis-Dateien zu lesen und zu schreiben. Beim Schreiben von Daten in komplexe Interlis-Modelle muss man aber häufig einige Knacknüsse lösen. Obwohl die meisten Punkte in der Dokumentation erwähnt sind, dauert es eine Weile bis ein FME-Workspace richtig funktioniert.

„walnut heart“ von Martin Fisch (flickr.com)

Hier einige kürzlich gelöste Knacknüsse:

  • Inkrement: Um eine Interlis-Datei mit einem UPDATE zu erstellen, gibt es das Format-Attribut xtf_operation. Dieses Attribut mit Werten zu füllen, reicht aber nicht, um ein Inkrement zu definieren. Dazu muss man bei den XTF_BASKET-Features den optionalen Attributen xtf_startstate und xtf_endstate Werte zuweisen.
  • z-Werte: Das Plugin verwendet standardmässig OGC WKB zum Kodieren der Geometrie. Z-Werte werden damit erst in Version 1.2 unterstützt; das Plugin kann momentan aber nur mit Version 1.1 umgehen. Deshalb stellt man am besten den Parameter Geometry Encoding des Writers auf FMEHEXBIN und wählt dieselbe Kodierung beim GeometryExtractor.
  • Strukturattribute: „INTERLIS structure attributes […] are mapped to FME lists.“ heisst es in der Dokumentation. Was bedeutet das konkret? Mein Objekt hat beispielsweise das Strukturattribut Validity:
    <Validity>
    <MyClass.ObjectVersionInfo>
    <ObjectValidFrom>2009-04-17</ObjectValidFrom>
    <ObjectValidTo>2010-10-27</ObjectValidTo>
    </MyClass.ObjectVersionInfo>
    </Validity>

    Um diese Struktur zu erstellen, benötige ich zuerst die drei Attribute ObjectValidFrom, ObjectValidTo und xtf_class (mit dem Wert MyClass.ObjectVersionInfo). Mit dem Transformer ListBuilder packt man diese drei Attribute in eine Liste zusammen, welcher man den Namen Validity gibt. Den Rest erledigt das Interlis-Plugin.

Eine Aufgabe konnte ich mit dem Interlis-Plugin bisher nicht lösen: Das Schreiben von XML-Attributen, beispielsweise <Reference REF="GUID:63803bd8-1082-a745-b465-93393715fbe8" />. Die Elemente, welche das Interlis-Plugin erzeugt (<Reference>GUID:63803bd8-1082-a745-b465-93393715fbe8</Reference>) wandle ich nun separat in die gewünschten Attribute um. Hinweise, ob und wie sich auch dies mit dem Interlis-Plugin lösen lässt, sind willkommen.

2 Antworten auf „(H)Interlis(tig)“

Kommentare sind geschlossen.