Delen via


LineString

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric

Een LineString is een eendimensionaal object dat een reeks punten vertegenwoordigt en de lijnsegmenten die deze verbinden in ruimtelijke gegevens van SQL Database Engine.

LineString-instanties

In de volgende afbeelding ziet u voorbeelden van LineString-exemplaren .

Diagram van voorbeelden van geometrie LineString-exemplaren.

Zoals wordt weergegeven in de afbeelding:

  • Afbeelding 1 is een eenvoudig, niet-gesloten LineString-exemplaar .

  • Afbeelding 2 is een niet-simpel, niet-gesloten LineString-instantie.

  • Afbeelding 3 is een gesloten, eenvoudig LineString-exemplaar en is daarom een ring.

  • Afbeelding 4 is een gesloten, niet-simple LineString-exemplaar en is daarom geen ring.

Geaccepteerde gevallen

Geaccepteerde LineString-exemplaren kunnen worden ingevoerd in een geometrievariabele, maar ze zijn mogelijk geen geldige LineString-exemplaren. Aan de volgende criteria moet worden voldaan om een LineString-exemplaar te kunnen accepteren. De instantie moet uit ten minste twee punten bestaan of moet leeg zijn. De volgende LineString-exemplaren worden geaccepteerd.

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 geeft aan dat een LineString-exemplaar kan worden geaccepteerd, maar niet geldig.

Het volgende LineString-exemplaar wordt niet geaccepteerd. Het gooit een System.FormatException.

DECLARE @g geometry = 'LINESTRING(1 1)';  

Geldige exemplaren

Een LineString-exemplaar moet aan de volgende criteria voldoen om geldig te zijn.

  1. Het LineString-exemplaar moet worden geaccepteerd.
  2. Als een LineString-exemplaar niet leeg is, moet deze ten minste twee afzonderlijke punten bevatten.
  3. Het LineString-exemplaar mag zichzelf niet overlappen met een interval van twee of meer opeenvolgende punten.

De volgende LineString-exemplaren zijn geldig.

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();  

De volgende LineString-exemplaren zijn niet geldig.

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

De detectie van LineString overlappen is gebaseerd op berekeningen met zwevende komma, die niet exact zijn.

Examples

Voorbeeld A.

In het volgende voorbeeld ziet u hoe u een geometry LineString exemplaar maakt met drie punten en een SRID van 0:

DECLARE @g geometry;  
SET @g = geometry::STGeomFromText('LINESTRING(1 1, 2 4, 3 9)', 0);  

Voorbeeld B.

Elk punt in het LineString exemplaar kan Z-waarden (uitbreiding) en M (meting) bevatten. In dit voorbeeld worden M-waarden toegevoegd aan het LineString exemplaar dat in het vorige voorbeeld is gemaakt. M en Z kunnen waarden zijn NULL .

DECLARE @g geometry;  
SET @g = geometry::STGeomFromText('LINESTRING(1 1 NULL 0, 2 4 NULL 12.3, 3 9 NULL 24.5)', 0);  

Voorbeeld C.

In het volgende voorbeeld ziet u hoe u een geometry LineString exemplaar maakt met twee punten die hetzelfde zijn. De aanroep naar IsValid geeft aan dat het LineString-exemplaar niet geldig is. Een aanroep van MakeValid converteert het LineString-exemplaar naar een punt.

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  

Hier is het resultatenoverzicht.

LINESTRING(1 3, 1 3) is not a valid LineString  
POINT(1 3) is a valid Point.