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.

Exemples d'instances LineString géométriques

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

L'instance LineString suivante n'est pas acceptée. Elle lèvera une exception 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.

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

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

  3. L'instance LineString ne peut pas se chevaucher elle-même sur un intervalle.

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();
AttentionAttention

La détection du chevauchement des instances LineString est basée sur des calculs en virgule flottante, qui ne sont pas exacts.

Exemples

L'exemple suivant montre comment créer une instance geometryLineString 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 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);