Kurangi (Tipe Data geometri)
Berlaku untuk: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Mengembalikan perkiraan instans geometri yang diberikan. Perkiraan diproduksi dengan menjalankan ekstensi algoritma Douglas-Peucker pada instans dengan toleransi yang diberikan.
Sintaksis
.Reduce ( tolerance )
Catatan
Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.
Argumen
Toleransi
Adalah nilai jenis float. toleransi adalah toleransi untuk input untuk algoritma perkiraan.
Jenis Kembalian
Jenis pengembalian SQL Server: geometri
Jenis pengembalian CLR: SqlGeometry
Keterangan
Untuk jenis koleksi, algoritma ini beroperasi secara independen pada setiap geometri yang terkandung dalam instans.
Algoritma ini tidak memodifikasi instans Point .
Pada instans LineString, CircularString, dan CompoundCurve , algoritma perkiraan menyimpan titik awal dan akhir asli instans. Algoritma berikutnya secara berulang menambahkan kembali titik dari instans asli yang paling menyimpang dari hasil. Proses ini berlanjut sampai tidak ada titik yang menyimpang lebih dari toleransi yang diberikan.
Reduce()
mengembalikan instans LineString, CircularString, atau CompoundCurve untuk instans CircularString . Reduce()
mengembalikan instans CompoundCurve atau LineString untuk instans CompoundCurve.
Pada instans Poligon , algoritma perkiraan diterapkan secara independen ke setiap cincin. Metode ini akan menghasilkan jika instans Polygon yang FormatException
dikembalikan tidak valid; misalnya, instans MultiPolygon yang tidak valid dibuat jika Reduce()
diterapkan untuk menyederhanakan setiap cincin dalam instans dan cincin yang dihasilkan tumpang tindih. Pada instans CurvePolygon dengan cincin eksterior dan tanpa cincin interior, Reduce()
mengembalikan instans CurvePolygon, LineString, atau Point . Jika CurvePolygon memiliki cincin interior, maka instans CurvePolygon atau MultiPoint dikembalikan.
Ketika segmen busur melingkar ditemukan, algoritma perkiraan memeriksa apakah busur dapat diperkirakan oleh akordnya dalam setengah toleransi yang diberikan. Akord yang memenuhi kriteria ini memiliki busur melingkar yang diganti dalam perhitungan oleh akord. Jika akord tidak memenuhi kriteria ini, busur melingkar disimpan dan algoritma perkiraan diterapkan ke segmen yang tersisa.
Contoh
J. Menggunakan Reduce() untuk menyederhanakan LineString
Contoh berikut membuat instans LineString
dan menggunakan untuk menyederhanakan instans Reduce()
.
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(0 0, 0 1, 1 0, 2 1, 3 0, 4 1)', 0);
SELECT @g.Reduce(.75).ToString();
B. Menggunakan Reduce() dengan berbagai tingkat toleransi pada CircularString
Contoh berikut menggunakan Reduce()
dengan tiga tingkat toleransi pada instans CircularString :
DECLARE @g geometry = 'CIRCULARSTRING(0 0, 8 8, 16 0, 20 -4, 24 0)';
SELECT @g.Reduce(5).ToString();
SELECT @g.Reduce(15).ToString();
SELECT @g.Reduce(16).ToString();
Contoh ini menghasilkan output berikut:
CIRCULARSTRING (0 0, 8 8, 16 0, 20 -4, 24 0)
COMPOUNDCURVE (CIRCULARSTRING (0 0, 8 8, 16 0), (16 0, 24 0))
LINESTRING (0 0, 24 0)
Setiap instans yang dikembalikan berisi titik akhir (0 0) dan (24 0).
C. Menggunakan Reduce() dengan berbagai tingkat toleransi pada CompoundCurve
Contoh berikut menggunakan Reduce()
dengan dua tingkat toleransi pada instans CompoundCurve :
DECLARE @g geometry = 'COMPOUNDCURVE(CIRCULARSTRING(0 0, 8 8, 16 0, 20 -4, 24 0),(24 0, 20 4, 16 0))';
SELECT @g.Reduce(15).ToString();
SELECT @g.Reduce(16).ToString();
Dalam contoh ini perhatikan bahwa pernyataan SELECT kedua mengembalikan instans LineString: LineString(0 0, 16 0)
.
Menampilkan contoh di mana titik awal dan akhir asli hilang
Contoh berikut menunjukkan bagaimana titik akhir dan awal asli mungkin tidak dipertahankan oleh instans yang dihasilkan. Perilaku ini terjadi karena menjaga titik awal dan akhir asli akan mengakibatkan instans LineString yang tidak valid.
DECLARE @g geometry = 'LINESTRING(0 0, 4 0, 2 .01, 1 0)';
DECLARE @h geometry = @g.Reduce(1);
SELECT @g.STIsValid() AS Valid
SELECT @g.ToString() AS Original, @h.ToString() AS Reduced;
Lihat Juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk