Ein kostengünstiger Test, wenn zwei Geometrien möglicherweise in einem angegebenen Abstand voneinander liegen.
geometry-expression.ST_WithinDistanceFilter(geo2,distance[, unit-name])
Name | Typ | Beschreibung |
---|---|---|
geo2 |
ST_Geometry |
Der andere Geometriewert, dessen Entfernung vom geometry-expression gemessen werden soll. |
distance |
DOUBLE |
Der maximale Abstand zwischen den beiden Geometrien. |
unit-name |
VARCHAR(128) |
Die Maßeinheit, in der der distance-Parameter angegeben wird. Ist standardmäßig die Einheit des räumlichen Bezugssystems. Der unit-name-Parameter muss mit der UNIT_NAME-Spalte einer Zeile in der ST_UNITS_OF_MEASURE-Ansicht übereinstimmen, wo UNIT_TYPE auf 'LINEAR' eingestellt ist. |
BIT Gibt 1 zurück, wenn geometry-expression und geo2 innerhalb des angegebenen Abstands voneinander liegen könnten, sonst 0.
Die ST_WithinDistanceFilter-Methode bietet einen effizienten Test, um zu ermitteln, ob zwei Geometrien möglicherweise in einem angegebenen Abstand voneinander liegen (wie von der ST_WithinDistance-Methode festgelegt). Gibt 1 zurück, wenn geometry-expression innerhalb des angegebenen Abstands von geo2 liegen könnte, sonst 0.
Dieser Test ist kostengünstiger als ST_WithinDistance, kann aber in einigen Fällen als 1 zurückgegeben werden, in denen der kleinste Abstand zwischen den beiden Geometrien tatsächlich größer als der angegebene Abstand ist. Aus diesem Grund kann diese Methode als Primärfilter nützlich sein, wenn die weitere Verarbeitung den wahren Abstand zwischen den Geometrien ermittelt.
Die Implementierung von ST_WithinDistanceFilter beruht auf Metadaten im Zusammenhang mit den gespeicherten Geometrien. Da sich die verfügbaren Metadaten je nachdem, wie Daten geladen werden oder wo ST_WithinDistanceFilter in einer Abfrage verwendet wird, von Serverversion zu Serverversion verändern können, kann der Ausdruck geometry-expression.ST_WithinDistanceFilter(geo2, distance [, unit_name ]) unterschiedliche Ergebnisse zurückgeben, wenn geometry-expression nicht innerhalb des angegebenen Abstands geo2 liegt. Wenn geometry-expression innerhalb des angegebenen Abstands von geo2 liegt, gibt ST_WithinDistanceFilter immer 1 zurück.
Diese Methode kann mit Geometrien in räumlichen Bezugssystemen mit gewölbter Erddarstellung nicht verwendet werden.
SQL/MM (ISO/IEC 13249-3: 2006) Erweiterung des Herstellers
Im folgenden Beispiel wird eine geordnete Ergebnismenge mit einer Zeile für jede Form zurückgegeben, die möglicherweise innerhalb des Abstands 1.4 des Punkts (2,3) liegt. Sie können feststellen, dass das Ergebnis eine Form enthält, die nicht tatsächlich innerhalb des angegebenen Abstands liegt.
SELECT ShapeID, ROUND( Shape.ST_Distance( NEW ST_Point( 2, 3 ) ), 2 ) AS dist FROM SpatialShapes WHERE ShapeID < 17 AND Shape.ST_WithinDistanceFilter( NEW ST_Point( 2, 3 ), 1.4 ) = 1 ORDER BY dist |
Die Abfrage erzeugt die folgende Ergebnismenge:
ShapeID | DIST |
---|---|
2 |
0.0 |
3 |
0.0 |
5 |
1.0 |
6 |
1.21 |
16 |
1.41 |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |