Partager via


LineString (Chaîne de lignes)

A LineString est un objet unidimensionnel représentant une séquence de points et les segments de ligne qui les connectent.

Instances de LineString

L’illustration ci-dessous montre des exemples d’instances LineString .

Exemples d’instances géométriques LineString

Comme illustré dans l’illustration :

  • La figure 1 est une instance simple et non fermée LineString .

  • La figure 2 est une instance non simple et non fermée LineString .

  • La figure 3 est une instance fermée, simple LineString et est donc un anneau.

  • La figure 4 est une instance fermée, non simple LineString et n’est donc pas un anneau.

Instances acceptées

Les instances acceptées LineString peuvent être entrées dans une variable geometry, mais elles peuvent ne pas être des instances valides LineString . Les critères suivants doivent être remplis pour qu’une LineString instance soit acceptée. L’instance doit être formée d’au moins deux points, ou elle doit ê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 indique qu’une LineString instance peut être acceptée, mais non valide.

L’instance suivante LineString n’est pas acceptée. Il générera un System.FormatException.

DECLARE @g geometry = 'LINESTRING(1 1)';

Instances valides

Pour qu’une LineString instance soit valide, elle doit respecter les critères suivants.

  1. L’instance LineString doit être acceptée.

  2. Si une LineString instance n’est pas vide, elle doit contenir au moins deux points distincts.

  3. L’instance LineString ne peut pas se chevaucher sur un intervalle de deux points consécutifs ou plus.

Les instances suivantes LineString 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 suivantes LineString 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 des LineString chevauchements est basée sur des calculs à virgule flottante, qui ne sont pas exacts.

Exemples

L’exemple suivant montre comment créer une geometry``LineString instance avec trois points et un SRID de 0 :

DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(1 1, 2 4, 3 9)', 0);

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 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 geometry LineString instance avec deux points identiques. Un appel pour IsValid indiquer que l’instance LineString n’est pas valide et qu’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 retourne 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 géométrie)STStartPoint (type de données géométrie)STEndpoint (type de données géométrie)STPointN (type de données géométrie)STNumPoints (type de données géométrie)STIsRing (type de données géométrie)STIsClosed (type de données géométrie)STPointOnSurface (type de données géométrie)Données spatiales (SQL Server)