Mit dem Modul INTERSECT können Flächen, Linien und Punkte miteinander verschnitten werden. Zum Beispiel aus der amtlichen Vermessung die Liegenschaften mit der Bodenbedeckung und den Einzelobjekten.
INTERSECT wird mit:
|INCL \script\intersect.mod
in einer ICS RUN1-Konfiguration verfügbar gemacht.
Der Modul verwendet die Klasse TOPO
und
GEOINDEX
.
Der Modul |
Das Beispiel zeigt als Ausgangslage eine Situation der Amtlichen Vermessung mit Flächen der Liegenschaften, Flächen der Bodenbedeckung und Flächen, Linien und Punkten der Einzelobjekte.
Die Objekte für einen Verschnitt werden wie folgt in das Modul
INTERSECT
mit der Prozedure
INTERSECT_WRITE_OBJECT3,<Classname>,<Geometrie>,<Objekt-Map>
geschrieben.
MAP INPUT_SOURCES ! INTERLIS objects read !---------------------- I1 => ILTOPO,OPT.input END_MAP MAP INOUT ! INTERLIS objects write to intersect-module !----------------------------------------- I1 => IN.TOPIC,IN.TABLE I1,Bodenbedeckung,BoFlaeche_Area => INTERSECT_WRITE_OBJECT3,IN.TABLE,IN.GEOM,IN I1,Einzelobjekte,Flaechenelement => INTERSECT_WRITE_OBJECT3,EOFlaechenelement,IN.Geometrie,IN I1,Einzelobjekte,Linienelement => INTERSECT_WRITE_OBJECT3,EOLinienelement,IN.Geometrie,IN I1,Einzelobjekte,Punktelement => INTERSECT_WRITE_OBJECT3,EOPunktelement,IN.Geometrie,IN I1,Liegenschaften,Liegenschaft_Area => INTERSECT_WRITE_OBJECT3,IN.TABLE,IN.GEOM,IN I1,* => OFF END_MAP
Der Verschnitt im Modus MAININTERSECTION
liefert pro Objekt der Hauptklasse Fläche der Liegenschaften ein
Objekt. Jedes Objekt beinhaltet als Listen die Verschnittgeometrien
der Unterklassen Flächen der Bodenbedeckung, Flächen der
Einzelobjekte, Linien der Einzelobjekte und Punkte der
Einzelobjekte.
Der Veschnitt wird wie folgt berechnet und die Objekte gelesen.
MAP INPUT_SOURCES ! MAININTERSECTION intersect example source !---------------------------------------- SM => INTERSECT,MAININTERSECTION,Liegenschaft_Area,BoFlaeche_Area,EOFlaechenelement,EOLinienelement,EOPunktelement END_MAP MAP INOUT ! MAININTERSECTION intersect example objects read !---------------------------------------------- SM => DISPLAY_INTERSECT_OBJECT0 END_MAP
Der Verschnitt im Modus INTERSECTION
veschneidet alle Klassen mit Flächen mieinander und liefert zu jeder
Verschnittfläche ein Objekt. Jedes Objekt beinhaltet als Listen die
Verschnittgeometrien der Unterklassen vom Type Linien und
Punkte.
Der Veschnitt wird wie folgt berechnet und die Objekte gelesen.
MAP INPUT_SOURCES ! INTERSECTION intersect example source !------------------------------------ SI => INTERSECT,INTERSECTION,Liegenschaft_Area,BoFlaeche_Area,EOFlaechenelement,EOLinienelement,EOPunktelement END_MAP MAP INOUT ! INTERSECTION intersect example objects read !------------------------------------------ SI => DISPLAY_INTERSECT_OBJECT0 END_MAP
Der Modul INTERSECT
kennt zwei Modi von
Verschnitten.
Der Modus MAININTERSECTION verschneidet die Objekte einer Hauptklasse mit den Objekten der Unterklassen. Das heisst, jedes Objekt der Hauptklasse beinhaltet die mit der Geometrie des Hauptobjektes verschnittenen Geometrien der Unterobjekte, sofern ein Verschnitt möglich ist.
Der Modus INTERSECTION verschneidet die Objekte aller Klassen.
Beinhalten die Klassen Flächen, so werden die Flächen miteinader verschnitten und ergeben Schnittflächen. Weitere Klassen der Typen Line und Point werden mit diesen Schnittflächen verschnitten.
Beinhalten die Klassen keine Flächen, so wird die erste Klasse herangezogen und die weiteren Klassen werden mit dieser ersten Klasse verschnitten.
Die Verschneidung wird wie folgt berechnet.
Beim Modi INTERSECTION sind alle Klassen gleichberechtigt, es gibt keine Hauptklasse, respektive Hauptobjekte. |
Zur Anwendung des Modules stehen folgende Anteile und Konfigurationen zur Verfügung.
ILTOOLS_DIR\system\models\INTERSECT.ili
Allgemeines INTERLIS 1 Modell um Resultate eines Verschnittes nach INTERLIS zu transferieren.
ILTOOLS_DIR\system\script\intersect\INTERSECT.cfg
INTERLIS nach INTERLIS Konfiguration für einen Verschnitt der amtlichen Vermessung. Der Verschnitt wird im Logfile angezeigt und nach INTERLIS in das Modell INTERSECT.ili transferiert.
Die Konfiguration kann kopiert und einfach an andere Modelle angepasst werden.
ILTOOLS_DIR\system\script\intersect\INTERSECT_il2shp.cfg
INTERLIS nach Shapefile Konfiguration. Daten in INTERLIS im Modell INTERSECT.ili werden nach Shapefile transferiert.
Die Konfiguration kann kopiert und einfach an andere Modelle angepasst werden.
Dient zur Visualisierung eines Verschnittes in Shapefile.
Folgende Parameter können in der Map
INTERSECT_PARAM
für den Modul gesetzt werden:
Parameter | req/opt | Beschreibung |
STATISTICS | o | ON oder OFF ,
Default = OFF . Statistik
anzeigen. |
SILENT | o | ON oder OFF ,
Default = OFF . Meldungen
anzeigen. |
AREA_LIMIT | o | REAL . Default =
0.0 . Flächen kleiner als die Limite nicht
berücksichtigen. |
STROKE | o | REAL|STRING . Default =
OFF . Sollen Kreisbögen in Liniensegmente
aufgelöst werden. OFF : Kreisbögen werden
nicht aufgelöst. REAL -Wert: definiert die
Auflösung. Details siehe in der Beschreibung der Methode
ICS.STROKE . |
RESOLUTION | o | REAL . Default =
0.001 . Geometrische Auflösung der
Inputgeometrien. Für mm muss z.B. 0.001
eingegeben werden. |
OVERLAP | o | REAL . Default =
0.2 . Möglicher Overlap für Kreisbögen
gemäss INTERLIS Spezifikation (z.B.
0.2 ). |
Dem Modul INTERSECT
werden Objekte mit der
vordefinierten Prozedur INTERSECT_WRITE_OBJECT3
übergeben (s.a. unten). Die Verarbeitung der Objekte erfolgt mit dem
Öffnen des Modules mit der vordefinierten Prozedur
INTERSECT_OPEN
(s.a. unten), die mit RUN1 automatisch
aufgerufen wird. Mit den Argumenten zur Prozedur
INTERSECT_OPEN
wird die Art der Verarbeitung und die
zu verarbeitenden Klassen definiert. Je nach Art der Verarbeitung
liefert die Berechnung folgende IN-Objekte:
MAININTERSECTION,mainclass,class,...
Die Berechnung im Mode
MAININTERSECTION
liefert als Objekte die
originalen Objekte der Hauptklasse zurück. Zusätzlich enthält
ein Hauptobjekt als Listen die Objekte der Unterklassen mit den
Verschnitten, die in der Fläche des Objekt der Hauptklasse
enthalten sind.
Komponente | req/opt | Beschreibung |
IN.INTERSECT_MODE(s) | r | Verschnitt-Methode INTERSECTION
oder
MAININTERSECTION. |
IN.INTERSECT_TYPE(s) | r | Geometrie Type der Verschnittgeometrie
area , line
oder point . |
IN.INTERSECT_GEOM(g) | r | Verschnitt-Geometrie. |
IN.INTERSECT_AREA(r) | o | Flächeninhalt wenn die Verschnitt-Geometrie eine Fläche ist. |
IN.INTERSECT_LENGTH(r) | o | Linienlänge wenn die Verschnitt-Geometrie eine Linie ist. |
IN.<attribute>(*) | o | Alle Attribute des originalen Objektes der Hauptklasse. |
IN.<class>
(li) | o | Eine Liste pro beteiligte Klasse, mit allen
Objekten und Attributen der Klasse, die in der
Verschnitt-Geometrie
IN.INTERSECT_GEOM enthalten
sind. |
IN.<class>.INTERSECT_MODE(s) | r | Verschnitt-Methode INTERSECTION
oder
MAININTERSECTION. |
IN.<class>.INTERSECT_TYPE(s) | r | Geometrie Type der Verschnittgeometrie
area , line
oder point . |
IN.<class>.INTERSECT_GEOM(g) | r | Verschnitt-Geometrie. |
IN.<class>.INTERSECT_AREA(r) | o | Flächeninhalt wenn die Verschnitt-Geometrie eine Fläche ist. |
IN.<class>.INTERSECT_LENGTH(r) | o | Linienlänge wenn die Verschnitt-Geometrie eine Linie ist. |
IN.<class>.<attribute>(*) | o | Alle Attribute des originalen Objektes. |
INTERSECTION,class,class,...
Die Berechnung im Mode INTERSECTION
liefert als Objekte die einzelnen Verschnitte der Objekte der
beteiligten Klassen zurück. Neben den geometrischen
Informationen der Verschnitte werden als Listen auch die in den
Verschnitten enthaltenen Objekte der beiteiligten Klassen
zurückgegeben.
Komponente | req/opt | Beschreibung |
* | r/o | Alle komponenten wie bei der Berechnung om
Mode MAININTERSECTION ausser den
Attributen IN.<attribute> ,
weil des bei diesem Mode keine Hauptklasse
gibt. |
INTERSECT_GROUP_CLASS2,class,groupkeyattr
Nach der Berechnung des Verschnittes können beim Lesen
der Verschnitt-Geometrien mit
INTERSECT_GROUP_CLASS2
Unterklassen
gruppiert werden. Beim Lesen der Verschnitte wird im IN-Objekt
jede Unterklasse mit einer Liste der Teilgeometrie gelesen. Mit
dieser Methode können die Teilgeometrien der Unterklassen nach
dem Wert eines Attributes groupkeyattr
gruppiert werden.
Komponente | req/opt | Beschreibung |
* | r/o | Alle Attribute wie aus Verschnitt oben. |
IN.INTERSECT_AREA(r) | r | Flächeninhalt der Flächengeometrie. |
IN.<attribute>(*) | o | Alle Attribute des originalen Objektes der Hauptklasse. |
IN.<subclass>(li) | o | Eine Liste pro beteiligte Unterklasse, mit
allen Objekten und Attributen der Unterklasse, die
in der originalen Flächengeometrie
IN.INTERSECT_GEOM des Objektes
der Hauptklasse enthalten sind. Die Liste der
Unterklasse enthält Objekte gruppiert nach den Wert
des Attributes groupkeyattr
. |
IN.<subclass>.INTERSECT_COUNT(a) | o | Die Anzahl der Teilflächen der Unterklasse und der Gruppe. |
IN.<subclass>.INTERSECT_GEOM(li) | o | Eine Liste der Teilflächen der Unterklasse und der Gruppe. |
IN.<subclass>.INTERSECT_AREA(r) | o | Die Summe des Flächeninhalt der Teilflächen der Unterklasse und der Gruppe. |
IN.<subclass>.<groupkeyattr> | o | Das Attribute mit dem Wert für die Gruppenermittlung der Unterklasse . |
IN.<subclass>.<attribut>(*) | o | Alle Attribute des ersten gefundenen originalen Objektes der Unterklasse und der Gruppe. |
Vor der Berechung des Verschnittes mit der Prozedur
INTERSECT_OPEN
müssen die Objekte des Verschnittes in
das Modul geschrieben werden. Dies erfolgt mit folgender
Prozedur.
Prozedur | INTERSECT_WRITE_OBJECT3 ! s class, g geometry, m map |
Beschreibung | Schreibt eine Fläche für die
Flächenberechnung in den Modul.
<class> ist der Namen der Klasse
des Objektes. <area> ist
Flächengeometrie des Objektes.
<map> ist der Namen oder die
Referenz einer Map, die weitere Attribute des Objektes
beinhaltet. |
Beispiel | ... => INTERSECT_WRITE_OBJECT3,Liegenschaft,IN.GEOM,IN |
Nachdem die Objekte für den Verschnitt mit der Prozedur
INTERSECT_WRITE_OBJECT3 in das Modul geschrieben worden sind, kann der
Verschnitt mit der Prozedur INTERSECT_OPEN
berechnet
werden. Mit der Prozedur INTERSECT_READ_OBJECT
werden
die Verschnitt-Objekte gelesen.
Prozedur | INTERSECT_OPEN ! [s type, s class, s class, ...][] |
Beschreibung | Öffnet das Modul zwecks
Berechnung des Verschnittes der definierten Klassen. Der
Die
Objekte der Klassen werden mit der Prozedur
|
Beispiel | 'MAININTERSECTION,Liegenschaften_Area,BoFlaeche_Area' INTERSECT_OPEN |
Prozedur | INTERSECT_READ_OBJECT ! [][b status] |
Beschreibung | Liest das nächste
IN-Objekt gemäss Objektmodell.
|
Beispiel | INTERSECT_READ_OBJECT [TRUE] |
Prozedur | INTERSECT_CLOSE ! [][] |
Beschreibung | Schliesst den Modul. Nach dem
Schliessen kann mit INTERSECT_OPEN mit
den im Modul enthaltenen Objekten eine neue Berechnung
durchgeführt werden. INTERSECT_CLOSE wird
von RUN1 automatisch aufgerufen. |
Beispiel | INTERSECT_CLOSE |
Prozedur | INTERSECT_GROUP_CLASS2 ! s class, s groupkeyattr |
Beschreibung | Beim Lesen der
Verschnittgeometrien wird im IN-Objekt jede Unterklasse mit
einer Liste der Teilgeometrien zur Hauptgeometrie gelesen.
Mit dieser Methode können die Teilgeometrien der
Unterklassen nach dem Wert eines Attributes
groupkeyattr gruppiert werden. Siehe dazu
auch das Objektmodell. |
Beispiel | ... => INTERSECT_GROUP_CLASS2,Bodenbedeckung_Area,Art_TXT |
! Diese ICS Konfiguration zeigt alle von intersect.mod ! berechnetern Objekte in der .log Datei an. |LICENSE \license\iltools.lic MAP USER_INPUT1 DIALOG => FILE MESSAGE => 'Enter .itf Input File' FILE_FILTER => itf FILE_EXISTS => TRUE OPT => input END_MAP MAP ILIN_PARAM INTERLIS_DEF => \models\DM01AVCH24D.ili STATISTICS => ON ENUM_TO_TEXT => ON CALC_SURFACE => ON END_MAP MAP ILIN_TOPO Bodenbedeckung,BoFlaeche_Geometrie => AREA Liegenschaften,Liegenschaft_Geometrie => AREA END_MAP MAP INTERSECT_PARAM STATISTICS => ON END_MAP MAP INPUT_SOURCES I1 => ILTOPO,OPT.input S1 => INTERSECT,MAININTERSECTION,Liegenschaft_Area,BoFlaeche_Area,EOFlaechenelement,EOLinienelement,EOPunktelement END_MAP MAP INOUT I1 => IN.TOPIC,IN.TABLE I1,Bodenbedeckung,BoFlaeche_Area => INTERSECT_WRITE_OBJECT3,IN.TABLE,IN.GEOM,IN I1,Einzelobjekte,Flaechenelement => INTERSECT_WRITE_OBJECT3,EOFlaechenelement,IN.Geometrie,IN I1,Einzelobjekte,Linienelement => INTERSECT_WRITE_OBJECT3,EOLinienelement,IN.Geometrie,IN I1,Einzelobjekte,Punktelement => INTERSECT_WRITE_OBJECT3,EOPunktelement,IN.Geometrie,IN I1,Liegenschaften,Liegenschaft_Area => INTERSECT_WRITE_OBJECT3,IN.TABLE,IN.GEOM,IN I1,* => OFF S1 => DISPLAY_OBJECT1,IN END_MAP MAP MACRO END_MAP |INCL \script\iltopo.mod |INCL \script\intersect.mod |INCL \script\run1.prg