- Kategorien:
ST_HAUSDORFFDISTANCE¶
Gibt den diskreten Hausdorff-Abstand zwischen zwei GEOGRAPHY-Objekten zurück.
Der Hausdorff-Abstand gibt an, wie ähnlich die beiden Objekte sind. Zwei Objekte gelten als ähnlich, wenn sich jeder Punkt in einem Objekt in der Nähe eines Punkts im anderen Objekt befindet. Der Hausdorff-Abstand ist der größte Abstand zwischen einem Punkt in einem Objekt und einem Punkt in einem anderen Objekt.
ST_HAUSDORFFDISTANCE gibt den diskreten Hausdorff-Abstand zurück, der berechnet wird, indem nur die Eckpunkte (diskrete Punkte) und keine beliebigen Punkte entlang der Kante verglichen werden.
Syntax¶
ST_HAUSDORFFDISTANCE( <geography_expression_1> , <geography_expression_2> )
Argumente¶
geography_expression_1
Das Argument muss ein Ausdruck vom Typ GEOGRAPHY sein.
geography_expression_2
Das Argument muss ein Ausdruck vom Typ GEOGRAPHY sein.
Rückgabewerte¶
Gibt einen Wert vom Typ REAL zurück, der den diskreten Hausdorff-Abstand in Grad repräsentiert.
Nutzungshinweise¶
Gibt NULL zurück, wenn ein oder mehrere Eingabepunkte NULL sind.
Beispiele¶
Dieses Beispiel gibt den Hausdorff-Abstand zwischen zwei Punkten (Punkt 0 0
und Punkt 0 1
) zurück:
SELECT ST_HAUSDORFFDISTANCE(ST_POINT(0, 0), ST_POINT(0, 1)); +------------------------------------------------------+ | ST_HAUSDORFFDISTANCE(ST_POINT(0, 0), ST_POINT(0, 1)) | |------------------------------------------------------| | 1 | +------------------------------------------------------+
Im nächsten Beispiel werden drei Polygone (a
, b
und c
) verglichen.
Der Abstand zwischen den am weitesten entfernten Punkten in a
und c
(Punkt 0 1
und Punkt 0 3
) ist größer als der Abstand zwischen den am weitesten entfernten Punkten in a
und b
(Punkt 1 0
und Punkt 2 0
).
Infolgedessen ist der von ST_HAUSDORFFDISTANCE zurückgegebene Wert für a
und c
kleiner. Dies zeigt an, dass a
und c
ähnlicher sind als a
und b
.
WITH a AS (TO_GEOGRAPHY('POLYGON((-1 0, 0 1, 1 0, 0 -1, -1 0))')), b AS (TO_GEOGRAPHY('POLYGON((-1 0, 0 1, 2 0, 0 -1, -1 0))')), c AS (TO_GEOGRAPHY('POLYGON((-1 0, 0 3, 1 0, 0 -1, -1 0))')) SELECT ST_HAUSDORFFDISTANCE(a, b) as distance_between_a_and_b, ST_HAUSDORFFDISTANCE(a, c) as distance_between_a_and_c; +--------------------------+--------------------------+ | DISTANCE_BETWEEN_A_AND_B | DISTANCE_BETWEEN_A_AND_C | |--------------------------+--------------------------| | 1 | 2 | +--------------------------+--------------------------+