|
| 1 | +-- Spatial Static Method Test Cases |
| 2 | +-- Testing GEOGRAPHY::method() and GEOMETRY::method() static method calls |
| 3 | + |
| 4 | +-- Basic geography static methods |
| 5 | +SELECT geography::STGeomFromText('POINT(1 2)', 4326); |
| 6 | +SELECT geography::STPointFromText('POINT(-122.34900 47.65100)', 4326); |
| 7 | +SELECT geography::STLineFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326); |
| 8 | +SELECT geography::STPolyFromText('POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326); |
| 9 | +SELECT geography::Point(47.65100, -122.34900, 4326); |
| 10 | +SELECT geography::Parse('POINT(-122.34900 47.65100)'); |
| 11 | + |
| 12 | +-- Basic geometry static methods |
| 13 | +SELECT geometry::STGeomFromText('POINT(1 2)', 0); |
| 14 | +SELECT geometry::STGeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))', 0); |
| 15 | +SELECT geometry::STPointFromText('POINT(3 4)', 0); |
| 16 | +SELECT geometry::STLineFromText('LINESTRING(0 0, 1 1, 2 1, 2 2)', 0); |
| 17 | +SELECT geometry::STPolyFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))', 0); |
| 18 | +SELECT geometry::Parse('LINESTRING(0 0, 1 1)'); |
| 19 | +SELECT geometry::STGeomFromWKB(0x0101000000000000000000F03F0000000000000040, 0); |
| 20 | + |
| 21 | +-- Multi-geometry methods |
| 22 | +SELECT geometry::STMPointFromText('MULTIPOINT((1 1), (2 2), (3 3))', 0); |
| 23 | +SELECT geometry::STMLineFromText('MULTILINESTRING((0 0, 1 1), (2 2, 3 3))', 0); |
| 24 | +SELECT geometry::STMPolyFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)), ((2 2, 3 2, 3 3, 2 3, 2 2)))', 0); |
| 25 | +SELECT geometry::STGeomCollFromText('GEOMETRYCOLLECTION(POINT(1 1), LINESTRING(0 0, 1 1))', 0); |
| 26 | + |
| 27 | +-- Spatial methods in variable assignments |
| 28 | +DECLARE @g geography = geography::STGeomFromText('POINT(1 2)', 4326); |
| 29 | +DECLARE @point geometry = geometry::Point(3, 4, 0); |
| 30 | + |
| 31 | +-- Spatial methods in INSERT statements |
| 32 | +INSERT INTO GeoTable (Location) VALUES (geography::STGeomFromText('POINT(-122.34900 47.65100)', 4326)); |
| 33 | +INSERT INTO GeoTable (Shape) VALUES (geometry::STGeomFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))', 0)); |
| 34 | + |
| 35 | +-- Spatial methods in UPDATE statements |
| 36 | +UPDATE GeoTable SET Location = geography::STGeomFromText('POINT(-122.35 47.65)', 4326) WHERE ID = 1; |
| 37 | +UPDATE GeoTable SET Shape = geometry::Parse('POINT(5 5)') WHERE ID = 2; |
| 38 | + |
| 39 | +-- Multiple spatial calls in single statement |
| 40 | +SELECT |
| 41 | + geography::Point(47.65, -122.35, 4326) AS Point1, |
| 42 | + geography::Point(47.66, -122.36, 4326) AS Point2, |
| 43 | + geometry::STGeomFromText('POINT(0 0)', 0) AS Origin; |
| 44 | + |
| 45 | +-- Spatial methods in expressions |
| 46 | +SELECT 1 WHERE geography::STGeomFromText('POINT(1 2)', 4326) IS NOT NULL; |
| 47 | + |
| 48 | +-- Spatial methods in CASE expressions |
| 49 | +SELECT CASE WHEN 1=1 THEN geography::Point(1, 2, 4326) ELSE geography::Point(0, 0, 4326) END; |
| 50 | + |
| 51 | +-- Spatial methods with variables |
| 52 | +DECLARE @lat float = 47.65; |
| 53 | +DECLARE @lon float = -122.35; |
| 54 | +DECLARE @srid int = 4326; |
| 55 | +SELECT geography::Point(@lat, @lon, @srid); |
| 56 | + |
| 57 | +-- Spatial methods in subqueries |
| 58 | +SELECT * FROM (SELECT geography::Point(1, 2, 4326) AS Location) AS sub; |
| 59 | + |
| 60 | +-- Spatial methods with column references in function arguments |
| 61 | +SELECT geography::STGeomFromText(WKTColumn, SRIDColumn) FROM GeoTable; |
0 commit comments