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 de SQL no Microsoft Fabric Warehouse no Microsoft Fabric Banco de dados SQL 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