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.
Um LineString é um objeto unidimensional que representa uma sequência de pontos e os segmentos de linha que os conectam.
Instâncias de LineString
A ilustração abaixo mostra exemplos de casos de LineString.
Conforme mostrado na ilustração:
A Figura 1 é uma instância simples e não fechada
LineString.A Figura 2 é uma instância não simples e não fechada
LineString.A Figura 3 é uma instância fechada e simples
LineStringe, portanto, é um anel.A Figura 4 é uma instância fechada e não simplificada
LineStringe, portanto, não é um anel.
Instâncias aceitas
As instâncias aceitas LineString podem ser inseridas em uma variável de geometria, mas podem não ser instâncias válidas LineString . Os critérios a seguir devem ser atendidos para que uma LineString instância seja aceita. A instância deve ser formada de pelo menos dois pontos ou deve estar vazia. As instâncias de 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 LineString instância pode ser aceita, mas não é válida.
A instância a seguir LineString não é aceita. Ele vai lançar um System.FormatException.
DECLARE @g geometry = 'LINESTRING(1 1)';
Instâncias válidas
Para que uma LineString instância seja válida, ela deve atender aos critérios a seguir.
A
LineStringinstância deve ser aceita.Se uma
LineStringinstância não estiver vazia, ela deverá conter pelo menos dois pontos distintos.A
LineStringinstância não pode se sobrepor durante um intervalo de dois ou mais pontos consecutivos.
As seguintes instâncias 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 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();
Aviso
A detecção de LineString sobreposições baseia-se em cálculos de ponto flutuante, que não são exatos.
Exemplos
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);
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 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);
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 e uma chamada para MakeValid converterá a instância 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
O snippet de código acima retornará o seguinte:
LINESTRING(1 3, 1 3) is not a valid LineString
POINT(1 3) is a valid Point.
Consulte Também
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 (SQL Server)