Bagikan melalui


LineString

Berlaku untuk: Titik akhir analitik SQL Server Azure SQL Database Azure SQL Managed Instance SQL di Microsoft Fabric Warehouse dalam database Microsoft Fabric SQL di Microsoft Fabric

LineString adalah objek satu dimensi yang mewakili urutan titik dan segmen garis yang menghubungkannya dalam data spasial SQL Database Engine.

Instans LineString

Ilustrasi berikut menunjukkan contoh instans LineString .

Diagram contoh instans LineString geometri.

Seperti yang ditunjukkan dalam ilustrasi:

  • Gambar 1 adalah instans LineString yang sederhana dan tidak tertutup.

  • Gambar 2 adalah instans LineString nonsimple dan tidak tertutup.

  • Gambar 3 adalah instans LineString yang tertutup dan sederhana, dan oleh karena itu adalah cincin.

  • Gambar 4 adalah instans LineString tertutup dan nonsimple, dan oleh karena itu bukan cincin.

Instans yang diterima

Instans LineString yang diterima dapat dimasukkan ke dalam variabel geometri, tetapi mungkin bukan instans LineString yang valid. Kriteria berikut harus dipenuhi agar instans LineString diterima. Instans harus dibentuk setidaknya dua titik atau harus kosong. Instans LineString berikut diterima.

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 menunjukkan bahwa instans LineString dapat diterima, tetapi tidak valid.

Instans LineString berikut tidak diterima. Ini melempar .System.FormatException

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

Instans yang valid

Agar instans LineString valid, instans tersebut harus memenuhi kriteria berikut.

  1. Instans LineString harus diterima.
  2. Jika instans LineString tidak kosong, maka harus berisi setidaknya dua titik yang berbeda.
  3. Instans LineString tidak dapat tumpang tindih dengan interval dua poin berturut-turut atau lebih.

Instans LineString berikut valid.

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

Instans LineString berikut tidak valid.

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

Peringatan

Deteksi tumpang tindih LineString didasarkan pada perhitungan floating-point, yang tidak tepat.

Contoh

Contoh A.

Contoh berikut menunjukkan cara membuat geometry LineString instans dengan tiga poin dan SRID 0:

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

Contoh B.

Setiap titik dalam LineString instans dapat berisi nilai Z (elevasi) dan M (pengukuran). Contoh ini menambahkan nilai M ke instans yang LineString dibuat dalam contoh sebelumnya. M dan Z dapat menjadi NULL nilai.

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

Contoh C.

Contoh berikut menunjukkan cara membuat geometry LineString instans dengan dua titik yang sama. Panggilan untuk IsValid menunjukkan bahwa instans LineString tidak valid. Panggilan untuk MakeValid mengonversi instans LineString menjadi Titik.

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  

Berikut set hasilnya.

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