Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
CircularString adalah kumpulan nol atau lebih banyak segmen busur melingkar kontinu. Segmen busur melingkar adalah segmen melengkung yang ditentukan oleh tiga titik dalam bidang dua dimensi; poin pertama tidak boleh sama dengan poin ketiga. Jika ketiga titik segmen busur melingkar adalah segaris, segmen busur diperlakukan sebagai segmen garis.
Penting
Untuk deskripsi terperinci dan contoh fitur spasial baru yang diperkenalkan di SQL Server 2012, termasuk CircularString subjenis, unduh laporan resmi, Fitur Spasial Baru di SQL Server 2012.
Instans CircularString
Gambar di bawah ini menunjukkan instans yang valid CircularString :
Instans yang diterima
Instans CircularString diterima jika kosong atau berisi jumlah titik ganjil, n, di mana n > 1. Instans berikut CircularString diterima.
DECLARE @g1 geometry = 'CIRCULARSTRING EMPTY';
DECLARE @g2 geometry = 'CIRCULARSTRING(1 1, 2 0, -1 1)';
DECLARE @g3 geometry = 'CIRCULARSTRING(1 1, 2 0, 2 0, 2 0, 1 1)';
@g3 menunjukkan bahwa CircularString instans dapat diterima, tetapi tidak valid. Deklarasi instans CircularString berikut tidak diterima. Deklarasi ini menghasilkan System.FormatException.
DECLARE @g geometry = 'CIRCULARSTRING(1 1, 2 0, 2 0, 1 1)';
Instans yang valid
Instans yang valid CircularString harus kosong atau memiliki atribut berikut:
Ini harus berisi setidaknya satu segmen busur melingkar (yaitu, memiliki minimal tiga poin).
Titik akhir terakhir untuk setiap segmen busur melingkar dalam urutan, kecuali untuk segmen terakhir, harus menjadi titik akhir pertama untuk segmen berikutnya dalam urutan.
Ini harus memiliki jumlah titik yang ganjil.
Ini tidak dapat mengoverlap dirinya sendiri pada interval tertentu.
Meskipun
CircularStringinstans mungkin berisi segmen garis, segmen garis ini harus didefinisikan oleh tiga titik segaris.
Contoh berikut menunjukkan instans CircularString yang valid.
DECLARE @g1 geometry = 'CIRCULARSTRING EMPTY';
DECLARE @g2 geometry = 'CIRCULARSTRING(1 1, 2 0, -1 1)';
DECLARE @g3 geometry = 'CIRCULARSTRING(1 1, 2 0, 2 0, 1 1, 0 1)';
DECLARE @g4 geometry = 'CIRCULARSTRING(1 1, 2 2, 2 2)';
SELECT @g1.STIsValid(), @g2.STIsValid(), @g3.STIsValid(),@g4.STIsValid();
Instans CircularString harus berisi setidaknya dua segmen busur melingkar untuk menentukan lingkaran lengkap. Instans CircularString tidak dapat menggunakan satu segmen busur melingkar (seperti (1 1, 3 1, 1 1)) untuk menentukan lingkaran lengkap. Gunakan (1 1, 2 2, 3 1, 2 0, 1 1) untuk menentukan lingkaran.
Contoh berikut menunjukkan instans CircularString yang tidak valid.
DECLARE @g1 geometry = 'CIRCULARSTRING(1 1, 2 0, 1 1)';
DECLARE @g2 geometry = 'CIRCULARSTRING(0 0, 0 0, 0 0)';
SELECT @g1.STIsValid(), @g2.STIsValid();
Contoh dengan titik sekoliner
Dalam kasus berikut, segmen busur melingkar akan diperlakukan sebagai segmen garis:
Ketika ketiga titik tersebut segaris (misalnya, (1 3, 4 4, 7 5)).
Ketika titik pertama dan tengah sama, tetapi poin ketiga berbeda (misalnya, (1 3, 1 3, 7 5)).
Ketika titik tengah dan terakhir sama, tetapi poin pertama berbeda (misalnya, (1 3, 4 4, 4 4)).
Contoh
Sebuah. Membuat Instans Geometri dengan CircularString Kosong
Contoh ini menunjukkan cara membuat instans kosong CircularString :
DECLARE @g geometry;
SET @g = geometry::Parse('CIRCULARSTRING EMPTY');
B. Membuat Instans Geometri Menggunakan CircularString dengan Satu Segmen Busur Melingkar
Contoh berikut ini menunjukkan cara membuat sebuah instance CircularString dengan satu segmen melengkung melingkar (setengah lingkaran):
DECLARE @g geometry;
SET @g = geometry:: STGeomFromText('CIRCULARSTRING(2 0, 1 1, 0 0)', 0);
SELECT @g.ToString();
C. Membuat Instans Geometri Menggunakan CircularString dengan Beberapa Segmen Busur Melingkar
Contoh berikut menunjukkan cara membuat CircularString instans dengan lebih dari satu segmen busur melingkar (lingkaran penuh):
DECLARE @g geometry;
SET @g = geometry::Parse('CIRCULARSTRING(2 1, 1 2, 0 1, 1 0, 2 1)');
SELECT 'Circumference = ' + CAST(@g.STLength() AS NVARCHAR(10));
Ini menghasilkan output berikut:
Circumference = 6.28319
Bandingkan output saat LineString digunakan alih-alih CircularString:
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(2 1, 1 2, 0 1, 1 0, 2 1)', 0);
SELECT 'Perimeter = ' + CAST(@g.STLength() AS NVARCHAR(10));
Ini menghasilkan output berikut:
Perimeter = 5.65685
Perhatikan bahwa nilai untuk CircularString contoh mendekati 2π (2 * pi), yang merupakan keliling lingkaran yang sebenarnya.
D. Mendeklarasikan dan Menginisiasi Instans Geometri dengan CircularString dalam Kalimat yang Sama
Cuplikan ini menunjukkan cara mendeklarasikan dan menginstansiasi geometry dengan CircularString dalam pernyataan yang sama:
DECLARE @g geometry = 'CIRCULARSTRING(0 0, 1 2.1082, 3 6.3246, 0 7, -3 6.3246, -1 2.1082, 0 0)';
E. Membuat Instans Geografi dengan CircularString
Contoh berikut menunjukkan cara mendeklarasikan geography dan membuat instans dengan CircularString:
DECLARE @g geography = 'CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';
F. Memunculkan Instans Geometri dengan CircularString yang berbentuk Garis Lurus
Contoh berikut menunjukkan cara membuat CircularString instans yang merupakan garis lurus:
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('CIRCULARSTRING(0 0, 1 2, 2 4)', 0);
Lihat Juga
Gambaran Umum Tipe Data SpasialCompoundCurveMakeValid (Tipe Data Geografi)MakeValid (Tipe Data Geometri)STIsValid (Tipe Data Geometri)STIsValid (Tipe Data Geografi)STLength (Tipe Data Geometri)STStartPoint (Tipe Data Geometri)STEndpoint (Tipe Data Geometri)STPointN (Tipe Data Geometri)STNumPoints (Tipe Data Geometri)STIsRing (Tipe Data Geometri)STIsClosed (Tipe Data Geometri)STPointOnSurface (Tipe Data Geometri)LineString