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 .
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.
- Instans LineString harus diterima.
- Jika instans LineString tidak kosong, maka harus berisi setidaknya dua titik yang berbeda.
- 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.