Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Endpoint de análise SQL no Microsoft Fabric
Armazém no Microsoft Fabric
Base 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 .
Como mostra a ilustração:
A Figura 1 é uma instância simples e não fechada de LineString .
A Figura 2 é uma ocorrência de LineString não simples e não fechada.
A Figura 3 é uma instância LineString fechada e simples e, portanto, é um anel.
A Figura 4 é uma ocorrência de LineString fechada e não simples e, portanto, não é um anel.
Instâncias aceitadas
As instâncias LineString aceitas podem ser inseridas em uma variável de geometria, 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 seguintes instâncias LineString 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 ocorrência de LineString pode ser aceita, mas não válida.
A seguinte instância de LineString não é aceita. Ele lança um System.FormatException.
DECLARE @g geometry = 'LINESTRING(1 1)';
Instâncias válidas
Para que uma instância de LineString seja válida, ela deve atender aos seguintes critérios.
- A instância de LineString deve ser aceita.
- Se uma ocorrência de LineString não estiver vazia, ela deverá conter pelo menos dois pontos distintos.
- A ocorrência de LineString não pode se sobrepor em um intervalo de dois ou mais pontos consecutivos.
As seguintes instâncias de LineString 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 seguintes instâncias de LineString 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();
Warning
A deteção de sobreposições LineString é baseada em cálculos de ponto flutuante, que não são exatos.
Examples
Exemplo A.
O exemplo a seguir mostra como criar uma geometry LineString instância com três pontos e um 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 geometry LineString instância com dois pontos iguais. Uma chamada para IsValid indica que a instância LineString não é válida. Uma chamada para MakeValid converte a ocorrê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
Aqui está 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 de geometria)
- STStartPoint (tipo de dados de geometria)
- STEndpoint (tipo de dados de geometria)
- STPointN (tipo de dados de geometria)
- STNumPoints (tipo de dados de geometria)
- STIsRing (tipo de dados de geometria)
- STIsClosed (tipo de dados de geometria)
- STPointOnSurface (tipo de dados de geometria)
- Dados Espaciais