Bagikan melalui


STBuffer (Tipe Data geometri)

Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance

Mengembalikan objek geometrik yang mewakili gabungan semua titik yang jaraknya dari instans geometri kurang dari atau sama dengan nilai yang ditentukan.

Sintaksis

  
.STBuffer ( distance )  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

jarak
Adalah nilai jenis float (ganda dalam .NET Framework) yang menentukan jarak dari instans geometri di mana untuk menghitung buffer.

Jenis Kembalian

Jenis pengembalian SQL Server: geometri

Jenis pengembalian CLR: SqlGeometry

Keterangan

STBuffer()menghitung buffer seperti BufferWithTolerance, menentukan toleransi = jarak * .001 dan relatif = false.

Ketika jarak> 0 maka instans Polygon atau MultiPolygon dikembalikan.

Catatan

Karena jarak adalah float, nilai yang sangat kecil dapat sama dengan nol dalam perhitungan. Ketika ini terjadi, salinan instans geometri panggilan dikembalikan. Lihat float dan nyata (Transact-SQL)

Ketika jarak = 0, salinan instans geometri panggilan dikembalikan.

Ketika jarak< 0, maka

  • instans GeometryCollection kosong dikembalikan saat dimensi instans adalah 0 atau 1.

  • buffer negatif dikembalikan ketika dimensi instans adalah 2 atau lebih.

    Catatan

    Buffer negatif juga dapat membuat instans GeometryCollection kosong.

Buffer negatif menghapus semua titik yang diapit dalam jarak batas geometri yang diberikan.

Kesalahan antara buffer teoritis dan komputasi adalah maks(toleransi, sejauh * 1,E-7) di mana toleransi = jarak * .001. Untuk informasi selengkapnya tentang tingkatan, lihat Referensi Metode Jenis Data geometri.

Contoh

J. Memanggil STBuffer() dengan parameter_value < 0 pada satu instans geometri dimensi

Contoh berikut mengembalikan instans kosong GeometryCollection :

 DECLARE @g geometry= 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer(-1).ToString();

B. Memanggil STBuffer() dengan parameter_value < 0 pada instans Polygon

Contoh berikut mengembalikan instans Polygon dengan buffer negatif:

 DECLARE @g geometry = 'POLYGON((1 1, 1 5, 5 5, 5 1, 1 1))'; 
 SELECT @g.STBuffer(-1).ToString();

C. Memanggil STBuffer() dengan parameter_value < 0 pada instans CurvePolygon

Contoh berikut mengembalikan instans Polygon dengan buffer negatif dari CurvePolygon instans:

 DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))'; 
 SELECT @g.STBuffer(-1).ToString();

Catatan

Instans Polygon dikembalikan alih-alih CurvePolygon instans. Untuk mengembalikan CurvePolygon instans, lihat BufferWithCurves (Jenis Data geometri)

D. Memanggil STBuffer() dengan nilai parameter negatif yang mengembalikan instans kosong

Contoh berikut menunjukkan apa yang terjadi ketika parameter jarak sama dengan -2 untuk contoh sebelumnya.

 DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))'; 
 SELECT @g.STBuffer(-2).ToString();

Pernyataan SELECT ini mengembalikanGEOMETRYCOLLECTION EMPTY.

E. Memanggil STBuffer() dengan parameter_value = 0

Contoh berikut mengembalikan salinan instans panggilan geometry :

 DECLARE @g geometry = 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer(0).ToString();

F. Memanggil STBuffer() dengan nilai parameter non-nol yang sangat kecil

Contoh berikut juga mengembalikan salinan instans panggilan geometry :

 DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';  
 DECLARE @distance float = 1e-20;  
 SELECT @g.STBuffer(@distance).ToString();

G. Memanggil STBuffer() dengan parameter_value > 0

Contoh berikut mengembalikan instans Polygon :

 DECLARE @g geometry= 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer(2).ToString();

H. Memanggil STBuffer() dengan nilai parameter string

Contoh berikut mengembalikan instans yang sama seperti yang Polygon disebutkan sebelumnya, tetapi parameter string diteruskan ke metode :

 DECLARE @g geometry= 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer('2').ToString();

Contoh berikut akan melemparkan kesalahan:

 DECLARE @g geometry = 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer('a').ToString();

Catatan

Dua contoh sebelumnya meneruskan string harfiah ke STBuffer(). Contoh pertama berfungsi karena string harfiah dapat dikonversi ke nilai numerik. Namun, contoh kedua melempar ArgumentException.

I. Memanggil STBuffer() pada instans MultiPoint

Contoh berikut mengembalikan dua MultiPolygon instans dan satu Polygon instans:

 DECLARE @g geometry = 'MULTIPOINT((1 1),(1 4))'; 
 SELECT @g.STBuffer(1).ToString(); 
 SELECT @g.STBuffer(1.5).ToString(); 
 SELECT @g.STBuffer(1.6).ToString();

Dua pernyataan SELECT pertama mengembalikan MultiPolygon instans karena jarak parameter kurang dari atau sama dengan 1/2 jarak antara dua titik (1 1) dan (1 4). Pernyataan SELECT ketiga mengembalikan instans Polygon karena instans buffer dari dua titik (1 1) dan (1 4) tumpang tindih.

Lihat Juga

BufferWithTolerance (Jenis Data geometri)
Metode OGC pada Instans Geometri