Partager via


Types spatiaux - geometry (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Base de données SQL dans Microsoft Fabric

Le type de données spatiales 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 spatiales geometry. Ces méthodes incluent des méthodes sur geometry, définies par la norme OGC (Open Geospatial Consortium), et un ensemble d’extensions Microsoft de cette norme.

La tolérance d’erreur des méthodes geometry peut aller jusqu’à 1e-7 * étendues. Les étendues font référence à la distance maximale approximative entre les points de l’objet geometry.

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.

Notes

Dans la base de données SQL dans Microsoft Fabric, les types de données geography et geometry sont pris en charge, mais ne peuvent pas être mis en miroir sur Fabric OneLake.

Exemples

R. 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 (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 geometryet 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

Données spatiales (SQL Server)