Sdílet prostřednictvím


LineString

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLKoncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

LineString je jednorozměrný objekt představující posloupnost bodů a segmenty čar, které je propojují v prostorových datech databázového stroje SQL.

Instance LineString

Následující obrázek ukazuje příklady instancí LineString .

Diagram příkladů instancí geometrie LineString

Jak je znázorněno na obrázku:

  • Obrázek 1 je jednoduchá, neuzavřená LineString instance.

  • Obrázek 2 je instance LineString, která není jednoduchá ani uzavřená.

  • Obrázek 3 je uzavřená, jednoduchá instance LineString , a proto je okruh.

  • Obrázek 4 je uzavřená, nesložité instance LineString, a proto není prstenem.

Akceptované instance

Akceptované instance LineString mohou být zadány do proměnné geometrie, ale nemusí být platné jako instance LineString. Aby byla instance LineString přijata, musí být splněna následující kritéria. Instance musí být tvořena alespoň dvěma body nebo musí být prázdná. Akceptují se následující instance LineString.

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 ukazuje, že instanci LineString lze přijmout, ale není platná.

Následující instance LineString není přijata. Vyhazuje to System.FormatException.

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

Platné instance

Aby instance LineString byla platná, musí splňovat následující kritéria.

  1. Instance LineString musí být přijata.
  2. Pokud instance LineString není prázdná, musí obsahovat alespoň dva odlišné body.
  3. Instance LineString se nemůže překrývat v intervalu dvou nebo více po sobě jdoucích bodů.

Následující instance LineString jsou platné.

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

Následující instance LineString nejsou platné.

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

Detekce překrývání LineString je založená na výpočtech s plovoucí desetinnou čárkou, které nejsou přesné.

Examples

Příklad A.

Následující příklad ukazuje, jak vytvořit geometry LineString instanci se třemi body a SRID 0:

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

Příklad B.

Každý bod v LineString instanci může obsahovat hodnoty Z (zvýšení) a M (míra). Tento příklad přidá hodnoty M do LineString instance vytvořené v předchozím příkladu. M a Z mohou být NULL hodnoty.

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

Příklad C.

Následující příklad ukazuje, jak vytvořit geometry LineString instanci se dvěma body, které jsou stejné. Volání na IsValid ukazuje, že instance LineString není platná. Volání, které MakeValid převede instanci LineString na 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  

Tady je soubor výsledků.

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