Przestrzenne typy danych w SQL Server 2008, cz. 2/4 Udostępnij na: Facebook

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