Das Ergebnis eines Prädikats ist manchmal nicht intuitiv. Aus diesem Grund sollten spezielle Fälle getestet werden, um sicherzustellen,
dass die gewünschten Ergebnisse geliefert werden. Beispiel: Damit eine Geometrie eine andere Geometrie enthält (a.ST_Contains(b)=1
) oder eine Geometrie sich innerhalb einer anderen Geometrie befindet (b.ST_Within(a)=1
), müssen sich die Innenbereiche von a und b schneiden und kein Teil von b darf den Außenbereich von a schneiden. Es gibt
jedoch bestimmte Fälle, in denen eine Geometrie als innerhalb einer anderen Geometrie betrachtet werden könnte, dies aber
nicht wird.
Folgende Anweisung gibt z. B. für a.ST_Contains(b)
und b.ST_Within(a)
0 (a ist rot) zurück:
Fall eins und zwei sind offensichtlich: Die lila Geometrien liegen nicht vollständig innerhalb der roten Quadrate. Fall drei und vier sind allerdings nicht so offensichtlich. In beiden Fällen liegen die lila Geometrien nur auf der Grenze der roten Quadrate. ST_Contains betrachtet die lila Geometrien als nicht innerhalb der roten Quadrate liegend, auch wenn sie es anscheinend tun.
Wenn die Prädikattests nicht das erwartete Ergebnis liefern, sollten Sie die Methode ST_Relate verwenden, um die getestete Beziehung genau festzulegen. Siehe Benutzerdefinierte Beziehungen mit der Methode ST_Relate testen.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |