Geometriai kérdések függvényei

Első  Előző  Következő

G.STNumPoints()

Geometriai elem pontjainak száma. Egyszerüen megszámlálja a geometriai elem pontjait.  Ha a geometriai elem egy kollekció, akkor az alkotó elemek pontjai számának összege az eredmény.

G.STPointN(sorszám)

Geometriai elem adott sorszámú pontja. A sorszám a [1,.G.STNumPoints()] intervallumból való.

G.STPointOnSurface()

Felület egy tetszőleges pontja. Nem a felületet meghatározó poligon(ok) pontjai közül egy, hanem a felület valamelyik belső pontja.

G.STStartPoint()

Kezdőpont. G.STPointN(1).

G.STEndPoint()

Végpont. G.STPointN(G.STNumPoints())

G.STX

A G pont X koordinátája.

G.STY

A G pont Y koordinátája

G.STCentroid()

Ha G poligon vagy multipoligon, akkor a G geometriai középpontját (geometriai értelemben vett súlypontját) eredményezi. Egyébként NULL értékű.

G.STDimension()

Dimenzió {-1,0,1,2}. -1: Üres, 0: Pont, 1: Vonal, 2: Felület.

 

G.STLength()

A G teljes hossza. Pont: 0, Vonal: a vonal hossza, Poligon: kerület. Kollekció esetén az alkotóelemek hosszának összege.

G.STArea()

A G területe, ha értelmezhető - poligon, multipoligon esetén. Egyébként 0.

 

G.STIsEmpty() – bit típusú eredményt ad.

Értéke 1, ha G-nek van pontja. Lekérdezések eredményének értékeléséhez használható.

G.STIsSimple() – bit típusú eredményt ad.

Értéke 1, ha G egyszerű. Egy geometriai elem egyszerű, ha az esetleges végpontokon kívül nincs egyéb metszéspont (egymást nem metsző, hurokmentes vonalak), illetve legfeljebb a határvonalakon vannak közös pontok (multipoligonok esetén)..

 

G.STBoundary()

A G határvonala.

G.STEnvelope()

Boríték A G-t befoglaló legkisebb egyenes állású téglalap.

G.STIsClosed() – bit típusú eredményt ad.

A G Zárt. A kezdőpontja és a végpontja megegyezik. Egy kollekció akkor zárt, ha minden eleme zárt.

G.STSrid

A térképészeti rendszer azonosítója. Az elemeket meghatározó pontok koordinátái a megadott vetületi (térképészeti) rendszerben értelmeződnek.  A Solidus egységesen az EOV vetületi rendszert használja, ezért az Srid mindig az SQL 2008 alapértelmezett értéke (0).

G.STIsValid() – bit típusú eredményt ad.

Értéke 1, ha a G "jól formált" az OGC (Open Geospatial Consortium ) előírásai szerint. Az SQL 2008 csak jól formált elemekkel hajt végre műveleteket.

G.MakeValid()

A G geometriai elemet jól formálttá teszi.

G.STNumGeometries()

A geometria elemek száma a G kollekcióban (multipont, multiline, multipoligon)

G.STGeometryN(sorszám)

Elemi geometriai elem kiemelése a G kollekcióból

G.STContains(G1) – bit típusú eredményt ad.

Tartalmazás. Értéke 1, ha Ha G teljes mértékben tartalmazza a zárójelben szereplő G1 geometriai elemet..

G.STConvexHull()

Az eredmény a legkisebb konvex poligon, ami tartalmazza a G-t.

G.STCrosses(G1) – bit típusú eredményt ad.

Keresztezés. G és G1 keresztezik egymást, ha a közös részüknek van területe, vagy a dimenziója kisebb, mint G és G1 maximális dimenziója.

G.STDifference(G1)

Különbség. G és G1 különbsége halmazelméleti értelemben

G.STIntersection(G1)

Metszet. G  és G1 metszete halmazelméleti értelemben.

G.STIntersects(G1) – bit típusú eredményt ad.

Van közös rész predikátum. Értéke 1, ha G és G1 rendelkezik közös ponttal.

G.STDisjoint(G1) – bit típusú eredményt ad.

Nincs közös rész predikátum. Értéke 1, ha G és G1 nem rendelkezik közös ponttal.

 

G.STDistance(G1)

G és G1 legközelebbi két pontjának távolsága.

G.STEquals(G1) – bit típusú eredményt ad.

Azonosság predikátum. G és G1 azonosak. Mit jelent az azonosság.

 

G.STSymDifference(G1)

Szimmetrikus differencia. A G és G1 közös része nem tartozik hozzá: Azon pontokat tartalmazza, amelyek vagy a G-ben, vagy a G1-ben vannak, de mindkettőben nem.

G.STTouches(G1) – bit típusú eredményt ad.

Van közös határ predikátum. Értéke akkor 1, ha G és G1 rendelkezik közös határvonallal.

G.STOverlaps(G1) – bit típusú eredményt ad.

Átlapolódás predikátum. Értéke akkor 1, ha G és G1 átlapolódnak. Ez azt jelenti, hogy a közös részük dimenziója azonos G és G1 dimenziójával. A közös határvonal tehát nem jelent átlapolódást.

G.STUnion(G1)

Egyesítés. G és G1 halmazelméleti szempontból történő egyesítése.

G.STWithin(G1)

Teljes mértékben benne van. G teljes mértékben benne van a G1-ben.

 

GeomFromGML(GML meghatározás, SRID)

Geometriai elem létrehozása GML leírás alapján.

 

Tér index által támogatott predikátum alakok

G1.STContains(G2) = 1
G1.STDistance(G2) < number
G1.STDistance(G2) <= number
G1.STEquals(G2) = 1
G1.STIntersects(G2) = 1
G1.STOverlaps(G2) = 1
G1.STTouches(geometry2) = 1
G1.STWithin(geometry2) = 1

 

Fenyőfa

 

-- Prepare the scene

CREATE TABLE #ChristmasScene (

 item varchar(32),

 shape geometry);

 

-- Put up the tree and star

INSERT INTO #ChristmasScene VALUES

('Tree', 'POLYGON((4 0, 0 0, 3 2, 1 2, 3 4, 1 4, 3 6, 2 6, 4 8, 6 6, 5 6, 7 4, 5 4, 7 2, 5 2, 8 0, 4 0))'),

('Base', 'POLYGON((2.5 0, 3 -1, 5 -1, 5.5 0, 2.5 0))'),

('Star', 'POLYGON((4 7.5, 3.5 7.25, 3.6 7.9, 3.1 8.2, 3.8 8.2, 4 8.9, 4.2 8.2, 4.9 8.2, 4.4 7.9, 4.5 7.25, 4 7.5))')

 

-- Decorate the tree

DECLARE @i int = 0, @x int, @y int;

WHILE (@i < 20)

BEGIN

INSERT INTO #ChristmasScene VALUES

  ('Bauble' + CAST(@i AS varchar(8)), geometry::Point(RAND() * 5 +1.5, RAND() * 6, 0).STBuffer(0.3))

SET @i = @i + 1;

END

 

-- Christmas Greeting

INSERT INTO #ChristmasScene VALUES

('M', 'POLYGON((0 10, 0 11, 0.25 11, 0.5 10.5, 0.75 11, 1 11, 1 10, 0.75 10, 0.75 10.7, 0.5 10.2, 0.25 10.7, 0.25 10, 0 10))'),

('E', 'POLYGON((1 10, 1 11, 2 11, 2 10.8, 1.25 10.8, 1.25 10.6, 1.75 10.6, 1.75 10.4, 1.25 10.4, 1.25 10.2, 2 10.2, 2 10, 1 10))'),

('R', 'POLYGON((2 10, 2 11, 3 11, 3 10.5, 2.4 10.5, 3 10, 2.7 10, 2.2 10.4, 2.2 10, 2 10),(2.2 10.8, 2.8 10.8, 2.8 10.7, 2.2 10.7, 2.2 10.8))'),

('R', 'POLYGON((3 10, 3 11, 4 11, 4 10.5, 3.4 10.5, 4 10, 3.7 10, 3.2 10.4, 3.2 10, 3 10),(3.2 10.8, 3.8 10.8, 3.8 10.7, 3.2 10.7, 3.2 10.8))'),

('Y', 'POLYGON((4 11, 4.2 11, 4.5 10.6, 4.8 11, 5 11, 4.6 10.5, 4.6 10, 4.4 10, 4.4 10.5, 4 11))'),

('C', 'POLYGON((0 9, 0 10, 1 10, 1 9.8, 0.2 9.8, 0.2 9.2, 1 9.2, 1 9, 0 9))'),

('H', 'POLYGON((1 9, 1 10, 1.2 10, 1.2 9.6, 1.8 9.6, 1.8 10, 2 10, 2 9, 1.8 9, 1.8 9.4, 1.2 9.4, 1.2 9, 1 9))'),

('R', 'POLYGON((2 9, 2 10, 3 10, 3 9.5, 2.4 9.5, 3 9, 2.7 9, 2.2 9.4, 2.2 9, 2 9),(2.2 9.8, 2.8 9.8, 2.8 9.7, 2.2 9.7, 2.2 9.8))'),

('I', 'POLYGON((3.2 9, 3.2 9.2, 3.4 9.2, 3.4 9.8, 3.2 9.8, 3.2 10, 3.8 10, 3.8 9.8, 3.6 9.8, 3.6 9.2, 3.8 9.2, 3.8 9, 3.2 9))'),

('S', 'POLYGON((4 9, 4 9.2, 4.8 9.2, 4.8 9.4, 4 9.4, 4 10, 5 10, 5 9.8, 4.2 9.8, 4.2 9.6, 5 9.6, 5 9, 4 9))'),

('T', 'POLYGON((5 9.8, 5 10, 6 10, 6 9.8, 5.6 9.8, 5.6 9, 5.4 9, 5.4 9.8, 5 9.8))'),

('M', 'POLYGON((6 9, 6 10, 6.25 10, 6.5 9.5, 6.75 10, 7 10, 7 9, 6.75 9, 6.75 9.7, 6.5 9.2, 6.25 9.7, 6.25 9, 6 9))'),

('A', 'POLYGON((7 9, 7 10, 8 10, 8 9, 7.75 9, 7.75 9.3, 7.25 9.3, 7.25 9, 7 9),(7.25 9.5, 7.25 9.8, 7.75 9.8, 7.75 9.5, 7.25 9.5))'),

('S', 'POLYGON((8 9, 8 9.2, 8.8 9.2, 8.8 9.4, 8 9.4, 8 10, 9 10, 9 9.8, 8.2 9.8, 8.2 9.6, 9 9.6, 9 9, 8 9))');

 

-- Admire the scene

SELECT * FROM #ChristmasScene

 

-- Tidy up the pine needles and put away the decorations

DROP TABLE #ChristmasScene