Types spatiaux - geometry (Transact-SQL)
S’applique à : SQL ServerAzure SQL Database Azure SQL Managed Instance
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.
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 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
)