LineString
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Ponto de extremidade de análise SQL no Microsoft Fabric Warehouse no Microsoft Fabric
Um LineString é um objeto unidimensional que representa uma sequência de pontos e os segmentos de linha que os conectam nos dados espaciais do Mecanismo de Banco de Dados SQL.
Instâncias de LineString
A ilustração a seguir mostra exemplos de instâncias de 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
As instâncias de LineString aceitas podem ser inseridas em uma variável de geometria, mas podem não ser instâncias de 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 por 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. Ele lança 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 estiver vazia, ela deverá conter, pelo menos, dois pontos distintos.
- A instância LineString não pode se sobrepor sobre um intervalo de dois ou mais pontos consecutivos.
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();
Aviso
A detecção de sobreposições de LineString baseia-se em cálculos de pontos flutuantes, os quais não são exatos.
Exemplos
Exemplo A.
O exemplo a seguir mostra como criar uma instância geometry LineString
com três pontos e uma SRID de 0:
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(1 1, 2 4, 3 9)', 0);
Exemplo B.
Cada ponto na LineString
instância pode conter valores Z (elevação) e M (medida). Este exemplo adiciona valores M à LineString
instância criada no exemplo anterior. M e Z podem ser NULL
valores.
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(1 1 NULL 0, 2 4 NULL 12.3, 3 9 NULL 24.5)', 0);
Exemplo C.
O exemplo a seguir mostra como criar uma instância geometry LineString
com dois pontos iguais. Uma chamada para IsValid
indica que a instância LineString não é válida. Uma chamada para MakeValid
converter a instância de LineString em um Point.
DECLARE @g geometry
SET @g = geometry::STGeomFromText('LINESTRING(1 3, 1 3)',0);
IF @g.STIsValid() = 1
BEGIN
SELECT @g.ToString() + ' is a valid LineString.';
END
ELSE
BEGIN
SELECT @g.ToString() + ' is not a valid LineString.';
SET @g = @g.MakeValid();
SELECT @g.ToString() + ' is a valid Point.';
END
Veja a seguir o conjunto de resultados.
LINESTRING(1 3, 1 3) is not a valid LineString
POINT(1 3) is a valid Point.
Conteúdo relacionado
- STLength (tipo de dados geometry)
- STStartPoint (tipo de dados geometry)
- STEndpoint (tipo de dados geometry)
- STPointN (tipo de dados geometry)
- STNumPoints (tipo de dados geometry)
- STIsRing (tipo de dados geometry)
- STIsClosed (tipo de dados geometry)
- STPointOnSurface (tipo de dados geometry)
- Dados espaciais