Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-analysslutpunkt i Microsoft Fabric
Lager i Microsoft Fabric
SQL-databas i Förhandsversion av Microsoft Fabric
En LineString är ett endimensionellt objekt som representerar en sekvens med punkter och linjesegmenten som ansluter dem i SQL Database Engine spatiala data.
LineString instances
Följande bild visar exempel på LineString-instanser .
Som du ser i bilden:
Bild 1 är en enkel, icke-sluten LineString-instans .
Bild 2 är en icke-omfattande, icke-sluten LineString-instans .
Bild 3 är en stängd, enkel LineString-instans och är därför en ring.
Bild 4 är en stängd, icke-omfattande LineString-instans och är därför inte en ring.
Accepted instances
Godkända LineString-instanser kan matas in i en geometrivariabel, men de kanske inte är giltiga LineString-instanser . Följande villkor måste uppfyllas för att en LineString-instans ska accepteras. Instansen måste bestå av minst två punkter eller vara tom. Följande LineString-instanser accepteras.
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 visar att en LineString-instans kan accepteras, men inte giltig.
Följande LineString-instans accepteras inte. Det kastar en System.FormatException.
DECLARE @g geometry = 'LINESTRING(1 1)';
Valid instances
För att en LineString-instans ska vara giltig måste den uppfylla följande villkor.
- LineString-instansen måste godkännas.
- Om en LineString-instans inte är tom måste den innehålla minst två distinkta punkter.
- LineString-instansen kan inte överlappa sig själv över ett intervall på två eller flera på varandra följande punkter.
Följande LineString-instanser är giltiga.
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();
Följande LineString-instanser är inte giltiga.
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
Identifieringen av LineString-överlappningar baseras på flyttalsberäkningar, som inte är exakta.
Examples
Example A.
I följande exempel visas hur du skapar en geometry LineString instans med tre punkter och ett SRID på 0:
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(1 1, 2 4, 3 9)', 0);
Example B.
Varje punkt i instansen LineString kan innehålla Z-värden (höjd) och M (mått). I det här exemplet läggs M-värden till i den LineString instans som skapades i föregående exempel. M och Z kan vara NULL värden.
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(1 1 NULL 0, 2 4 NULL 12.3, 3 9 NULL 24.5)', 0);
Example C.
I följande exempel visas hur du skapar en geometry LineString instans med två punkter som är samma. Ett anrop till IsValid anger att LineString-instansen inte är giltig. Ett anrop för att MakeValid konvertera LineString-instansen till en punkt.
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
Här är resultatet.
LINESTRING(1 3, 1 3) is not a valid LineString
POINT(1 3) is a valid Point.