Partager via


geometry (Transact-SQL)

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).

SQL Server prend en charge un ensemble de méthodes pour le type de données spatial geometry. Ces méthodes incluent des méthodes sur geometry définies par la norme Open Geospatial Consortium (OGC) et un jeu d'extensions Microsoft de cette norme.

Pour plus d'informations sur les méthodes du type de données spatiales geometry, consultez Référence de méthodes de type de données geometry.

S'applique à : SQL Server (SQL Server 2008 via la version actuelle, Base de données SQL Windows Azure (version initiale via la version actuelle.

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. Peut être utilisé dans les colonnes calculées persistantes et non persistantes.

Exemples

A.Illustration de l'ajout et de l'interrogation des données géométriques

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 geometry GeomCol1. Une troisième colonne restitue la colonne geometry dans sa représentation OGC 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

B.Retour de l'intersection de deux instances géométriques

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();

C.Utilisation du type géométrique dans une colonne calculée

L'exemple suivant crée une table avec une colonne calculée persistante à l'aide d'un type geometry.

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

CREATE TABLE SpatialTable
(
    locationId int IDENTITY(1,1),
    location geometry,
    deliveryArea as location.STBuffer(10) persisted
)

Voir aussi

Concepts

Référence de méthodes de type de données geometry

Données spatiales (SQL Server)