Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Endpoint SQL analytics dans Microsoft Fabric
Entrepôt dans Microsoft Fabric
Base de données SQL dans Microsoft Fabric
Un LineString est un objet unidimensionnel représentant une séquence de points et les segments de ligne qui les connectent dans SQL Moteur de base de données données spatiales.
Instances de LineString
L’illustration suivante montre des exemples d’instances LineString .
Comme indiqué par l'illustration :
La Figure 1 représente une instance LineString simple et non fermée.
La Figure 2 représente une instance LineString non simple et non fermée.
La Figure 3 représente une instance LineString fermée et simple ; il s’agit par conséquent d’un anneau.
La Figure 4 représente une instance LineString fermée et non simple ; il ne s’agit par conséquent pas d’un anneau.
Instances acceptées
Les instances LineString acceptées peuvent être entrées dans une variable geometry, mais elles peuvent ne pas être des instances LineString valides. Pour qu’une instance LineString soit acceptée, elle doit répondre aux critères suivants. L'instance doit être formée d'au moins deux points ou être vide. Les instances LineString suivantes sont acceptées.
DECLARE @g1 geometry = 'LINESTRING EMPTY';
DECLARE @g2 geometry = 'LINESTRING(1 1,2 3,4 8, -6 3)';
DECLARE @g3 geometry = 'LINESTRING(1 1, 1 1)';
@g3 montre qu’une instance LineString peut être acceptée, mais non valide.
L’instance LineString suivante n’est pas acceptée. Il lève un System.FormatException.
DECLARE @g geometry = 'LINESTRING(1 1)';
Instances valides
Pour être valide, une instance LineString doit respecter les critères suivants.
- L’instance LineString doit être acceptée.
- Si elle n’est pas vide, l’instance LineString doit contenir au moins deux points distincts.
- L’instance LineString ne peut pas se chevaucher sur un intervalle de plusieurs points consécutifs.
Les instances LineString suivantes sont valides.
DECLARE @g1 geometry= 'LINESTRING EMPTY';
DECLARE @g2 geometry= 'LINESTRING(1 1, 3 3)';
DECLARE @g3 geometry= 'LINESTRING(1 1, 3 3, 2 4, 2 0)';
DECLARE @g4 geometry= 'LINESTRING(1 1, 3 3, 2 4, 2 0, 1 1)';
SELECT @g1.STIsValid(), @g2.STIsValid(), @g3.STIsValid(), @g4.STIsValid();
Les instances LineString suivantes ne sont pas valides.
DECLARE @g1 geometry = 'LINESTRING(1 4, 3 4, 2 4, 2 0)';
DECLARE @g2 geometry = 'LINESTRING(1 1, 1 1)';
SELECT @g1.STIsValid(), @g2.STIsValid();
Warning
La détection de chevauchements d’instances LineString se base sur des calculs en virgule flottante, qui ne sont pas exacts.
Examples
Exemple A.
L’exemple suivant montre comment créer une instance geometry LineString avec trois points et un SRID égal à 0 :
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(1 1, 2 4, 3 9)', 0);
Exemple B.
Chaque point de l’instance LineString peut contenir des valeurs Z (élévation) et M (mesure). Cet exemple ajoute des valeurs M à l’instance LineString créée dans l’exemple précédent. M et Z peuvent être NULL des valeurs.
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(1 1 NULL 0, 2 4 NULL 12.3, 3 9 NULL 24.5)', 0);
Exemple C.
L'exemple suivant montre comment créer une instance geometry LineString avec deux points identiques. Un appel pour IsValid indiquer que l’instance LineString n’est pas valide. Un appel pour MakeValid convertir l’instance LineString en point.
DECLARE @g geometry
SET @g = geometry::STGeomFromText('LINESTRING(1 3, 1 3)',0);
IF @g.STIsValid() = 1
BEGIN
SELECT @g.ToString() + ' is a valid LineString.';
END
ELSE
BEGIN
SELECT @g.ToString() + ' is not a valid LineString.';
SET @g = @g.MakeValid();
SELECT @g.ToString() + ' is a valid Point.';
END
Voici le jeu de résultats.
LINESTRING(1 3, 1 3) is not a valid LineString
POINT(1 3) is a valid Point.
Contenu connexe
- STLength (type de données geometry)
- STStartPoint (type de données geometry)
- STEndpoint (type de données geometry)
- STPointN (type de données geometry)
- STNumPoints (type de données geometry)
- STIsRing (type de données geometry)
- STIsClosed (type de données geometry)
- STPointOnSurface (type de données geometry)
- Données spatiales