LineString
Un LineString
est un objet unidimensionnel qui représente une séquence de points et les segments de ligne qui les connectent.
Instances LINESTRING
L'illustration suivante montre des exemples d'instances LineString
.
Comme indiqué par l'illustration :
La Figure 1 est une instance
LineString
simple et non fermée.La Figure 2 est une instance
LineString
non simple et non fermée.La Figure 3 est une instance
LineString
fermée et simple ; il s'agit par conséquent d'un anneau.La Figure 4 est 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 introduites 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. Elle lèvera une System.FormatException
.
DECLARE @g geometry = 'LINESTRING(1 1)';
Instances valides
Pour qu'une instance LineString
soit valide, elle doit répondre aux critères suivants :
L'instance
LineString
doit être acceptée.Si une instance
LineString
n'est pas vide, elle 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();
Avertissement
La détection de chevauchements LineString
se base sur des calculs en virgule flottante, qui ne sont pas exacts.
Exemples
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);
Chaque point dans 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 ci-dessus. M et Z peuvent être des valeurs NULL.
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(1 1 NULL 0, 2 4 NULL 12.3, 3 9 NULL 24.5)', 0);
L'exemple suivant montre comment créer une instance geometry LineString
avec deux points identiques. Un appel à IsValid
indique que l'instance LineString
n'est pas valide et un appel à MakeValid
convertira l'instance LineString
en un 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
L'extrait de code ci-dessus retournera les éléments suivants :
LINESTRING(1 3, 1 3) is not a valid LineString
POINT(1 3) is a valid Point.
Voir aussi
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 (SQL Server)