MultiLineString
Un MultiLineString est une collection d'aucune ou plusieurs instances geometry ou geographyLineString.
Instances MultiLinestring
L'illustration suivante montre des exemples d'instances MultiLineString.
Comme indiqué par l'illustration :
La Figure 1 est une instance MultiLineString simple dont la limite est constituée des quatre points de terminaison de ses deux éléments LineString.
La Figure 2 est une instance MultiLineString simple car seuls les points de terminaison des éléments LineString se croisent. La limite est constituée des deux points de terminaison non chevauchants.
La Figure 3 est une instance MultiLineString non simple car l'intérieur de l'un de ses éléments LineString est croisé. La limite de cette instance MultiLineString est constituée des quatre points de terminaison.
La Figure 4 est une instance MultiLineString non simple et non fermée.
La Figure 5 est une MultiLineString simple et non fermée. Elle n'est pas fermée car ses éléments LineStrings ne sont pas fermés. Elle est simple car aucun des intérieurs des instances LineStrings ne se croise.
La Figure 6 est une instance MultiLineString simple et fermée. Elle est fermée car tous ses éléments sont fermés. Elle est simple car aucun de ses éléments ne se croise aux intérieurs.
Instances acceptées
Pour qu'une instance MultiLineString soit acceptée, elle doit être vide ou comprendre uniquement des intances LineString acceptées. Pour plus d'informations sur les instances LineString acceptées, consultez LineString. Voici des exemples d'instances MultiLineString acceptées.
DECLARE @g1 geometry = 'MULTILINESTRING EMPTY';
DECLARE @g2 geometry = 'MULTILINESTRING((1 1, 3 5), (-5 3, -8 -2))';
DECLARE @g3 geometry = 'MULTILINESTRING((1 1, 5 5), (1 3, 3 1))';
DECLARE @g4 geometry = 'MULTILINESTRING((1 1, 3 3, 5 5),(3 3, 5 5, 7 7))';
L'exemple suivant lève un System.FormatException car la deuxième instance LineString n'est pas valide.
DECLARE @g geometry = 'MULTILINESTRING((1 1, 3 5),(-5 3))';
Instances valides
Pour qu'une instance MultiLineString soit valide, elle doit satisfaire aux critères suivants :
Toutes les instances qui comprennent l'instance MultiLineString doivent être des instances LineString valides.
Aucune des deux instances LineString comprenant l'instance MultiLineString ne peut se superposer sur un intervalle. Les instances LineString peuvent uniquement se croiser ou se toucher elles-mêmes ou d'autres instances LineString à un nombre fini de points.
L'exemple suivant affiche trois instances MultiLineString valides et une instance MultiLineString qui n'est pas valide.
DECLARE @g1 geometry = 'MULTILINESTRING EMPTY';
DECLARE @g2 geometry = 'MULTILINESTRING((1 1, 3 5), (-5 3, -8 -2))';
DECLARE @g3 geometry = 'MULTILINESTRING((1 1, 5 5), (1 3, 3 1))';
DECLARE @g4 geometry = 'MULTILINESTRING((1 1, 3 3, 5 5),(3 3, 5 5, 7 7))';
SELECT @g1.STIsValid(), @g2.STIsValid(), @g3.STIsValid(), @g4.STIsValid();
@g4 n'est pas valide car la deuxième instance LineString recoupe la première instance LineString à un intervalle. Elles se touchent à un nombre infini de points.
Exemples
L'exemple suivant crée une instance geometryMultiLineString simple qui contient deux éléments LineString avec le SRID 0.
DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((0 2, 1 1), (1 0, 1 1))');
Pour instancier cette instance avec un SRID différent, utilisez STGeomFromText() ou STMLineStringFromText(). Vous pouvez également utiliser Parse() puis modifier le SRID, comme indiqué dans l'exemple suivant.
DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((0 2, 1 1), (1 0, 1 1))');
SET @g.STSrid = 13;