gen_parallels_xld
— Suchen nach parallelen XLD-Polygonen.
Mit gen_parallels_xld
werden die in Polygons
übergebenen Polygone auf Parallelität hin untersucht. Die
resultierenden parallelen Teilstücke der Polygone werden unter
Parallels
ausgegeben. Falls der Parameter Merge
auf 'true' gesetzt wird, werden nebeneinanderliegende
parallele Teilstücke in einer einzigen Relation gespeichert.
Ansonsten wird für jedes Paar von parallelen Liniensegmenten eine
separate Parallelenrelation ausgegeben.
Es werden nur Polygonsegmente mit einer Länge von mindestens Len
berücksichtigt.
Ob zwei Polygonsegmente als parallel angesehen werden, hängt vor allem von
der maximalen Winkeltoleranz Alpha
(Bogenmaß) ab.
Ferner müssen sich die Projektionen der beiden Segmente auf ihre
Winkelhalbierende überlappen.
Der Überlappungsbereich auf der Winkelhalbierenden wird zurück auf die
Segmente projiziert. Ist der maximale Abstand der Rückprojektionen kleiner
als Dist
, werden die Segmente in Parallels
gespeichert.
Als Nebeneffekt wird zu jedem parallelen Linienpaar
ein sog. Qualitätsfaktor berechnet, siehe mod_parallels_xld
.
Dieser ergibt sich aus der
normierten Winkeldifferenz und der normierten Überlappungsstrecke:
Dabei ist die Winkeldifferenz der
Polygonsegmente, der Überlappungsbereich,
und die Länge der
Polygonsegmente und der errechnete Qualitätsfaktor.
Dieser Wert stellt ein Maß für die Parallelität dar (je größer
dieser Wert, desto „paralleler“ die Linien). Anschließend werden
die Qualitäts-Faktoren aller parallelen Linien in gemeinsamen
Polygonen, gewichtet nach ihrem Anteil an der gemeinsamen
Überlappung, aufsummiert. Die Spanne für den errechneten
Qualitätsfaktor kann mit info_parallels_xld
abgerufen werden.
Polygons
(input_object) xld_poly-array →
object
Eingabepolygone.
Parallels
(output_object) xld_para-array →
object
Parallelenrelationen.
Len
(input_control) number →
(real / integer)
Mindestlänge der einzelnen Polygonlinien.
Defaultwert: 10.0
Wertevorschläge: 5.0, 10.0, 15.0, 20.0
Restriktion: Len > 0.0
Dist
(input_control) number →
(real / integer)
Maximalabstand der einzelnen Polygonlinien.
Defaultwert: 30.0
Wertevorschläge: 20.0, 25.0, 30.0, 40.0, 50.0, 75.0
Restriktion: Dist > 0.0
Alpha
(input_control) number →
(real / integer)
Maximale Winkeltoleranz der einzelnen Polygonlinien.
Defaultwert: 0.15
Wertevorschläge: 0.05, 0.10, 0.15, 0.20, 0.30
Restriktion: 0 <= Alpha && Alpha <= pi / 2
Merge
(input_control) string →
(string)
Sollen nebeneinanderliegende Parallelenrelationen zusammengefügt werden?
Defaultwert: 'true'
Werteliste: 'false' , 'true'
mod_parallels_xld
,
get_parallels_xld
,
info_parallels_xld
Foundation