LineString
Um LineString é um objeto unidimensional que representa uma seqüência de pontos e os segmentos de linha que os conectam.
Instâncias Linestring
A ilustração a seguir mostra exemplos de instâncias LineString.
Conforme mostrado na ilustração:
A Figura 1 é uma instância LineString simples, não fechada.
A Figura 2 é uma instância LineString não simples, não fechada.
A Figura 3 é uma instância LineString fechada, simples e portanto é um anel.
A Figura 4 é uma instância LineString fechada não simples e, portanto, não é um anel.
Instâncias aceitas
Instâncias LineString aceitas podem servir de entrada para uma variável geometry, mas podem não ser instâncias LineString válidas. Os critérios a seguir devem ser atendidos para que uma instância LineString seja aceita. A instância deve ser formada de pelo menos dois pontos, ou deve estar vazia. As instâncias LineString a seguir são aceitas.
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 mostra que uma instância LineString pode ser aceita, mas não válida.
A instância LineString a seguir não é aceita. Ela lançará uma System.FormatException.
DECLARE @g geometry = 'LINESTRING(1 1)';
Instâncias válidas
Para que uma instância LineString seja válida, ela deve atender aos critérios a seguir.
A instância LineString deve ser aceita.
Se uma instância LineString não estiver vazia, ela deverá conter pelo menos dois pontos distintos.
A instância LineString não pode se sobrepor a um intervalo.
As instâncias LineString a seguir são válidas.
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();
As instâncias LineString a seguir não são válidas.
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();
Cuidado |
---|
A detecção de sobreposições de LineString se baseia em cálculos de ponto flutuante, que não são exatos. |
Exemplos
O exemplo a seguir mostra como criar uma instância geometryLineString com três pontos e um SRID de 0:
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(1 1, 2 4, 3 9)', 0);
Cada ponto na instância LineString pode conter valores Z (elevação) e M (medida). Este exemplo adiciona valores M à instância LineString criada no exemplo acima. M e Z podem ser valores nulos.
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(1 1 NULL 0, 2 4 NULL 12.3, 3 9 NULL 24.5)', 0);
Consulte também