13. Modul VPRIO - Vektor Elimination nach Prioritäten

13.1. Allgemeines

Mit dem Modul VPRIO können geometrisch übereinanderliegende Vektoren - Linenzüge - über Prioriäten eliminiert werden. Typische Anwendungen sind das Eliminieren von Doppellinien von Flächen die in den INTERLIS 1 Typ AREA übertragen werden müssen oder das Eliminieren von Doppellinien aufgrund der Priorität ermittelt aus einer Linienart.

VPRIO wird mit:

|INCL \script\vprio.mod

in einer ICS RUN1-Konfiguration verfügbar gemacht.

13.2. Abhängigkeiten von anderen Modulen

Keine Abhängigkeiten vorhanden.

13.3. Parametermap VPRIO_PARAM

Folgende Parameter können in der Map VPRIO_PARAM für den Modul gesetzt werden:

Parameterreq/optBeschreibung
RESOLUTIONrGeometrische Auflösung der Inputgeometrien. Für mm-Auflösung muss z.B. 0.001 eingegeben werden.
TOLERANCEoGeometrische Toleranz mit der dopplete Linien eliminiert werden. Wenn der Parameter nicht definiert ist, ist die Tolerance gleich der Resolution.
GEOMETRY_BREAK_GATTRoON oder OFF, Default = ON. Sollen die zurückzulesenden Geometrien bei unterschriedlichen GATTR-Werten (Geometrie-Attribute) aufgetrennt werden. Das Geometrie-Attribut einer Geometrie kann mit den Methoden ICS.SET_GATTR und ICS.GET_GATTR gesschrieben und gelesen werden.
GEOMETRY_BREAK_PRIORITYoON oder OFF, Default = OFF. Sollen die zurückzulesenden Geometrien bei unterschriedlichen Prioritäten aufgetrennt werden.
STATISTICSoON oder OFF, Default = OFF. Statistik anzeigen.

13.4. Objektmodell

Dem Modul VPRIO werden Objekte mit der vordefinierten Prozedur VPRIO_WRITE_LINE2 übergeben (s.a. unten). Nach der Berechnung liefert der Modul VPRIO pro IN-Objekt folgende Systemkomponenten:

Komponentereq/optBeschreibung
IN.PRIO(s)rPriorität des Objekts.
IN.GEOM(l)rLiniengeometrie des Objekts.

13.5. Exportierte Prozeduren und Methoden

Zur Anwendung mit RUN1 stehen folgende Prozeduren zur Vefügung.

ProzedurVPRIO_WRITE_LINE2 ! g geometry, i priority
BeschreibungSchreibt die Geometrie mit der Priorität in das Modul. Als Geometrien können Linien- und Flächengeometrien übergeben. Flächengeometrien werden in Liniengeometrien aufgelöst. Eine Geometrie mit der Priorität=n eliminiert eine identische Geometrie mit der Priorität <= n. Bevor die Elimination mit VPRIO_OPEN berechnet wird, müssen mit dieser Prozedur Geometrien in den VPRIO-Buffer geschrieben werden.
Beispiel
... => VPRIO_WRITE_LINE2,IN.GEOM,3
ProzedurVPRIO_OPEN ! [][]
Beschreibung

Öffnet den Modul zur Berechnung der Elimination der Doppellinien. Die Prozedur wird von RUN1 automatisch aufgerufen.

Beispiel
VPRIO_OPEN
ProzedurVPRIO_READ_OBJECT ! [][b status]
Beschreibung

Liest das nächste IN-Objekt gemäss Objektmodell. Die Prozedur wird von RUN1 automatisch aufgerufen

Beispiel
VPRIO_READ_OBJECT [TRUE]
ProzedurVPRIO_CLOSE ! [][]
BeschreibungSchliesst den Modul und gibt die durch den Modul belegten Ressourcen wieder frei. Die Prozedur wird von RUN1 automatisch aufgerufen.
Beispiel
VPRIO_CLOSE

Zur direkten Anwendung ohne RUN1 stehen folgende Methoden zur Vefügung.

MethodeVPRIO.OPEN ! [] []
BeschreibungDirekte Methode zur Anwendung ohne RUN1. Öffnet den Modul.
Beispiel
VPRIO.OPEN
MethodeVPRIO.WRITE_LINE ! [g geometry, i priority] []
BeschreibungDirekte Methode zur Anwendung ohne RUN1. Schreibt die Geometrie mit der Priorität in das Modul. Als Geometrien können Linien- und Flächengeometrien übergeben. Flächengeometrien werden in Liniengeometrien aufgelöst. Eine Geometrie mit der Priorität=n eliminiert eine identische Geometrie mit der Priorität <= n. Bevor die Elimination mit VPRIO.CALCULATE berechnet wird, müssen mit dieser Methode Geometrien in den VPRIO-Buffer geschrieben werden.
Beispiel
VAR.LINE 3 VPRIO.WRITE_LINE
MethodeVPRIO.CALCULATE ! [] [b state]
BeschreibungDirekte Methode zur Anwendung ohne RUN1. Berechnet die Elimination der Doppellinien.
Beispiel
VPRIO.CALCULATE [TRUE]
ProzedurVPRIO.READ_LINE ! [] [m map, b status]
Beschreibung

Direkte Methode zur Anwendung ohne RUN1. Liest das nächste Objekt gemäss Objektmodell.

Beispiel
VAR.READ_LINE [m, TRUE]
MethodeVPRIO.CLOSE ! [] []
BeschreibungDirekte Methode zur Anwendung ohne RUN1. Schliesst den Modul.
Beispiel
VPRIO.CLOSE

Als zusätzliche wichtige Methoden für den Modul sind folgende Methoden aus der Klasse ICS hervorzuheben.

MethodeICS.SET_GATTR [* geometrie, i attr][* geometrie]
BeschreibungSetzt das Geometrieattribut für die Geometrie <geometrie>. Vor dem Schreiben einer Geometrie in den Modul kann mit dieser Methode der Geometrie ein Attributwert vergeben werden. Zum Beispiel eine OBJID oder eine Art.
Beispiel
VAR.LINE 1234 ICS.SET_GATTR [line]
MethodeICS.GET_GATTR [* geometrie][i attr]
BeschreibungFragt das Geometrieattribut ab. Nach dem Lesen einer Geometrie aus den Modul kann mit dieser Methode das zusätzliche Attribute der Geometrie gelesen werden . Zum Beispiel eine OBJID oder eine Art.
Beispiel
VAR.LINE ICS.GET_GATTR [1234]

13.6. Skriptbeispiel

! Diese ICS Konfiugration liest DXF Polylines und eliminiert
! doppelte Linien. Für die Elimination der doppelten
! Linien wird der Modul VPRIO eingesetzt.

|LICENSE \license\iltools.lic

MAP USER_INPUT1
   DIALOG => FILE ! FILE | STRING | ODBC
   MESSAGE => 'Enter .dxf Input File'
   FILE_FILTER => dxf
   FILE_EXISTS => TRUE
   OPT => input
END_MAP

MAP DXFIN_PARAM
   STATISTICS   => ON
   DEBUG        => OFF
END_MAP

MAP VPRIO_PARAM
   RESOLUTION => 0.001
   TOLERANCE  => 0.001
   STATISTICS => ON
END_MAP

MAP INPUT_SOURCES
   I1 => DXFIN,OPT.input
   I2 => VPRIO
END_MAP

MAP INOUT
   I1       => IN.LAYER
   I1,01211 => VPRIO_WRITE_LINE2,IN.GEOM,1
   I1,01225 => VPRIO_WRITE_LINE2,IN.GEOM,2
   I1,*     => OFF
   I2       => DISPLAY_OBJECT1,IN
END_MAP

|INCL \script\dxfin.mod
|INCL \script\vprio.mod
|INCL \script\run1.prg