Przestrzenne typy danych w SQL Server 2008, cz. 2/4
Opublikowano: 2010-10-20
STBuffer – tworzy figurę będącą powłoką oddaloną od naszej figury o podaną odległość.
Przykład 11. STBuffer
DECLARE @c GEOMETRY =' LINESTRING (80 100, 40 100, 40 50, 100 50, 100 80)'
SELECT @c.STBuffer(5).ToString() AS STBuffer
BufferWithTolerance – funkcja bardzo podobna do STBuffer, z tym że w BufferWithTolerance dzięki parametrom tolerance i relative mamy wpływ na końcowy wynik. Im większą ustawimy tolerancję, tym mniej dokładna będzie figura, jednak składała się będzie z mniejszej liczby punktów.
Przykład 12. BufferWithTolerance
DECLARE @c GEOMETRY =' LINESTRING (80 100, 40 100, 40 50, 100 50, 100 80)'
SELECT @c.BufferWithTolerance(5, 10, 0).ToString() AS BufferWithTolerance
STCentroid – zwraca punkt będący środkiem ciężkości podanej figury.
Przykład 13. STCentroid
DECLARE @czworokat GEOMETRY ='POLYGON ((40 80, 40 40, 90 40,90 80, 40 80))'
SELECT @czworokat.STCentroid().ToString() AS STCentroid
** STContains** – zwraca 1, jeśli figura , na której wykonywana jest funkcja, zawiera w sobie figurę będącą argumentem funkcji. W przeciwnym wypadku zwracane jest 0.
Przykład 14. STContains
DECLARE @czworokat GEOMETRY
DECLARE @punkt GEOMETRY
SET @czworokat ='POLYGON ((40 80, 40 40, 90 40,90 80, 40 80))'
SET @punkt='POINT(50 50)'
SELECT @czworokat.STContains(@punkt) AS STContains1, @punkt.STContains(@czworokat) AS STContains2
STConvexHull – przekształca podaną figurę na możliwie najmniejszą figurę wypukłą.
Przykład 15. STConvexHull
DECLARE @c GEOMETRY =' LINESTRING (80 100, 40 100, 40 50, 100 50, 100 80)'
SELECT @c.STConvexHull().ToString() AS STConvexHull
STCrosses – zwraca 1, jeśli dana figura krzyżuje się z inną figurą. W przeciwnym wypadku zwracana jest wartość 0.
Przykład 16. STCrosses
DECLARE @kwadrat1 geometry='LINESTRING(30 30, 60 30, 60 60, 30 60, 30 30)'
DECLARE @kwadrat2 geometry='LINESTRING(45 45, 45 75, 75 75, 75 45, 45 45)'
SELECT @kwadrat1.STCrosses(@kwadrat2) AS STCrosses
STDifference – zwraca figurę zawierającą punkty z jednego zbioru i niezawierającą punktów z innego zbioru.
Przykład 17. STDifference
DECLARE @kwadrat1 geometry='POLYGON((30 30, 60 30, 60 60, 30 60, 30 30))'
DECLARE @kwadrat2 geometry='POLYGON((45 45, 45 75, 75 75, 75 45, 45 45))'
SELECT @kwadrat1.STDifference(@kwadrat2).ToString();
STDimension – zwraca maksymalny wymiar figury.
Przykład 18. STDimension
DECLARE @point geometry = 'POINT(3 2)'
SELECT @point.STDimension() AS STDimension
STDisjoint – zwraca 1, jeśli podane figury są rozłączne. W przeciwnym wypadku zwracana jest wartość 0.
Przykład 19. STDisjoint
DECLARE @kwadrat1 geometry='POLYGON((30 30, 60 30, 60 60, 30 60, 30 30))'
DECLARE @kwadrat2 geometry='POLYGON((45 45, 45 75, 75 75, 75 45, 45 45))'
SELECT @kwadrat1.STDisjoint(@kwadrat2) AS STDisjoint
STDistance – zwraca najkrótszą odległość między figurami.
Przykład 20. STDistance
DECLARE @point geometry = 'POINT(3 2)'
DECLARE @point2 geometry = 'POINT(10 5)'
SELECT @point.STDistance(@point2) AS STDistance