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.
CurvePolygon adalah permukaan tertutup secara topologis yang didefinisikan oleh cincin pembatas eksterior dan nol atau lebih cincin interior
Penting
Untuk deskripsi terperinci dan contoh fitur spasial yang diperkenalkan pada SQL Server 2012, termasuk CurvePolygon subjenisnya, unduh laporan resmi, Fitur Spasial Baru di SQL Server 2012.
Kriteria berikut menentukan atribut instans CurvePolygon :
Batas
CurvePolygoninstans didefinisikan oleh cincin eksterior dan semua cincin interior.Interior
CurvePolygoninstans adalah ruang antara cincin eksterior dan semua cincin interior.
CurvePolygon Instans berbeda dari Polygon instans karena CurvePolygon instans mungkin berisi segmen busur melingkar berikut: CircularString dan CompoundCurve.
Instans CompoundCurve
Ilustrasi di bawah ini menunjukkan angka yang valid CurvePolygon :
Instans yang diterima
CurvePolygon Agar instans diterima, instans harus kosong atau hanya berisi cincin busur melingkar yang diterima. Cincin busur melingkar yang diterima memenuhi persyaratan berikut.
Adalah instans , ,
CircularStringatauCompoundCurveyang diterimaLineString. Untuk informasi selengkapnya tentang instans yang diterima, lihat LineString, CircularString, dan CompoundCurve.Memiliki setidaknya empat poin.
Titik awal dan akhir memiliki koordinat X dan Y yang sama.
Catatan
Nilai Z dan M diabaikan.
Contoh berikut menunjukkan instans yang CurvePolygon diterima.
DECLARE @g1 geometry = 'CURVEPOLYGON EMPTY';
DECLARE @g2 geometry = 'CURVEPOLYGON((0 0, 0 0, 0 0, 0 0))';
DECLARE @g3 geometry = 'CURVEPOLYGON((0 0 1, 0 0 2, 0 0 3, 0 0 3))'
DECLARE @g4 geometry = 'CURVEPOLYGON(CIRCULARSTRING(1 3, 3 5, 4 7, 7 3, 1 3))';
DECLARE @g5 geography = 'CURVEPOLYGON((-122.3 47, 122.3 -47, 125.7 -49, 121 -38, -122.3 47))';
@g3 diterima meskipun titik awal dan akhir memiliki nilai Z yang berbeda karena nilai Z diabaikan.
@g5 diterima meskipun geography instans jenis tidak valid.
Contoh berikut melemparkan System.FormatException.
DECLARE @g1 geometry = 'CURVEPOLYGON((0 5, 0 0, 0 0, 0 0))';
DECLARE @g2 geometry = 'CURVEPOLYGON((0 0, 0 0, 0 0))';
@g1 tidak diterima karena titik awal dan akhir tidak memiliki nilai Y yang sama.
@g2 tidak diterima karena cincin tidak memiliki cukup poin.
Instans yang valid
CurvePolygon Agar instans valid baik cincin eksterior maupun interior harus memenuhi kriteria berikut:
Mereka hanya dapat menyentuh pada satu titik tangen.
Mereka tidak bisa saling melintasi.
Setiap cincin harus berisi setidaknya empat titik.
Setiap cincin harus merupakan jenis kurva yang dapat diterima.
CurvePolygon instans juga perlu memenuhi kriteria tertentu tergantung pada apakah itu atau geometrygeography jenis data.
Jenis data geometri
Instans geometryCurvePolygon yang valid harus memiliki atribut berikut:
Semua cincin interior harus terkandung dalam cincin eksterior.
Mungkin memiliki beberapa cincin interior, tetapi cincin interior tidak dapat berisi cincin interior lain.
Tidak ada cincin yang bisa melintasi dirinya sendiri atau cincin lain.
Cincin hanya dapat menyentuh pada titik tangen tunggal (jumlah titik di mana sentuhan cincin harus terbatas).
Interior poligon harus terhubung.
Contoh berikut menunjukkan instans geometryCurvePolygon yang valid.
DECLARE @g1 geometry = 'CURVEPOLYGON EMPTY';
DECLARE @g2 geometry = 'CURVEPOLYGON(CIRCULARSTRING(1 3, 3 5, 4 7, 7 3, 1 3))';
SELECT @g1.STIsValid(), @g2.STIsValid();
Instans CurvePolygon memiliki aturan validitas yang sama dengan instans Polygon dengan pengecualian bahwa instans CurvePolygon dapat menerima jenis segmen busur melingkar baru. Untuk contoh instans lain yang valid atau tidak valid, lihat Poligon.
Jenis data geografi
Instans geographyCurvePolygon yang valid harus memiliki atribut berikut:
Interior poligon terhubung menggunakan aturan sebelah kiri.
Tidak ada cincin yang bisa melintasi dirinya sendiri atau cincin lain.
Cincin hanya dapat menyentuh pada titik tangen tunggal (jumlah titik di mana sentuhan cincin harus terbatas).
Interior poligon harus terhubung.
Contoh berikut menunjukkan instans CurvePolygon geografi yang valid.
DECLARE @g geography = 'CURVEPOLYGON((-122.3 47, 122.3 47, 125.7 49, 121 38, -122.3 47))';
SELECT @g.STIsValid();
Contoh
A. Membuat Instans Geometri dengan CurvePolygon Kosong
Contoh ini menunjukkan cara membuat instans kosong CurvePolygon :
DECLARE @g geometry;
SET @g = geometry::Parse('CURVEPOLYGON EMPTY');
B. Mendeklarasikan dan Membuat Instans Geometri dengan CurvePolygon dalam Pernyataan yang Sama
Cuplikan kode ini menunjukkan cara mendeklarasikan dan menginisialisasi instans geometri dengan CurvePolygon dalam pernyataan yang sama:
DECLARE @g geometry = 'CURVEPOLYGON(CIRCULARSTRING(2 4, 4 2, 6 4, 4 6, 2 4))'
C. Membuat Instans Geografi dengan CurvePolygon
Cuplikan kode ini menunjukkan cara mendeklarasikan dan menginisialisasi geography instans dengan CurvePolygon:
DECLARE @g geography = 'CURVEPOLYGON(CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))';
D. Menyimpan CurvePolygon dengan Hanya Cincin Pembatas Eksterior
Contoh ini menunjukkan cara menyimpan lingkaran sederhana dalam CurvePolygon instans (hanya cincin pembatas eksterior yang digunakan untuk menentukan lingkaran):
DECLARE @g geometry;
SET @g = geometry::Parse('CURVEPOLYGON(CIRCULARSTRING(2 4, 4 2, 6 4, 4 6, 2 4))');
SELECT @g.STArea() AS Area;
E. Menyimpan CurvePolygon Yang Berisi Cincin Interior
Contoh ini membuat donat dalam CurvePolygon instans (cincin pembatas eksterior dan cincin interior digunakan untuk menentukan donat):
DECLARE @g geometry;
SET @g = geometry::Parse('CURVEPOLYGON(CIRCULARSTRING(0 4, 4 0, 8 4, 4 8, 0 4), CIRCULARSTRING(2 4, 4 2, 6 4, 4 6, 2 4))');
SELECT @g.STArea() AS Area;
Contoh ini menunjukkan instans yang valid CurvePolygon dan instans yang tidak valid saat menggunakan cincin interior:
DECLARE @g1 geometry, @g2 geometry;
SET @g1 = geometry::Parse('CURVEPOLYGON(CIRCULARSTRING(0 5, 5 0, 0 -5, -5 0, 0 5), (-2 2, 2 2, 2 -2, -2 -2, -2 2))');
IF @g1.STIsValid() = 1
BEGIN
SELECT @g1.STArea();
END
SET @g2 = geometry::Parse('CURVEPOLYGON(CIRCULARSTRING(0 5, 5 0, 0 -5, -5 0, 0 5), (0 5, 5 0, 0 -5, -5 0, 0 5))');
IF @g2.STIsValid() = 1
BEGIN
SELECT @g2.STArea();
END
SELECT @g1.STIsValid() AS G1, @g2.STIsValid() AS G2;
Keduanya @g1 dan @g2 gunakan cincin pembatas eksterior yang sama: lingkaran dengan radius 5 dan keduanya menggunakan persegi untuk cincin interior. Namun, instans @g1 valid, tetapi instans @g2 tidak valid. Alasan yang @g2 tidak valid adalah bahwa cincin interior membagi ruang interior yang dibatasi oleh cincin eksterior menjadi empat wilayah terpisah. Gambar berikut menunjukkan apa yang terjadi:
Lihat juga
Poligon
CircularString
CompoundCurve
Referensi Metode Jenis Data geometri
Referensi Metode Jenis Data geografi
Gambaran Umum Tipe Data Spasial