LineString
Um LineString é um objeto unidimensional que representa uma sequê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 ser inseridas em uma variável geometry, mas talvez não sejam instâncias LineString válidas. Os critérios a seguir devem ser atendidos para uma instância LineString ser aceita. A instância deve ser constituída 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 talvez não seja válida.
A instância LineString a seguir não é aceita. Ela gerará um 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 for estiver vazia, ela deverá conter pelo menos dois pontos distintos.
A instância LineString não pode se sobrepor em 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 pontos flutuantes 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