Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Version: 1.1<br />
Datum: 08. Februar 2009<br />
<strong>FME</strong><br />
INTERLIS 1 Modul<br />
Autor: Flavio Hendry - TYDAC <strong>AG</strong>
Inhalt<br />
1 TYDAC übernimmt Modul von GeoTask ...................................................................... 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.1 / 08. Februar 2009 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.3.4 Handling von Inseln (SURFACE Objekte) ....................................................................19<br />
6.4 Custom Transformers ............................................................................................. 20<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 />
Abbildung 5: Handling von Inseln in der Workbench ............................................................. 19<br />
<strong>FME</strong> - INTERLIS 1 Modul<br />
Version 1.1 / 08. Februar 2009 Seite ii
Versionen<br />
Version Datum Person Bemerkungen<br />
1.0 November 2007 TYDAC - Flavio Hendry Erste Fassung<br />
1.1 Februar 2009 TYDAC - Flavio Hendry Anpassungen <strong>FME</strong> 2009<br />
COPYRIGHT Handbuch<br />
Ergänzungen Inseln<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.1 / 08. Februar 2009 Seite iii
1 TYDAC übernimmt Modul von GeoTask<br />
Im Frühling 2007 wurde das INTERLIS Modul durch die TYDAC <strong>AG</strong> übernommen. Die<br />
wesentlichen Neuerungen seit der Übernahme 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 />
� Automatisches Aufräumen temporärer Dateien.<br />
� Ausführliche Dokumentation (auf Deutsch und Englisch).<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 />
Wenn Sie INTERLIS schon kennen, gehen Sie direkt zu Kapitel 4.3. Hier können Sie sich<br />
über INTERLIS-Besonderheiten informieren, die bei der Umsetzung mit <strong>FME</strong> wichtig sind.<br />
Es lohnt sich die beigelegten Beispiele zu studieren. Darin sind einige "Tricks" enthalten, die<br />
Ihnen die Arbeit erleichtern dürften.<br />
<strong>FME</strong> - INTERLIS 1 Modul<br />
Version 1.1 / 08. Februar 2009 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.1 / 08. Februar 2009 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.1 / 08. Februar 2009 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.1 / 08. Februar 2009 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.1 / 08. Februar 2009 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.1 / 08. Februar 2009 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.1 / 08. Februar 2009 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.1 / 08. Februar 2009 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.1 / 08. Februar 2009 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.1 / 08. Februar 2009 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.1 / 08. Februar 2009 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.<br />
die Linien werden verschnitten (OVERLAPS Problematik, s. oben) und es<br />
werden Polygone gebildet. Diese werden schlussendlich mit den Punkten<br />
überlagert (Overlay) um die Attribute anzuhängen. Bei dieser Methode werden<br />
die Bögen immer in Segmente aufgelöst. Anwendung: INTERLIS nach<br />
Formaten, 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 />
� "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.1 / 08. Februar 2009 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 20). 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.1 / 08. Februar 2009 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.1 / 08. Februar 2009 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.1 / 08. Februar 2009 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.1 / 08. Februar 2009 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.1 / 08. Februar 2009 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 />
<strong>FME</strong> - INTERLIS 1 Modul<br />
Version 1.1 / 08. Februar 2009 Seite 18
6.3.4 Handling von Inseln (SURFACE Objekte)<br />
SURFACE Objekte lassen im Gegensatz zu AREA Objekte Inseln zu. Um mit dem TYDAC<br />
INTERLIS Modul Inseln schreiben zu können müssen diese via Workbench gesondert<br />
extrahiert werden.<br />
Workbench-Datei: islands.fmw<br />
Erläuterungen zur Abbildung:<br />
Abbildung 5: Handling von Inseln in der Workbench<br />
� FeatureHolder: Wartet bis alle Objekte "ankommen", notwendig falls Daten davor<br />
prozessiert werden.<br />
� Counter_1: Erzeugt Attribut interlis_oid_1<br />
� DonutHoleExtractor: Erzeugt Umhüllende (OuterShell) und Inseln (Hole)<br />
� Counter_2: Erzeugt Attribut interlis_oid_2<br />
� Sorter: Sortiert nach interlis_oid_1<br />
<strong>FME</strong> - INTERLIS 1 Modul<br />
Version 1.1 / 08. Februar 2009 Seite 19
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.1 / 08. Februar 2009 Seite 20