FME - Tydac AG
FME - Tydac AG FME - Tydac AG
Version: 1.0 Datum: 05. Dezember 2007 FME INTERLIS 1 Modul Autor: Flavio Hendry - TYDAC AG
- Seite 2 und 3: Inhalt 1 Release Notes Build 29....
- Seite 4 und 5: Versionen Version Datum Person Beme
- Seite 6 und 7: 4 INTERLIS - Kurze Einführung © A
- Seite 8 und 9: NumOri: OPTIONAL SchriftOri; !! Def
- Seite 10 und 11: 4.3.2 Beschriftungen / Textausricht
- Seite 12 und 13: 4.3.5 Pseudo-Bögen Problematik: B
- Seite 14 und 15: 5 FME 2007 "Rich Geometry" 5.1 Was
- Seite 16 und 17: 6 Lesen und Schreiben von INTERLIS
- Seite 18 und 19: Vorgehen zum Erzeugen der WB anhand
- Seite 20 und 21: Bewerkstelligt das gleiche wie bei
- Seite 22: �� Dann werden aus den Flächen
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