Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 .
Enregistrer le type de géométrie
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. Le type peut être utilisé dans des colonnes calculées persistées ou non.
Conversion
La conversion de la géométrie vers binaire, varbinaire, char, varchar, nchar et nvarchar doit être explicite. Utilisez CAST ou CONVERT.
La conversion de binaire, varbinaire, char, varchar, nchar et nvarchar en géométrie peut être implicite ou explicite.
La conversion entre la géométrie et tous les autres types de données n’est pas autorisée. Cela inclut la conversion entre la géométrie et la géographie. Pour déplacer les données entre ces deux types, utilisez les méthodes Well-Known Binary (WKB) ou Well-Known Text (WKT), par exemple STAsBinary() avec STGeomFromWKB().
La conversion d’un type de chaîne en géométrie utilise les mêmes règles que geometry::Parse(). La chaîne doit être Well-Known Texte. Le SRID du résultat est 0.
La conversion entre la géométrie et le binaire ou le varbinaire utilise le SQL Server format de sérialisation natif de la géométrie, et non Well-Known binaire. Une Well-Known valeur binaire provoque une erreur. Pour convertir vers ou depuis Well-Known binaire, utilisez STAsBinary() et STGeomFromWKB().
Si la chaîne cible ou le type binaire est trop court pour la valeur géométrique , une erreur survient. La valeur n’est pas tronquée.
Remarks
Dans la base de données SQL dans Microsoft Fabric, les types de données géographiques et géométriques sont pris en charge mais ne peuvent pas être mis en miroir sur le OneLake Fabric.
Examples
A. Montrez comment ajouter et interroger des données de géométrie
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. Retourner 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 AS geometry;
DECLARE @geom2 AS geometry;
DECLARE @result AS 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. Utiliser la géométrie 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
);