Udostępnij za pomocą


LineString

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstancePunkt końcowy analizy SQL w usłudze Microsoft FabricMagazyn w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

LineString to jednowymiarowy obiekt reprezentujący sekwencję punktów i segmenty linii łączące je w danych przestrzennych aparatu bazy danych SQL.

Wystąpienia LineString

Na poniższej ilustracji przedstawiono przykłady wystąpień LineString .

Diagram przedstawiający przykłady instancji geometrii LineString.

Jak pokazano na ilustracji:

  • Rysunek 1 jest prostą, niedomkniętą instancją LineString.

  • Rysunek 2 jest nieskładnym, niezamkniętym wystąpieniem LineString.

  • Rysunek 3 jest zamkniętym, prostym wystąpieniem LineString i dlatego jest pierścieniem.

  • Rysunek 4 przedstawia zamknięte, nieskomplikowane wystąpienie LineString, a więc nie jest pierścieniem.

Zaakceptowane wystąpienia

Zaakceptowane wystąpienia LineString mogą być wprowadzane do zmiennej geometrycznej, ale mogą nie być prawidłowymi wystąpieniami LineString . Aby można było zaakceptować wystąpienie LineString , należy spełnić następujące kryteria. Wystąpienie musi składać się z co najmniej dwóch punktów lub może być puste. Akceptowane są następujące wystąpienia 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 pokazuje, że można zaakceptować wystąpienie LineString , ale nie jest prawidłowe.

Następujące wystąpienie LineString nie jest akceptowane. Zgłasza błąd System.FormatException.

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

Prawidłowe wystąpienia

Aby wystąpienie LineString było prawidłowe, musi spełniać następujące kryteria.

  1. Wystąpienie LineString musi zostać zaakceptowane .
  2. Jeśli wystąpienie LineString nie jest puste, musi zawierać co najmniej dwa odrębne punkty.
  3. Wystąpienie LineString nie może nakładać się na siebie w odstępie co najmniej dwóch kolejnych punktów.

Następujące wystąpienia LineString są prawidłowe.

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

Następujące wystąpienia LineString są nieprawidłowe.

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

Wykrywanie nakładających się elementów LineString opiera się na obliczeniach zmiennoprzecinkowych, które nie są dokładne.

Examples

Przykład A.

W poniższym przykładzie pokazano, jak utworzyć instancję geometry LineString z trzema punktami i SRID ustawionym na 0.

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

Przykład B.

Każdy punkt w wystąpieniu LineString może zawierać wartości Z (wysokość) i M (mierzenie). W tym przykładzie dodano wartości M do instancji LineString, która została utworzona w poprzednim przykładzie. Wartości M i Z mogą być NULL wartościami.

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

Przykład C.

W poniższym przykładzie zobaczysz, jak utworzyć wystąpienie geometry LineString z dwoma identycznymi punktami. Wywołanie do IsValid wskazuje, że instancja LineString jest nieważna. Wywołanie MakeValid konwertuje wystąpienie 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  

Oto zestaw wyników.

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