Mise en route avec le type de données geometry

Le type de données spatial planaire, geometry, est implémenté en tant que type de données CLR (Common Language Runtime) dans SQL Server. Ce type représente des données dans un système de coordonnées Euclidien (à plat).

Inscription du type geometry

Le type geometry est prédéfini et disponible dans chaque base de données. Vous pouvez créer des colonnes de table de type geometry et opérer sur les données geometry comme vous le feriez avec d'autres types CLR.

Exemples

Les deux exemples suivants montrent comment ajouter et interroger des données géométriques. Le premier exemple crée une table avec une colonne d'identité et une colonne geometryGeomCol1. Une troisième colonne restitue la colonne geometry dans sa représentation OGC (Open Geospatial Consortium) WKT (Well-Known Text) et utilise la méthode STAsText(). Deux lignes sont ensuite insérées : une ligne contient une instance LineString de geometry et une ligne contient une instance Polygon.

IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL 
    DROP TABLE dbo.SpatialTable;
GO

CREATE TABLE SpatialTable 
    ( id int IDENTITY (1,1),
    GeomCol1 geometry, 
    GeomCol2 AS GeomCol1.STAsText() );
GO

INSERT INTO SpatialTable (GeomCol1)
VALUES (geometry::STGeomFromText('LINESTRING (100 100, 20 180, 180 180)', 0));

INSERT INTO SpatialTable (GeomCol1)
VALUES (geometry::STGeomFromText('POLYGON ((0 0, 150 0, 150 150, 0 150, 0 0))', 0));
GO

Le deuxième exemple utilise la méthode STIntersection() pour retourner les points où les deux instances geometry précédemment insérées se croisent.

DECLARE @geom1 geometry;
DECLARE @geom2 geometry;
DECLARE @result geometry;

SELECT @geom1 = GeomCol1 FROM SpatialTable WHERE id = 1;
SELECT @geom2 = GeomCol1 FROM SpatialTable WHERE id = 2;
SELECT @result = @geom1.STIntersection(@geom2);
SELECT @result.STAsText();