MultiLineString
Um MultiLineString
é uma coleção de zero ou mais geometry
instâncias de geographyLineString .
Instâncias MultiLineString
A ilustração a seguir mostra exemplos de instâncias MultiLineString
.
Conforme mostrado na ilustração:
A Figura 1 é uma instância simples
MultiLineString
cujo limite são os quatro pontos de extremidade de seus doisLineString
elementos.A Figura 2 é uma instância
MultiLineString
simples porque apenas os pontos de extremidade da interseção de elementosLineString
se cruzam. O limite são os dois pontos de extremidade que não se sobrepõem.A Figura 3 é uma instância
MultiLineString
não simples porque apenas o interior de um de seus elementosLineString
se cruzam. O limite dessa instânciaMultiLineString
são os quatro pontos de extremidade.A Figura 4 é uma instância
MultiLineString
não simples, não fechada.A Figura 5 é uma instância
MultiLineString
simples, não fechada. Ele não está fechado porque seusLineStrings
elementos não estão fechados. Ela é simples porque nenhum dos interiores de qualquer uma das instânciasLineStrings
se cruzam.A Figura 6 é uma instância
MultiLineString
simples e fechada. Ela é fechada porque todos os seus elementos não estão fechados. Ela é simples porque nenhum de seus elementos se cruzam nos interiores.
Instâncias aceitas
Para uma instância MultiLineString
ser aceita, ela precisa estar vazia ou conter apenas instâncias LineString
que sejam aceitos. Para obter mais informações sobre instâncias aceitas LineString
, consulte LineString. Veja a seguir exemplos de instâncias MultiLineString
aceitas.
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))';
O exemplo a seguir gera um System.FormatException
porque a segunda instância LineString
não é válida.
DECLARE @g geometry = 'MULTILINESTRING((1 1, 3 5),(-5 3))';
Instâncias válidas
Para que uma instância MultiLineString
seja válida, ela deve atender aos seguintes critérios:
Todas as instâncias contendo a instância
MultiLineString
devem ser instânciasLineString
válidas.Duas instâncias
LineString
contendo a instânciaMultiLineString
não podem se sobrepor em um intervalo. Apenas em um número finito de pontos, é possível encontrar as instânciasLineString
se cruzando ou se tocando umas com as outras, ou com outras instânciasLineString
.
O exemplo a seguir mostra três instâncias MultiLineString
válidas e uma instância MultiLineString
que não é válida.
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ão é válido porque a segunda instância LineString
sobrepõe a primeira instância LineString
em um intervalo. Elas se tocam em um número infinito de pontos.
Exemplos
O exemplo a seguir cria uma instância simples do geometry``MultiLineString
, que contém dois elementos de LineString
com o SRID 0.
DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((0 2, 1 1), (1 0, 1 1))');
Para instanciar essa instância com um SRID diferente, use STGeomFromText()
ou STMLineStringFromText()
. Também é possível usar Parse()
e, em seguida, modificar o SRID, conforme mostrado no exemplo a seguir.
DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((0 2, 1 1), (1 0, 1 1))');
SET @g.STSrid = 13;
Consulte Também
STLength (tipo de dados geometry)
STIsClosed (tipo de dados geometry)
LineString
Dados espaciais (SQL Server)