30.09.2012 Aufrufe

FME - Tydac AG

FME - Tydac AG

FME - Tydac AG

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Version: 1.0<br />

Datum: 05. Dezember 2007<br />

<strong>FME</strong><br />

INTERLIS 1 Modul<br />

Autor: Flavio Hendry - TYDAC <strong>AG</strong>


Inhalt<br />

1 Release Notes Build 29...................................................................................................1<br />

2 Installation .......................................................................................................................1<br />

3 Zu diesem Handbuch ......................................................................................................1<br />

4 INTERLIS - Kurze Einführung.........................................................................................2<br />

4.1 Was ist INTERLIS? ....................................................................................................2<br />

4.2 INTERLIS-Datenstruktur ............................................................................................3<br />

4.2.1 Die Beschreibungsdatei (.ili) ...........................................................................................3<br />

4.2.2 Die Datendatei (.itf).........................................................................................................4<br />

4.3 Besondere Charakteristiken von INTERLIS ...............................................................5<br />

4.3.1 Lookup-Tabellen .............................................................................................................5<br />

4.3.2 Beschriftungen / Textausrichtung ...................................................................................6<br />

4.3.3 Undefinierte Attribute ......................................................................................................6<br />

4.3.4 Overlaps..........................................................................................................................6<br />

4.3.5 Pseudo-Bögen ................................................................................................................8<br />

4.3.6 INTERLIS Datentypen AREA und SURFACE ................................................................8<br />

4.3.7 Multiple Geometrien / Geometrien als Attribute..............................................................9<br />

4.3.8 Verweise .........................................................................................................................9<br />

5 <strong>FME</strong> 2007 "Rich Geometry"..........................................................................................10<br />

5.1 Was ist "Rich Geometry"? ........................................................................................10<br />

5.2 Formate und "Rich Geometry"..................................................................................11<br />

5.3 INTERLIS und "Rich Geometry"...............................................................................11<br />

6 Lesen und Schreiben von INTERLIS ...........................................................................12<br />

6.1 "Settings" des INTERLIS Moduls .............................................................................12<br />

6.2 Fallbeispiele INTERLIS Lesen .................................................................................13<br />

6.2.1 INTERLIS nach Autocad DXF / Geobau ......................................................................13<br />

6.2.2 INTERLIS nach MapInfo TAB.......................................................................................15<br />

6.2.3 INTERLIS nach ESRI Shape ........................................................................................15<br />

6.2.4 INTERLIS nach ESRI Geodatabase (mdb oder file) ....................................................16<br />

<strong>FME</strong> - INTERLIS 1 Modul<br />

Version 1.0 / 05. Dezember 2007 Seite i


6.2.5 INTERLIS nach PostGIS ..............................................................................................16<br />

6.3 Fallbeispiele INTERLIS Schreiben ...........................................................................17<br />

6.3.1 Einführung.....................................................................................................................17<br />

6.3.2 MapInfo nach INTERLIS...............................................................................................17<br />

6.3.3 PostGIS nach INTERLIS ..............................................................................................18<br />

6.4 Custom Transformers...............................................................................................18<br />

Abbildungsverzeichnis<br />

Abbildung 1: Rich Geometry, Polylinien .................................................................................10<br />

Abbildung 2: Bogeninformation in <strong>FME</strong>..................................................................................10<br />

Abbildung 3: INTERLIS Input Settings ...................................................................................12<br />

Abbildung 4: Einstellungen INTERLIS Input Settings.............................................................13<br />

<strong>FME</strong> - INTERLIS 1 Modul<br />

Version 1.0 / 05. Dezember 2007 Seite ii


Versionen<br />

Version Datum Person Bemerkungen<br />

1.0 November 2007 TYDAC - Flavio Hendry Erste Fassung<br />

COPYRIGHT Handbuch<br />

Alle Rechte vorbehalten. Nachdruck und Vervielfältigung einschliesslich Speicherung und Nutzung auf<br />

optischen und elektronischen Datenträgern nur mit Zustimmung der TYDAC <strong>AG</strong>.<br />

COPYRIGHT INTERLIS-Daten<br />

Mit freundlicher Genehmigung der Stadt Chur. Nutzung nur zu Test - und Schulungszwecke in<br />

Zusammenhang mit diesem Handbuch gestattet.<br />

<strong>FME</strong> - INTERLIS 1 Modul<br />

Version 1.0 / 05. Dezember 2007 Seite iii


1 Release Notes Build 29<br />

Wie im Frühjahr angekündigt, wurde das INTERLIS Modul durch die TYDAC <strong>AG</strong> übernommen.<br />

Nun ist es soweit: Das erste Release von TYDAC ist da und hat es in sich! Die<br />

wesentlichen Neuerungen sind:<br />

�� Unterstützung von "Rich Geometry" beim Lesen und Schrieben. Konkret: volle<br />

Unterstützung von Bogenelementen (seit <strong>FME</strong> 2007 möglich). Details s. Kapitel <strong>FME</strong><br />

2007 "Rich Geometry" auf Seite 10<br />

�� ili-Datei muss nicht mehr mit gleichem Namen vorhanden sein. ili-Dateien<br />

können neu in das <strong>FME</strong>-InstallDir\INTERLIS\Models gehalten werden.<br />

�� Fehlermeldungen (z.B. bei fehlenden nicht-optionalen Attributen) wurden durch<br />

Warnungen ersetzt.<br />

�� Generelle Anpassungen für <strong>FME</strong> 2007.<br />

�� Automatisches Aufräumen temporärer Dateien.<br />

�� Ausführliche Dokumentation (vorerst auf Deutsch).<br />

�� Workbench-Beispiele für das Lesen und Schreiben.<br />

�� Erste Custom-Transformers für INTERLIS:<br />

o Bereinigung von OVERLAPS<br />

o Berechnung der Textpositionen<br />

2 Installation<br />

Führen Sie das Programm "interlis_setup" aus. Das INTERLIS Modul wird automatisch in<br />

das aktuelle <strong>FME</strong> Programmverzeichnis installiert.<br />

Neben dem Modul wird folgendes installiert:<br />

�� Dokumentation und Release Notes unter <strong>FME</strong>-InstallDir\INTERLIS\Docs<br />

�� Beispiel Workbenches und Daten unter <strong>FME</strong>-InstallDir\INTERLIS\Samples<br />

�� Custom Transformers: <strong>FME</strong>-InstallDir\INTERLIS\CustTrans (Doppelklick auf Datei um<br />

diese zu installieren).<br />

3 Zu diesem Handbuch<br />

Diese Handbuch liegt in der ersten Ausgaben nur auf Deutsch vor. Beachten Sie:<br />

�� Wenn Sie INTERLIS schon kennen, gehen Sie direkt zu Kapitel 4.3. Hier können Sie<br />

sich über INTERLIS-Besonderheiten informieren, die bei der Umsetzung mit <strong>FME</strong><br />

wichtig sind.<br />

�� Es lohnt sich die beigelegten Beispiele zu studieren. Darin sind einige "Tricks"<br />

enthalten, die Ihnen die Arbeit erleichtern dürften.<br />

<strong>FME</strong> - INTERLIS 1 Modul<br />

Version 1.0 / 05. Dezember 2007 Seite 1


4 INTERLIS - Kurze Einführung<br />

© Anmerkung: Teile dieser Texte stammen aus www.interlis.ch sowie aus der INTERLIS Dok.<br />

4.1 Was ist INTERLIS?<br />

INTERLIS ist eine Beschreibungssprache und ein Austauschmechanismus für Geodaten.<br />

INTERLIS ist auf die Anforderungen der Integration von Geodaten und der Verknüpfung<br />

(Interoperabilität) heutiger und zukünftiger Geo-Informationssysteme ausgerichtet, kann aber<br />

auch allgemein eingesetzt werden. Durch den Einsatz von einheitlich dokumentierten<br />

Geodaten und dem flexiblen Austausch kann folgender Nutzen entstehen:<br />

�� Standardisierte Dokumentation<br />

�� Kompatibler Datenaustausch<br />

�� Vollständige Integration von Geodaten zum Beispiel von verschiedenen Datenlieferanten<br />

�� Automatisierbare Qualitätsprüfung<br />

�� Langfristige Datensicherung (Investitionsschutz)<br />

�� Vertragliche Sicherheit und verlässliche Datenabgabe über robuste Datenträger (CD-<br />

ROM, etc.)<br />

�� Erweiterbarkeit und Verfügbarkeit von Software<br />

INTERLIS erfüllt die oben erwähnten Anforderungen. Damit verlagert sich die Schnittstellendiskussion<br />

über starre Formate und "offene Programmschnittstellen" (API's) zur Frage, was<br />

für Geodaten wir wirklich erfassen und verwalten wollen.<br />

Weitere Merkmale dieser Sprache sind:<br />

�� Spezielle Eignung für Geoinformationssysteme<br />

�� Implementierbarkeit und Praktikabilität<br />

�� Erweiterbarkeit<br />

Weitere wichtige Informationen zu INTERLIS finden Sie auf www.interlis.ch.<br />

<strong>FME</strong> - INTERLIS 1 Modul<br />

Version 1.0 / 05. Dezember 2007 Seite 2


4.2 INTERLIS-Datenstruktur<br />

Vom Beschreibungsprinzip her lehnt sich INTERLIS an das relationale Datenmodell an,<br />

erweitert dieses aber um Elemente, die typisch für GIS sind. Die Syntax der Sprache folgt<br />

den Ideen höherer Programmiersprachen wie PASCAL und MODULA2.<br />

INTERLIS-Datensätze bestehen immer aus einem Dateienpaar:<br />

�� .ili = Modellbeschreibung<br />

�� .itf = Daten<br />

4.2.1 Die Beschreibungsdatei (.ili)<br />

Die .ili-Datei beschreibt das Modell. Die Festlegung des Datenmodells und der Transferparameter<br />

eines Datentransfers ist durch eine formale Sprache definiert. Syntax-Regeln<br />

beschreiben dabei die zulässige Reihenfolge von Symbolen. Die Beschreibung folgt damit<br />

der Art und Weise, die bei der Beschreibung höherer Programmiersprachen üblich ist. Hier<br />

wird deshalb nur eine knappe, für das Verständnis nötige Darstellung angegeben. Für<br />

Einzelheiten wird auf die Literatur verwiesen (s. www.interlis.ch).<br />

Wichtige Schlüsselwörter:<br />

�� MODEL: Name des Modells (verweist auf MODL im itf)<br />

�� DOMAIN: Festlegung von Attribute und zulässige Wertebereiche<br />

�� TOPIC: Thema (TOPI im itf)<br />

�� TABLE: Tabellen zum Thema (TABL im itf)<br />

�� OPTIONAL: Optionale Attribute (nicht-optionale Attribute müss(t)en zwingend<br />

vorhanden sein)<br />

�� FORMAT: Formatierung der itf-Datei<br />

Beispiel:<br />

TRANSFER Datenkatalog;<br />

MODEL Grunddatensatz_GR<br />

DOMAIN<br />

LKoord = COORD2 480000.000 70000.000<br />

840000.000 300000.000;<br />

HKoord = COORD3 480000.000 70000.000 -200.000<br />

840000.000 300000.000 5000.000;<br />

Hoehe = DIM1 -200.000 5000.000;<br />

Genauigkeit = [0.0 .. 700.0]; !! in cm<br />

Zuverlaessigkeit = (ja, nein); !! genuegend, ungenuegend<br />

SchriftOri = GRADS 0.0 400.0;<br />

Status = (projektiert, gueltig);<br />

Qualitaetart = (AV93, ADV, pN, uebrige);<br />

Bestimmung = (terrestrisch, photogrammetrisch, digitalisiert,<br />

gerechnet_konstruiert, gescannt, GPS, uebrige);<br />

TOPIC Fixpunkte =<br />

TABLE LFP =<br />

Entstehung: -> LFPNachfuehrung; !! Beziehung 1-mc<br />

Nummer: TEXT*12; !! Vergabe durch Landestopographie<br />

NumPos: LKoord;<br />

<strong>FME</strong> - INTERLIS 1 Modul<br />

Version 1.0 / 05. Dezember 2007 Seite 3


NumOri: OPTIONAL SchriftOri; !! Default: 100.0<br />

NumHAli: OPTIONAL HALIGNMENT; !! Default: Center<br />

NumVAli: OPTIONAL VALIGNMENT; !! Default: Half<br />

Geometrie: HKoord // Geometrie innerhalb Entstehung<br />

LageGen: Genauigkeit;<br />

LageZuv: Zuverlaessigkeit;<br />

HoeheGen: Genauigkeit;<br />

HoeheZuv: Zuverlaessigkeit;<br />

Begehbarkeit: (begehbar, nicht_begehbar);<br />

SymbolOri: OPTIONAL SchriftOri; !! Default: 0.0<br />

Art: (LFP1, LFP2); !! Triangulationsp. I-III. Ordn., IV. Ordn.<br />

Herkunft: OPTIONAL Bestimmung;<br />

IDENT<br />

Nummer;<br />

Geometrie;<br />

END LFP;<br />

END Fixpunkte.<br />

END Grunddatensatz_GR.<br />

FORMAT FIX WITH LINESIZE = 75, TIDSIZE = 10;<br />

CODE<br />

BLANK = DEFAULT, UNDEFINED = DEFAULT, CONTINUE = DEFAULT;<br />

TID = I32;<br />

END.<br />

4.2.2 Die Datendatei (.itf)<br />

Die Datendatei enthält die Daten gemäss Beschreibung in der .ili-Datei. Zum obigen Beispiel<br />

sieht die Datei folgendermassen aus:<br />

SCNT<br />

GEOS 4 Export<br />

2406001421<br />

////<br />

MTID Datenkatalog<br />

MODL Grunddatensatz_GR<br />

TOPI Fixpunkte<br />

TABL LFP<br />

OBJE 0 1 12550414 751365.030 148084.250 100.0 0 \<br />

CONT 3 751362.030 148084.250 3208.840 3.0 0 4.0 0 0 100.0 \<br />

CONT 1 0<br />

OBJE 1 1 12550518 753181.000 151569.780 100.0 0 \<br />

CONT 3 753178.000 151569.780 2835.250 3.0 0 4.0 0 0 100.0 \<br />

CONT 1 0<br />

OBJE 64 1 12550401 751312.750 157594.520 100.0 0 \<br />

CONT 3 751309.750 157594.520 2265.410 3.0 0 4.0 0 0 100.0 \<br />

CONT 1 0<br />

OBJE 128 1 12350551 753001.700 159310.260 100.0 0 \<br />

CONT 3 752998.700 159310.260 1530.070 3.0 0 4.0 0 0 100.0 \<br />

CONT 1 0<br />

OBJE 229 1 12350550 753360.400 159739.950 100.0 0 \<br />

CONT 3 753357.400 159739.950 1258.270 3.0 0 4.0 0 0 100.0 \<br />

CONT 1 0<br />

OBJE 251 1 12350442 751543.720 159906.960 100.0 0 \<br />

CONT 3 751563.180 159906.920 1255.500 3.0 0 4.0 0 0 100.0 \<br />

CONT 1 0<br />

<strong>FME</strong> - INTERLIS 1 Modul<br />

Version 1.0 / 05. Dezember 2007 Seite 4


OBJE 329 1 12350643 755136.250 160082.840 100.0 0 \<br />

CONT 3 755133.250 160082.840 2162.660 3.0 0 4.0 0 0 100.0 \<br />

CONT 1 0<br />

ETAB<br />

ETOP<br />

EMOD<br />

ENDE<br />

4.3 Besondere Charakteristiken von INTERLIS<br />

Im folgenden werden besondere Charakteristiken von INTERLIS beschrieben, welche bei<br />

der Übersetzung mit <strong>FME</strong> beachtet werden müssen.<br />

4.3.1 Lookup-Tabellen<br />

Die Lookup-Tabellen sind Teile der .ili-Datei, welche Standardattribute von Objekten<br />

beschreiben.<br />

Beispiel:<br />

�� Begehbarkeit hat die Werte "begehbar" und "nicht begehbar". Im itf als "0" und "1"<br />

abgebildet.<br />

�� Art hat die Werte "LFP1" und "LFP2". Im itf als "0" und "1" abgebildet.<br />

TABLE LFP =<br />

Entstehung: -> LFPNachfuehrung; !! Beziehung 1-mc<br />

Nummer: TEXT*12; !! Vergabe durch Landestopographie<br />

NumPos: LKoord;<br />

NumOri: OPTIONAL SchriftOri; !! Default: 100.0<br />

NumHAli: OPTIONAL HALIGNMENT; !! Default: Center<br />

NumVAli: OPTIONAL VALIGNMENT; !! Default: Half<br />

Begehbarkeit: (begehbar, nicht_begehbar);<br />

SymbolOri: OPTIONAL SchriftOri; !! Default: 0.0<br />

Art: (LFP1, LFP2); !! Triangulationspunkte I-III. Ordn., IV. Ordn.<br />

Herkunft: OPTIONAL Bestimmung;<br />

IDENT<br />

Nummer;<br />

Geometrie;<br />

END LFP;<br />

Die Lookup-Tabellen werden durch das INTERLIS Modul in eigenen Tabellen gelesen und<br />

können mit den zugehörigen Daten verknüpft zu werden.<br />

<strong>FME</strong> - INTERLIS 1 Modul<br />

Version 1.0 / 05. Dezember 2007 Seite 5


4.3.2 Beschriftungen / Textausrichtung<br />

Für die Aufbereitung von Plänen müssen die Positionen von Texten festgehalten werden.<br />

Dabei muss festgelegt werden, welcher Stelle des Textes die Position entspricht. Mit dem<br />

horizontalen Alignment wird festgelegt, ob die Position auf dem linken oder rechten Rand<br />

des Textes oder in der Textmitte liegt. Das vertikale Alignment legt die Position in Richtung<br />

der Texthöhe fest.<br />

Der Abstand Cap-Base entspricht der Höhe der Grossbuchstaben. Unterlängen befinden<br />

sich im Bereich von Base-Bottom. Horizontales und vertikales Alignment können als<br />

vordefinierte Aufzählung verstanden werden. Die Wirkung ist, wie wenn man in der globalen<br />

Wertebereichdefinition folgendes definiert hätte.<br />

Folgende Abbildung verdeutlicht den Sachverhalt:<br />

Left C enter R ight<br />

In der DOMAIN können die Positionen definiert werden:<br />

DOMAIN<br />

HALIGNMENT = (Left, Center, Right);<br />

VALIGNMENT = (Top, Cap, Half, Base, Bottom);<br />

<strong>FME</strong> - INTERLIS 1 Modul<br />

Version 1.0 / 05. Dezember 2007 Seite 6<br />

Top<br />

Cap<br />

Half<br />

Base<br />

Bottom<br />

Normalerweise werden diese dann numerisch angegeben, also entsprechend:<br />

HALIGNMENT = (0,1,2);<br />

VALIGNMENT = (0,1,2,3,4);<br />

4.3.3 Undefinierte Attribute<br />

Attribute, die in der Modellbeschreibung mit "OPTIONAL" bezeichnet sind, können undefinierte<br />

Werte aufweisen. Zur Anzeige dient das Undefiniert-Zeichen. Üblicherweise wird<br />

dafür das Zeichen @ verwendet (Defaultwert). Im Rahmen der Beschreibung der Kodierung<br />

(Keyword CODE in der ili-Datei) kann es jedoch umdefiniert werden.<br />

In <strong>FME</strong> werden solche Attribute standardmässig wie folgt übernommen:<br />

�� Bei Textattribute: leer<br />

�� Bei numerischen Werten: -1<br />

4.3.4 Overlaps<br />

Überschneidungen, die innerhalb der gegebenen Toleranz liegen, sind gemäss INTERLIS-<br />

Definition im Zusammenhang mit Kreisbögen dann erlaubt, wenn sich der Kreisbogen<br />

ausgehend von einem Linienstützpunkt zunächst auf der einen Seite der anderen Linie<br />

befindet und diese dann schneidet, ohne dass zwischen dem gemeinsamen Stützpunkt und<br />

dem Schnittpunkt auf der einen oder anderen Linie weitere Stützpunkte liegen.


Diese Regelung erfolgte aus zwei Gründen:<br />

�� Einerseits sind bei Kreisbögen kleine Überschneidungen aus numerischen Gründen<br />

in gewissen Fällen (tangentiale Kreisbögen) nicht vermeidbar.<br />

�� Andererseits sind bei der Übernahme von Daten, die ursprünglich grafisch erfasst<br />

wurden, auch grössere Überlappungen (z.B. einige Zentimeter) zu tolerieren, will man<br />

nicht einen enormen Nachbearbeitungsaufwand in Kauf nehmen. Die Angabe der<br />

Toleranz muss in den gleichen Einheiten, wie die der Stützpunktkoordinaten erfolgen.<br />

Beispiel:<br />

TABLE BoFlaeche =<br />

Entstehung: OPTIONAL -> BBNachfuehrung // Gueltigkeit = gueltig //;<br />

!! Beziehung 1-mc<br />

Geometrie: AREA WITH (STRAIGHTS, ARCS) VERTEX LKoord<br />

WITHOUT OVERLAPS > 0.050;<br />

Qualitaet: OPTIONAL Qualitaetart; !! nicht in TOPIC Qualitaet<br />

Art: OPTIONAL BBArt;<br />

Herkunft: OPTIONAL Bestimmung;<br />

NO IDENT<br />

END BoFlaeche;<br />

Overlaps führen, falls unbearbeitet, bei der Poylgonbildung mit <strong>FME</strong> zu Fehler beim Aufbau<br />

der Topologie (sich selbst verschneidende Polygone). Dies kann mit <strong>FME</strong> vermieden<br />

werden, indem die Polygone bei der Übersetzung mit sich selber verschnitten werden. Eine<br />

Verfeinerung des Prozesses erlaubt auch die komplette Entfernung der Overlaps.<br />

Problematik: Zulässige Datenfehler in der INTERLIS Definition:<br />

sog. "selfintersecting polygons". Unzulässig bei den meisten GIS<br />

Systemen.<br />

Lösung 1: Verschneidung. Beim Schnittpunkt wird ein Knoten<br />

eingefügt und die gelbe Fläche resultiert bei der Polygonbildung<br />

als "Loch" in den Daten. Da es sich um Kleinstflächen im<br />

Millimeter-Bereich handelt, ist dies nicht sichtbar und eigentlich<br />

unerheblich.<br />

Lösung 2: Komplette "Entsorgung" des Overlaps durch<br />

Auflösung der Bögen in Segmente (wenn Sekantenabstand<br />

grösser als Overlap)<br />

Lösung 3: Komplette "Entsorgung" des Overlaps.<br />

<strong>FME</strong> - INTERLIS 1 Modul<br />

Version 1.0 / 05. Dezember 2007 Seite 7


4.3.5 Pseudo-Bögen<br />

Problematik: Bögen werden im INTERLIS durch drei Punkte<br />

definiert: Startpunkt, Scheitelpunkt, Endpunkt. Die Koordinaten<br />

werden im INTERLIS im Normalfall auf mm gerundet. Ist ein<br />

Radius sehr gross und der Bogen sehr kurz (kommt oft vor),<br />

liegen die drei Punkt wegen der Rundung auf mm auf einer Linie.<br />

Der Bogen ist kein Bogen mehr, sondern eine Gerade.<br />

Lösung: Abfangen von sehr kleinen Scheitelabstände und<br />

Umdefinition des Geometrietyps zu einer Geraden. Dies erfolgt<br />

beim Lesen von INTERLIS-Dateien automatisch.<br />

4.3.6 INTERLIS Datentypen AREA und SURFACE<br />

INTERLIS unterscheidet bei Flächenobjekten zwischen den Typen AREA und SURFACE,<br />

wie folgt:<br />

Geometrie: AREA WITH (STRAIGHTS, ARCS) VERTEX Lkoord<br />

Geometrie: SURFACE WITH (STRAIGHTS, ARCS) VERTEX Lkoord<br />

Solche Objekte müssen durch <strong>FME</strong> entsprechend anders behandelt werden.<br />

AREA Objekte sind Polygone, welche durch Linien und<br />

Punkte abgebildet werden, dabei gilt:<br />

�� Die Begrenzung einer Fläche ist nur einmal<br />

vorhanden und kann Linienattribute haben (z.B.<br />

Waldfeststellung in der Raumplanung)<br />

�� Die Attribute der Fläche "hängen" an den Punkten<br />

�� Die Begrenzungen dürfen in Theorie nicht<br />

überlappen (Ausnahme: OVERLAPS, s. oben)<br />

SURFACE Objekte sind in sich geschlossene Polygone<br />

(Anfangspunkt = Endpunkt), dabei gilt:<br />

�� Bei angrenzenden Polygonen ist die gemeinsame<br />

Grenze doppelt abgebildet<br />

�� Die Polygone können beliebig überlappen<br />

�� Die Attribute "hängen" direkt am Polygon<br />

<strong>FME</strong> - INTERLIS 1 Modul<br />

Version 1.0 / 05. Dezember 2007 Seite 8


4.3.7 Multiple Geometrien / Geometrien als Attribute<br />

Die INTERLIS Spezifikationen erlauben für eine Tabelle (ein Layer) mehrfache Geometrien,<br />

d.h. ein Layer kann sowohl Punkte, als auch Linien und Flächen enthalten. Die meisten GIS<br />

Systeme unterstützen das nicht (müssen in separaten Tabellen gespeichert werden).<br />

MapInfo unterstützt dies als eins der einzigen Systeme, wird aber von sehr wenigen<br />

Anwendern genutzt. Mehrfachgeometrien sollten aus Kompatibilitätsgründen zwischen<br />

Systemen bei der Modellierung vermieden werden.<br />

Geometrie1: SURFACE WITH (STRAIGHTS, ARCS) VERTEX Lkoord;<br />

Geometrie2: POLYLINE WITH (STRAIGHTS, ARCS) VERTEX LKoord;<br />

Geometrie3: LKoord;<br />

Aber es geht noch krasser: INTERLIS kann gar Attribute als eine Geometrie definieren!<br />

Dies sollte bei der Modellierung definitiv vermieden werden.<br />

Hilfslinie: OPTIONAL POLYLINE WITH (STRAIGHTS) VERTEX LKoord;<br />

Beachten Sie: Das <strong>FME</strong> INTERLIS Modul kann solche Geometrien lesen aber nicht<br />

schreiben (z.T. kann dies jedoch "ausgetrickst" werden). Ein Schreiben solcher Geometrien<br />

ist vorerst nicht geplant.<br />

4.3.8 Verweise<br />

Tabellen können auf andere verweisen. Im Beispiel unten verweist das Attribut Objekt der<br />

Tabelle "GrundstueckPos" (enthält die Position der Grundstücksnummer) zur ID der Tabelle<br />

"Grundstueck" (enthält die Grundstücksnummer). Bei vielen Systemen (z.B. ArcView,<br />

MapInfo, AutoCAD) ist es von Nutzen, diese Tabellen zusammenzufügen, um sie z.B. als<br />

Textobjekte anzeigen zu können. Dies kann direkt bei der Übersetzung mit <strong>FME</strong> erfolgen.<br />

OPTIONAL TABLE GrundstueckPos =<br />

Objekt: -> Grundstueck; !! Beziehung 1-m<br />

NumPos: LKoord // Position in der Regel innerhalb der Flaeche //;<br />

NumOri: OPTIONAL SchriftOri; !! Default: 100.0<br />

NumHAli: OPTIONAL HALIGNMENT; !! Default: Center<br />

NumVAli: OPTIONAL VALIGNMENT; !! Default: Half<br />

NO IDENT<br />

END GrundstueckPos;<br />

<strong>FME</strong> - INTERLIS 1 Modul<br />

Version 1.0 / 05. Dezember 2007 Seite 9


5 <strong>FME</strong> 2007 "Rich Geometry"<br />

5.1 Was ist "Rich Geometry"?<br />

<strong>FME</strong> hat schon immer Bögen unterstützt, dies aber nur als einzelne Objekte, d.h. nicht in<br />

Kombination mit Polylinien oder Polygonen. Das Bilden von Polygonen aus Linien und<br />

Bögen war bisher also nicht möglich. Beispiel:<br />

Abbildung 1: Rich Geometry, Polylinien<br />

<strong>FME</strong> bildet Bögen wie folgt ab (s. auch Abbildung unten):<br />

�� Center Point, Start Point, End Point<br />

�� Rotation<br />

�� Radius<br />

�� Ein- und Ausfallwinkel<br />

Abbildung 2: Bogeninformation in <strong>FME</strong><br />

<strong>FME</strong> - INTERLIS 1 Modul<br />

Version 1.0 / 05. Dezember 2007 Seite 10


5.2 Formate und "Rich Geometry"<br />

Übersicht der in der Schweiz gängigen Formate.<br />

�� Keine Unterstützung von "Rich Geometry":<br />

o ESRI Arc/Info Coverage / E00<br />

o ESRI Geodatabase MDB Version 8.x<br />

o ESRI Shape<br />

o MapInfo TAB<br />

o MySQL MyGIS<br />

o PostgreSQL/PostGIS<br />

�� Unterstützung von "Rich Geometry":<br />

o Autocad DXF/DWG<br />

o ESRI Geodatabase MDB ab Version 9.x<br />

o ESRI file based Geodatabase (ab ArcGIS 9.2)<br />

o ESRI ArcSDE<br />

o Geographic Markup Language (GML)<br />

o GeoMedia Access Warehouse<br />

o INTERLIS<br />

o Intergraph MGE<br />

o MapGuide SDF3<br />

o MicroStation DGN<br />

o Oracle Spatial<br />

o XML<br />

5.3 INTERLIS und "Rich Geometry"<br />

In INTERLIS werden Bögen über drei Punkte abgebildet, wie folgt:<br />

LIPT 758724.690 191914.401 = Anfangspunkt<br />

ARCP 758725.166 191913.579 = Scheitelpunkt<br />

LIPT 758725.324 191912.643 = Endpunkt<br />

<strong>FME</strong> - INTERLIS 1 Modul<br />

Version 1.0 / 05. Dezember 2007 Seite 11


6 Lesen und Schreiben von INTERLIS<br />

6.1 "Settings" des INTERLIS Moduls<br />

Die <strong>FME</strong> Optionen zu INTERLIS sind ("Settings" Knopf respektive "Parameters" in der<br />

Workbench):<br />

�� "Complex Feature Handling":<br />

Abbildung 3: INTERLIS Input Settings<br />

o "Combine": AREA Objekte werden automatisch zu Flächen gebildet, d.h. die<br />

Linien werden verschnitten (OVERLAPS Problematik, s. oben) und es werden<br />

Polygone gebildet. Diese werden schlussendlich mit den Punkten überlagert<br />

(Overlay) um die Attribute anzuhängen. Bei dieser Methode werden die<br />

Bögen immer in Segmente aufgelöst. Anwendung: INTERLIS nach Formaten,<br />

die Bögen nicht unterstützen wie MapInfo oder ESRI Shape.<br />

o "Split": AREA Objekte werden so gelesen wie sie sind, als Linien inklusive<br />

Bögen und als Punkte (s. Abbildung auf Seite 8).<br />

�� "Arc Handling":<br />

o "Stroke into Lines": Bögen in Liniensegmente umwandeln.<br />

o "Max. Deviation": Sekantenabstand für die Umwandlung.<br />

�� "MultiGeometryHandling":<br />

o "Keep in one Table": nicht implementiert, immer auf Nein setzen.<br />

Weitere INTERLIS Optionen sind:<br />

�� "Use generic Polygon Factories": Wurde aus Kompatibilitätsgründen mit früheren<br />

Versionen (alte <strong>FME</strong> Scripts) eingeführt. Bei neuen Versionen immer auf YES setzen<br />

(nur bei "Combine" wirksam).<br />

�� "Intersect Area Lines": Wurde aus Kompatibilitätsgründen mit früheren Versionen<br />

eingeführt. Bei neuen Versionen immer auf YES setzen (nur bei "Combine" wirksam).<br />

�� "Precision for Arc Stroking": Genauigkeit mit welcher die Bögen aufgelöst werden<br />

(Anzahl Stellen nach dem Komma, also z.B. 3 für mm).<br />

<strong>FME</strong> - INTERLIS 1 Modul<br />

Version 1.0 / 05. Dezember 2007 Seite 12


6.2 Fallbeispiele INTERLIS Lesen<br />

6.2.1 INTERLIS nach Autocad DXF / Geobau<br />

Autocad DXF ist ein CAD Format und insbesondere ältere Versionen haben keine<br />

Attributierung zugelassen. Daher wurden bei DXF Geobau die einzelnen Attribute auf<br />

Ebenen verteilt, also z.B. Gebäude auf die DXF Ebene 01211. Im Fallbeispiel wird eine<br />

Übersetzung von INTERLIS nach Geobau DXF aufgezeigt.<br />

Workbench-Datei: Interlis2DXF.fmw<br />

Für dieses Beispiel muss die INTERLIS-Datei mit folgenden Optionen geladen werden:<br />

�� "Complex Feature Handling": auf Split.<br />

�� "Arc Handling": Stroke deaktiviert.<br />

Abbildung 4: Einstellungen INTERLIS Input Settings<br />

Bevor wir die Übung starten, öffnen wir die Datei "sample.ili" im Viewer:<br />

�� Einmal mit der Option "Combine"<br />

�� Ein zweites Mal mit der Option "Split"<br />

Und vergleichen die Layer "bodenbedeckung_boflaeche" (Punkte, nur bei Option "Split"<br />

vorhanden) sowie "bodenbedeckung_boflaeche_geometrie".<br />

Die WB bewerkstelligt das folgende:<br />

�� Erzeugt aus AREA Objekte Polygone (Bodenbedeckung), weist Attribute zu<br />

�� Erzeugt aus SURFACE Objekte Polygone (EO Flächen), weist Attribute zu<br />

�� AREA-Objekte: Entsorgt allfällige Overlaps über einen Custom Transformer (s.<br />

Seite 18). Geben Sie hier die gewünschten Toleranzen ein:<br />

o Overlap Tolerance: sollte dem OVERLAP im ili entsprechen<br />

o Snapping Tolerance: in den meisten Fällen sollten 0.01m genügen<br />

�� Lesen des Attributs Art aus der ili-Datei<br />

�� Erzeugt Beschriftungen (Gebäudenummern)<br />

�� Zuweisen den Autocad-Layers nach Geobau DXF<br />

�� Ausgabe nach Autocad Geobau DXF<br />

<strong>FME</strong> - INTERLIS 1 Modul<br />

Version 1.0 / 05. Dezember 2007 Seite 13


Vorgehen zum Erzeugen der WB anhand der Bodenbedeckung:<br />

�� Workbench Source: "sample.ili" oder "sample.itf" mit obigen Einstellungen<br />

(Split/Stroke deaktiviert)<br />

�� Workbench Destination: "Autocad DXF/DWG", Zieldatei z.B. "bb.dxf" (oder "bb.dwg"<br />

für DWG)<br />

�� Auswahl der Layer "bodenbedeckung_boflaeche" (Punkte) und "bodenbedeckung_<br />

boflaeche_geometrie" (Linien) sowie "bodenbedeckung_gebaeudenummer":<br />

�� Bodenbedeckung Flächen:<br />

o Aus den Linien müssen nun Poylgone gebildet und diese mit den Punkten<br />

verschnitten werden. Für diesen Schritt setzen wir den Custom Transformer<br />

"OverlapsRemoverRichGeometry".<br />

o Mit zwei ValueMapper weisen wir die Beschreibung der Art sowie die<br />

zugehörigen AutoCAD Layer nach Geobau zu (Attribut "Autocad_Layer").<br />

Beschreibung der Art kann dabei aus der ili-Datei importiert werden (Layer<br />

Bodenbedeckung_Boflaeche _Art_LUT).<br />

o Ausgabe mit "Fanout by Attribute" auf Attribut "Autocad_Layer"<br />

�� Bodenbedeckung Gebäudenummer:<br />

o Mit dem Custom Transformer "INTERLIS_Text_Pos_Nummer" rechnen wir<br />

die Textpositionen auf die untere linke Ecke um (s. Kapitel 4.3.2)<br />

o Die Textrotation (Attribut "rotation") weisen wir dem Systemattribut<br />

"Autocad_Rotation" zu (Settings der Ausgabedatei, Format Attributes)<br />

�� Einzelobjekte (EO), Flächen:<br />

o Das komplizierte bei den EO ist, dass die Attribute für alle EO Typen<br />

(Flächen, Linien und Punkte in der gleichen Datei sitzen). In einem ersten<br />

Schritt müssen wir diese Attribute verbinden (siehe auch WB):<br />

o Danach weisen wir analog der Bodenbedeckung die Beschreibung der Art<br />

sowie das Attribut Autocad_Layer zu.<br />

<strong>FME</strong> - INTERLIS 1 Modul<br />

Version 1.0 / 05. Dezember 2007 Seite 14


o Als letztes bilden wir die Flächen über ein "AreaBuilder" Transformer. Dabei<br />

wählen wir alle den Flächen gemeinsame Attribute aus (d.h. aus jeweils allen<br />

Linien mit den gleichen Attributen wird eine Fläche gebildet).<br />

o Ausgabe mit "Fanout by Attribute" auf Attribut "Autocad_Layer"<br />

WICHITIG: Standardmässig ist in <strong>FME</strong> 2007 "Geometry Handling" auf "Classic" gesetzt. Dies<br />

müssen wir nun auf "Rich" setzen, im Navigator unter "Workspace Settings", "Advanced":<br />

6.2.2 INTERLIS nach MapInfo TAB<br />

MapInfo TAB ist ein relativ leistungsfähiges GIS-Format welches auch Labels (Annotations),<br />

Farben, Style etc. unterstützt. Beachten Sie, dass <strong>FME</strong> drei Varianten des MapInfo Formats<br />

unterstützt:<br />

�� MapInfo MIF/MID: MapInfo Export Dateien (ASCII).<br />

�� MapInfo TAB über MFAL (MapInfo File Access Library von MapInfo Corp.).<br />

Verursacht Probleme bei Textpositionen, nicht empfohlen.<br />

�� MapInfo TAB (MITAB): TAB über MITAB (Open Source Library), empfohlen.<br />

Workbench-Datei: Interlis2MapInfo.fmw<br />

Bewerkstelligt das gleiche wie bei DXF, ausser dass:<br />

�� Die Daten nicht auf Layer verteilet werden<br />

�� Die Bodenbedeckung automatisch eingefärbt wird<br />

6.2.3 INTERLIS nach ESRI Shape<br />

ESRI Shape ist ein recht einfaches Format, welches nur Punkte, Linien und Flächen<br />

unterstützt. Folgendes Wissen ist wichtig für die Übersetzung:<br />

�� Spaltennamen: Beschränkt auf zehn Zeichen, müssen gross geschrieben sein.<br />

�� Geometrietypen: Punkte, Linien und Flächen (Typ "Surface"), keine gemischten<br />

Geometrien möglich.<br />

�� Labels: Insbesondere mit ArcView 3.x sehr beschränkt, keine Angabe der Rotation<br />

möglich.<br />

�� Gestaltung: Format unterstützt keine Symbole, Farben, Schraffuren etc.<br />

Workbench-Datei: Interlis2Shape.fmw<br />

<strong>FME</strong> - INTERLIS 1 Modul<br />

Version 1.0 / 05. Dezember 2007 Seite 15


Bewerkstelligt das gleiche wie bei DXF und MapInfo, ausser dass:<br />

�� Für ArcView 3.x werden die Texte "gestroked", d.h. als Polygone aufbereitet. S.<br />

Workbench, Ausgabe nach Layer "BB_Gebaeudenummer_Stroked". Nicht vergessen<br />

den Layer als Polygonlayer zu definieren. Damit sind die Texte für ArcView 3.x<br />

"pfannenfertig" aufbereitet!<br />

�� Für ArcGIS kann man die Rotation als Attribut mitgeben, Ausgabe nach Punktlayer<br />

"BB_Gebaeudenummer".<br />

6.2.4 INTERLIS nach ESRI Geodatabase (mdb oder file)<br />

Bei der ESRI Geodatabase gilt folgendes zu beachten:<br />

�� Um ESRI Geodatabases mit <strong>FME</strong> zu schreiben, muss ArcGIS auf dem gleichen<br />

System installiert sein.<br />

�� Die Version 8.x unterstützt keine Bögen.<br />

�� Standardmässig wird die Version der installierten ArcGIS Version erzeugt. Will man<br />

ältere Versionen erstellen, muss man in eine bestehende Geodatabase der<br />

gewünschten Version schreiben.<br />

�� Geodatabases unterstützten Beschriftungslayer (sog. Annotation-Layers)<br />

Workbench-Datei: Interlis2ESRI_GDB.fmw<br />

Bewerkstelligt das gleiche wie oben, ausser dass:<br />

�� Die Bodenbedeckung und die EO-Flächen werden mit Bögen geschrieben (falls<br />

ArcGIS > 9.x)<br />

�� Die Beschriftung wird als Annotation-Layer geschrieben, inklusive Rotation, Schrift<br />

wird als Arial Italic definiert. Siehe dazu die exponierten System-Attribute<br />

"geodb_font_name", "geodb_font_italic" (muss yes oder no sein) sowie<br />

"geodb_text_angle".<br />

�� Beachten Sie auch die Hilfe zum Format, unter "Feature Representation", "Annotation<br />

Attributes"<br />

6.2.5 INTERLIS nach PostGIS<br />

PostGIS ist eine sehr leistungsfähige Geodatenbank, leider unterstützt diese keine Bögen.<br />

Im Folgenden werden INTERLIS Daten nach PostGIS geschrieben, wobei die Bogeninformation<br />

als Attribut gespeichert wird. Bei PostGIS sollte folgendes beachtet werden:<br />

�� Unterstützt nur "simple features", heisst Punkte, Linien und Polygone. Gemischte<br />

Geometrien sind zwar möglich, aber nicht zu empfehlen.<br />

�� Tabellen- und Spaltennamen sollten klein geschrieben werden (PostgreSQL<br />

Standard). So ist z.B. der Zugriff von MapServer auf PostGIS Daten problemloser.<br />

Workbench-Datei: Interlis2PostGIS.fmw<br />

Bewerkstelligt folgendes:<br />

�� Schreibt Bodenbedeckung und Einzelobjekte als Polygone.<br />

<strong>FME</strong> - INTERLIS 1 Modul<br />

Version 1.0 / 05. Dezember 2007 Seite 16


�� Gleichzeitig als Linien mit der Bogeninformation (für die spätere Rekonstruktion der<br />

Bögen nach INTERLIS oder anderen Formaten welche Bögen unterstützen).<br />

�� Beschriftungen mit Text und Rotation.<br />

6.3 Fallbeispiele INTERLIS Schreiben<br />

6.3.1 Einführung<br />

Normalerweise wird man bei INTERLIS immer zu einem bestehenden Modell schreiben. Das<br />

INTERLIS Modul kann aber auch Modelle anhand der Input-Daten erzeugen. Beim<br />

Schreiben nach INTERLIS gilt folgendes zu beachten:<br />

�� INTERLIS unterstützt keine aggregierten Objekte. Wenn Sie aggregierte Objekte<br />

in Ihren Daten haben, immer ein Deaggregator Transformer davor schalten.<br />

�� Die Tabellen- und Spaltennamen müssen zwingend die gleichen sein wie im Modell.<br />

�� Die Datentypen müssen zwingend die gleichen sein wie im Modell.<br />

�� Nicht optionale Attribute müssen zwingend vorhanden sein (sind sie es nicht,<br />

erfolgt jeweils eine Warnung).<br />

6.3.2 MapInfo nach INTERLIS<br />

Die oben erzeugte MapInfo-Dateien der Bodenbedeckung und der EO-Flächen sollen zurück<br />

nach INTERLIS transferiert werden. Zu beachten gilt:<br />

�� Die Bögen gehen verloren, da diese Information nicht übertragen wurde (möglich<br />

wäre es, s. Beispiel mit PostGIS)<br />

�� Die Bodenbedeckung wurde zu MapInfo "Regions" umgewandelt also zu INTERLIS<br />

"Surface". Dies muss rückgängig gemacht werden.<br />

�� Die Textpositionen wurden umgerechnet, die neuen Positionen sind jetzt alle unten<br />

links.<br />

�� Einige der Attribute wurden nicht mitgenommen, es müssen Default-Werte vergeben<br />

werden.<br />

Workbench-Datei: mitab2interlis.fmw<br />

Vorgehen zum Erstellen der Workbench-Datei:<br />

�� Am besten geht man den Weg über eine leere Workbench und die Menüs "Source<br />

Data" und "Destination Data":<br />

o Source Data / Add Dataset und die MapInfo-Dateien hinzufügen.<br />

o Destination Data / Add Dataset und die INTERLIS-Datei hinzufügen (Add<br />

Feature Type ... mit Nein beantworten).<br />

o Destination Data / Import Feature Type Definition. Wichtig: Settings auf Split.<br />

o Die Layer wie in der Workbench ersichtlich auswählen ("Bodenbedeckung_<br />

BoFlaeche", "Bodenbedeckung_BoFlaeche_Geometrie" etc.)<br />

�� In einem ersten Schritt werden den BB-Flächen über ein "Counter" OID (interlis_oid)<br />

zugewiesen (dies willkürlich, z.B. bei 1 startend).<br />

<strong>FME</strong> - INTERLIS 1 Modul<br />

Version 1.0 / 05. Dezember 2007 Seite 17


�� Dann werden aus den Flächen ("Regions") wieder INTERLIS AREAs erzeugt indem:<br />

o Punkte innerhalb der Flächen generiert werden (InsidePointReplacer<br />

Transformer).<br />

o Aus den Flächen topologisch korrekte Linien erzeugt werden, am besten mit<br />

einem Intersector Transformer.<br />

�� Die Gebäudenummern werden in einem ersten Schritt mit den Flächen verschnitten<br />

(Relation der Gebäudenummern zu den Gebäuden der Bodenbedeckung):<br />

TABLE Gebaeudenummer =<br />

Objekt: -> BoFlaeche // Art = Gebaeude //; !! Beziehung 1-mc<br />

�� Danach wird die Rotation umgerechnet (von MapInfo nach Gon); dazu muss das<br />

Attribut mapinfo_rotation exponiert werden (Formatattribut der Eingangsdatei).<br />

�� Ausgabe mit Default-Werte für Position unten links.<br />

�� Einzelobjekte Flächen: Erzeugen der OID und Ausgaben in der drei Tabellen. Die<br />

Relation ist hier immer durch die OID gegeben (s. auch Seite 14 unten).<br />

6.3.3 PostGIS nach INTERLIS<br />

Die oben erzeugte PostGIS DB soll zurück nach INTERLIS übersetzt werden, inklusive<br />

Rekonstruktion der Bögen anhand der Attribute.<br />

Workbench-Datei: postgis2interlis.fmw<br />

Die WB bewerkstelligt das Gleiche wie oben mit MapInfo gezeigt, ausser dass die Bögen<br />

rekonstruiert werden:<br />

�� Wichtig: Workspace Settings, Advanced, Geometry Handling auf "Rich"<br />

�� Die Bögen werden wie folgt wieder erzeugt:<br />

o Testen ob Bogen<br />

o Wenn ja, Bogen erzeugen<br />

o Wenn ja, Bogenattribute setzen (Anfang- und Endpunkt müssen wieder gleich<br />

sein, auf mm gerundet)<br />

6.4 Custom Transformers<br />

In den obigen Beispielen sind zwei "Custom Transformers" eingebaut:<br />

�� "OverlapsRemoverRichGeometry_PolyBuilder": Dieser Transformer bereinigt die<br />

Overlaps (Lösung 3 auf Seite 7) und bildet die Polygone mir Rich Geometry. Es<br />

werden dabei die Polygone und die Polylinien ausgegeben (Polylinien s. Beispiel<br />

"INTERLIS nach PostGIS"). Dabei kann die Snap- und Overlap-Toleranz angegeben<br />

werden.<br />

�� "INTERLIS_Text_Pos": Dieser Transformer rechnet die Textpositionen auf unten<br />

links um (s. auch Kapitel 4.3.2). Dies anhand der Vali/Hali/Ori und Text-Attribute.<br />

Bei der Installation werden die Custom Transformers werden ins Verzeichnis <strong>FME</strong>-InstallDir<br />

\INTERLIS\CustTrans kopiert. Doppelklick auf die Dateien um diese in <strong>FME</strong> zu installieren. In<br />

der Workbench finden Sie diese dann unter Transformers / Categorized / INTERLIS.<br />

<strong>FME</strong> - INTERLIS 1 Modul<br />

Version 1.0 / 05. Dezember 2007 Seite 18

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!