Mit dem Modul ILIN können Objekte aus einer INTERLIS 1 .itf Datei gelesen werden. Der Modul interpretiert neben der .itf Datei auch die zugehörigen INTERLIS 1 Datenmodelle (.ili Dateien). Jedes Objekt wird vom Modul auf seine Konsistenz gegenüber den INTERLIS 1 Datenmodellen überprüft. Falls z.B. zwingende Attribute vergessen oder falsche Attributwerte gefunden werden, werden entsprechende Fehlermeldungen ausgegeben.
Der Modul wird mit:
|INCL \script\ilin.mod
in einer ICS RUN1-Konfiguration verfügbar gemacht.
Folgende Parameter können in der Map ILIN_PARAM für den Modul gesetzt werden:
Parameter | req/opt | Beschreibung |
INTERLIS_DEF | r | Dateiname der INTERLIS Modelldatei. Die Angabe des Parameters ist obligatorisch |
METHA_OBJECTS | r | ON oder OFF ,
Default = OFF . Methaobjekte liefern ein
oder aus. |
LOG_TABLE | r | ON oder OFF ,
Default = ON . Für jede gelesene Tabelle
eine Meldung ausgeben. |
TRACE | r | ON oder OFF ,
Default = OFF . Für jedes gelesene Objekt
eine Zeile ausgeben. |
ENUM_TO_TEXT | r | ON oder OFF ,
Default = OFF . Aufzählungsattribute auch
als Textversion liefern. Die Textversion des Attributs ist
in IN.<Attribut>_TXT
verfügbar. |
CALC_SURFACE | r | ON oder OFF ,
Default = OFF . SURFACE-Geometrien
berechnen und dem Hauptobjekt zuordnen. |
VALUE_CHECK | r | ON oder OFF ,
Default = ON . Wertebereichtests auf
Attributen durchführen. |
CHARSET_CHECK | r | ON oder OFF ,
Default = OFF . Zeichensatz gemäss Norm
SN612030 überprüfen. |
MATH_DEGREES | r | ON oder OFF ,
Default = OFF . DEGREES
im mathematischen Sinn interpretieren, d.h.
0.0 = horizontal, Orientierung =
Gegenuhrzeigersinn. |
ARC_CHECK | r | ON oder OFF ,
Default = OFF . Kreisbogengeometrie
testen. |
DOUBLEPOINT_CHECK | r | ON oder OFF ,
Default = OFF . Nacheinanderfolgende
doppelte Punkte in Linien testen. |
TOPICS | r | topic[,topic]. Nur Topics gemäss
Liste in TOPICS lesen. Die Topics müssen
als kommaseparierte Liste (z.B.
Fixpunkte,Bodenbedeckung ) angegeben
werden. |
SYNTAX_ERROR_ HALT | r | ON oder OFF ,
Default = OFF . Bei einem Syntax-Error in
der INTERLIS-Datei wird das Weiterlesen abgebrochen. |
DEBUG | r | ON oder OFF ,
Default = OFF . Debugmodus ein oder
aus. |
SAVE_REF | r | ON oder OFF ,
Default = ON . INTERLIS Referenzen
unterstützen. Falls die Option eingeschaltet ist können
INTERLIS Referenzen (-> ) in der
Skriptsprache durch Angabe des vollständigen Pfad (z.B.
IN.Objekt.Nummer ) aufgelöst werden . Dazu
müssen die referenzierten Objekte zwischengespeichert
werden. Falls die Option auf OFF gesetzt
ist, werden die referenzierten Objekte nicht
zwischengespeichert. Die Auflösung der Referenzen via den
Pfad ist dann nicht mehr möglich, dafür ist das Lesen der
Inputdatei schneller. |
STATUS | r | Enthält nach dem Lesen eines Objektes einen Fehlerstatus, falls ein Fehler aufgetreten ist. |
TAKE_RANGE | o | topic[,topic]. Nur Range berechnen
für Topics, die in der Liste TAKE_RANGE
sind. Die zu berücksichtigen Topics müssen als
kommaseparierte Liste (z.B.
Fixpunkte,Bodenbedeckung ) angegeben
werden. ILIN berechnet für die gelesenen
Objekte die maximale Ausdehnung und stellt diese in
ILIN_PARAM mit
MIN_X,MIN_Y,MAX_X,MAX_Y zur Verfügung.
Diese Ausdehung kann/wird von Konfigurationen
weiterverarbeitet. Mit diesem Parameter kann die Berechnung
des Ranges auf spezifizierte Topics eingeschränkt
werden. |
IGNORE_RANGE | o | topic[,topic]. Nur Range berechnen
für Topics, die nicht in der Liste
IGNORE_RANGE sind. Gegenteil von
TAKE_RANGE . Ist
TAKE_RANGE definiert, wird dieser
Parameter ignoriert. |
STATISTICS | r | ON oder OFF ,
Default = OFF . Statistik
anzeigen. |
STATISTICS_FILE | o | ON oder OFF ,
Default = OFF . Statistik mit
File. |
STATISTICS_MODEL | o | ON oder OFF ,
Default = OFF . Statistik mit
Model. |
Komponente | req/opt | Beschreibung |
IN.MODEL(s) | r | Model des IN Objekts. |
IN.TOPIC(s) | r | Topic des IN-Objekt |
IN.TABLE(s) | r | Table des IN-Objekts. |
IN.OBJID(s) | r | Transferidentifikation des IN-Objekts . |
IN.LINE(i) | r | Zeilennummer des Objekts in der Inputdatei. |
Normalerweise wird vom Modul pro
OBJE
-Zeile ein Objekt geliefert. Falls der
Parmeter ILIN_PARAM.METHA_OBJECTS
auf
'ON'
gesetzt wurde, werden auch für die
INTERLIS Label MODL
,
EMOD
, TOPI
,
ETOP
, TAB
L,
ETAB
Objekte zurückgeliefert (sog.
Methaobjekte).
Für INTERLIS-Tabellen die implizit aus SURFACE-Deklarationen entstehen (z.B. Fixpunkte.LFPNachfuehrung_Perimeter) sind folgende zusätzlichen Objekte und Komponenten verfügbar:
Objekt | req/opt | Beschreibung |
<Maintable>_
<Geometry-Attribute> | r | Implizite INTERLIS Table gebildet aus der Haupttabelle mit dem SURFACE-Attribute und dem Namen des SURFACE Attributes. |
Komponente | req/opt | Beschreibung |
IN.GEOM(l) | r | Geometrie des Objekts. |
IN.REFID(s) | r | Referenz auf das Hauptobjekt. |
Falls der Parameter
ILIN_PARAM.CALC_SURFACE
auf
ON
gesetzt wurde, werden alle SURFACE
Flächen direkt als Attribut zum Objekt geliefert. Falls
ausserdem eine LINEATTR Definition für die SURFACE im
Datenmodell definiert wurde, wird das LINATTR Attribut als
GATTR (s.a. ICS.GET_GATTR
) zu den Randlinien
der Fläche gespeichert. Bei mehreren LINEATTR Attributen pro
SURFACE wird das erste Attribut vom Grundtyp INTEGER als GATTR
geliefert.
Für INTELIS-Tabellen die implizit aus AREA-Deklarationen entstehen (z.B. Bodenbedeckung.BoFlaeche_Geometrie) sind folgende zusätzlichen Objekte und Komponenten verfügbar:
Objekt | req/opt | Beschreibung |
<Maintable>_
<Geometry-Attribute> | r | Implizite INTERLIS Table gebildet aus der Haupttabelle mit dem AREA-Attribute und dem Namen des AREA Attributes. |
Komponente | req/opt | Beschreibung |
IN.GEOM(l) | r | Geometrie des Objekts. |
Die restlichen Objektkomponenten sind abhängig von der
dazughörigen INTERLIS Tablle (s.a. IN.MODEL
,
IN.TOPIC
bzw. IN.TABLE
). Alle
INTERLIS Attribute werden als Kompontenten des IN-Objekts mit dem
gleichem Namen geliefert. Die INTERLIS Datentypen werden wie folgt auf
ICS Datentypen abgebildet:
INTERLIS Datentyp | ICS Datentyp |
IRANGE | int. |
RRANGE | real. |
Text | string. |
GRADS | real. |
DEGREES | real. |
RADIANS | real. |
ENUMERATION | int. string bei ILIN_PARAM.ENUM_TO_TEXT=ON |
COORD2 | point. |
COORD3 | point. |
POLYLINE | line. |
SURFACE | area. bei ILIN_PARAM.CALC_SURFACE=ON |
AREA | point. Zentroid. |
-> (Referenz) | ilink. |
Referenzen von INTERLIS-Objekten auf andere INTERLIS-Objekte (z.B.
Hoehen.Entstehung : -> HoehenNachfuehrung) sind als spezieller
Datentyp ilink
implementiert. INTERLIS-Referenzen
können aufgelöst werden, indem deren Komponenten in iG/Script
angesprochen werden (z.B.
IN.Entstehung.Identifikator
).
Falls mit der Parameter ILIN_PARAM.CALC_SURFACE
auf ON
gesetzt wurde, werden alle SURFACE Flächen
direkt als Attribut zum Objekt geliefert.
Falls ausserdem eine LINEATTR
Definition für
die SURFACE im Datenmodell definiert wurde, wird das
LINATTR
Attribut als GATTR
(s.a.
ICS.GET_GATTR
) zu den Randlinien der Fläche
gespeichert. Bei mehreren LINEATTR
Attributen pro
SURFACE wird das erste Attribut vom Grundtyp INTEGER als
GATTR
geliefert.
Prozedur | ILIN_OPEN [s input][] |
Beschreibung | Öffnet eine bestehende INTERLIS 1 Datei <input> und initialisiert den Modul. Die Prozedur wird von RUN1 automatisch aufgerufen. |
Beispiel |
|
Prozedur | ILIN_READ_OBJECT [][b state] |
Beschreibung | Liest das nächste IN-Objekt aus der geöffneten INTERLIS 1 Datei. Die Prozedur wird von RUN1 automatisch aufgerufen. |
Beispiel |
|
Prozedur | ILIN_CLOSE [][] |
Beschreibung | Schliesst den Modul und gibt die durch den Modul belegten Resourcen wieder frei. Die Prozedur wird von RUN1 automatisch aufgerufen. |
Beispiel |
|
Methode | ILIN.GET_ILINK_KEY [ilink il] [s key] |
Beschreibung | Schlüssel aus Beziehungsattribut lesen. |
Beispiel |
|
Methode | ILIN.GET_ILINK_TABLE [ilink il] [s table] |
Beschreibung | Tabellenname der referenzierten Tabelle aus Beziehungsattribut lesen. |
Beispiel |
|
Methode | ILIN.GET_ILINK_OBJECT [ilink il] [m object] |
Beschreibung | Liefert zu einem ilink das referenzierte Objekt als Map. |
Beispiel |
|
Methode | ILIN.GET_OBJECT_ILINK_LIST [m object, i linkdepthmax] [li list] |
Beschreibung | Liefert zu einem Input-Objekt - enthalten in der Map object - alle Objekte als Maps in einer Liste list zurück, auf die das Input-Objekt über Beziehungsattribute referenziert. Falls das Input-Objekt keine Beziehungsattribute aufweist, ist die Liste leer. Mit den Argument linkdepthmax kann die Tiefe der zu berücksichtigen Beziehungen definiert werden. Die Tiefe 0 liefert keine Objekte zurück. Die Tiefe 1 liefert alle Objekte zurück, die direkt vom Input-Objekt referenziert werden. Die Tiefe 2 liefert alle Objekte zurück, die direkt vom Input-Objekt referenziert werden und diejenigen, die von diesen vom Input-Objekte referenzierten Objekte wiederum referenzieren. Und so weiter. |
Beispiel |
|
Methode | ILIN.COMPILE [s modelldatei] [s modell,b status] |
Beschreibung | Modelldatei
<modelldatei> (.ili) mit
INTERLIS-Compiler compilieren. Falls das Modell keine Fehler
enthält, wird TRUE und der Name des
Modells auf dem Stack geliefert, sonst
FALSE . ILIN.COMPILE
erzeugt ein Abbild des INTERLIS-Datenmodells in der
vordefinierten Map ILIN_MODEL . |
Beispiel |
|
Methode | ILIN.GET_MODEL [s modelldatei] [s modell,b status] |
Beschreibung | Modellnamen aus der
.ili Datei <modelldatei> lesen.
Falls der Modellname gelesen werden konnte, wird
TRUE und der Name des Modells auf dem
Stack geliefert, sonst FALSE .
ILIN.GET_MODEL ist für die Bestimmung des
Modellnamens die effizientere Variante als
ILIN.COMPILE .
ILIN.GET_MODEL füllt jedoch im Gegensatz
zu ILIN.COMPILE die Map
ILIN_MODEL nicht. |
Beispiel |
|
Methode | ILIN.SET_ALTRANGE [r minx,r miny,r minz,r maxx,r maxy,r maxz] [] |
Beschreibung | Alternativen Koordinatenbereich für Korrdinatenbereichtests festlegen. Der neue Koordinatenbereich übersteuert die aus dem INTERLIS-Datenmodell gelesenen Koordinatenbereiche. |
Beispiel |
|
! Diese ICS Konfiguration zeigt alle von ilin.mod ! gelesenen Objekte in der .log Datei an. |LICENSE \license\iltools.lic MAP USER_INPUT1 DIALOG => FILE ! FILE | STRING | ODBC MESSAGE => 'Enter .itf Input File' FILE_FILTER => itf FILE_EXISTS => TRUE OPT => input END_MAP MAP ILIN_PARAM INTERLIS_DEF => \models\Grunddatensatz.ili TRACE => OFF STATISTICS => ON END_MAP MAP INPUT_SOURCES I1 => ILIN,OPT.input END_MAP MAP INOUT I1 => DISPLAY_OBJECT1,IN END_MAP |INCL \script\ilin.mod |INCL \script\run1.prg