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 Preview

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 instances

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-simple, 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.

Accepted instances

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. Het exemplaar moet van ten minste twee punten worden gevormd 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)';  

Valid instances

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

  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 overlapt is gebaseerd op berekeningen met drijvende komma, die niet exact zijn.

Examples

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

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

Example C.

In het volgende voorbeeld ziet u hoe u een geometry LineString exemplaar maakt met twee punten die hetzelfde zijn. Een aanroep om aan te IsValid geven dat het LineString-exemplaar niet geldig is. Een aanroep om het LineString-exemplaar te MakeValid converteren 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.