Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
Verilen geometri örneğinin yaklaşık değerini döndürür. Yaklaşık değer, örnekte verilen toleransla Douglas-Peucker algoritmasının bir uzantısı çalıştırılarak oluşturulur.
Syntax
.Reduce ( tolerance )
Arguments
tolerance
Float türünde bir değerdir.
tolerans , yaklaşık algoritma için girişe dayanıklılıktır.
Dönüş Türleri
SQL Server dönüş türü: geometri
CLR dönüş türü: SqlGeometry
Remarks
Koleksiyon türleri için bu algoritma, örnekte yer alan her geometride bağımsız olarak çalışır.
Bu algoritma , Nokta örneklerini değiştirmez.
LineString, CircularString ve CompoundCurve örneklerinde yaklaşık algoritma, örneğin özgün başlangıç ve bitiş noktalarını tutar. Sonraki algoritma, özgün örnekten sonucu en çok saptıran noktayı yinelemeli olarak ekler. Bu işlem, verilen toleranstan daha fazla sapma olmayana kadar devam eder.
Reduce(), CircularString örnekleri için bir LineString, CircularString veya CompoundCurve örneği döndürür.
Reduce()
CompoundCurve örnekleri için bir CompoundCurve veya LineString örneği döndürür.
Çokgen örneklerde yaklaşıklık algoritması her halkaya bağımsız olarak uygulanır. yöntemi, döndürülen FormatException örneği geçerli değilse bir oluşturur; örneğin, örnekteki her halkayı basitleştirmek için uygulanırsa geçerli olmayan bir Reduce() örneği oluşturulur ve sonuçta ortaya çıkan halkalar çakışır. Dış halkası olan ve iç halkası olmayan CurvePolygon örneklerinde bir Reduce()CurvePolygon, LineString veya Point örneği döndürür.
CurvePolygon'un iç halkaları varsa bir CurvePolygon veya MultiPoint örneği döndürülür.
Dairesel bir yay segmenti bulunduğunda yaklaşık algoritma, arkın verilen toleransın yarısı içinde akor tarafından yaklaşık olarak belirlenip ayarlanamayacağını denetler. Bu ölçüte uyan akorlar, akor tarafından yapılan hesaplamalarda dairesel yay ile değiştirilir. Bir akor bu ölçütleri karşılamıyorsa döngüsel yay tutulur ve kalan segmentlere yaklaşık algoritma uygulanır.
Examples
A. LineString'i basitleştirmek için Reduce() kullanma
Aşağıdaki örnek bir LineString örnek oluşturur ve örneği basitleştirmek için kullanır 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. Bir CircularString üzerinde farklı tolerans düzeyleriyle Reduce() kullanma
Aşağıdaki örnekte, Reduce() örneğinde üç tolerans düzeyi kullanılır:
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();
Bu örnek aşağıdaki çıkışı oluşturur:
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)
Döndürülen örneklerin her biri uç noktaları (0 0) ve (24 0) içerir.
C. Bir CompoundCurve üzerinde farklı tolerans düzeyleriyle Reduce() kullanma
Aşağıdaki örnekte bir Reduce() örneğinde iki tolerans düzeyi kullanılır:
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();
Bu örnekte, ikinci SELECT deyiminin LineString örneğini döndürdüğüne dikkat edin: LineString(0 0, 16 0).
Özgün başlangıç ve bitiş noktalarının kaybolduğu bir örnek gösteriliyor
Aşağıdaki örnekte, özgün başlangıç ve uç noktaların sonuçta elde edilen örnek tarafından nasıl korunmayabileceği gösterilmektedir. Bu davranış, özgün başlangıç ve bitiş noktalarının tutulmasının geçersiz bir LineString örneğine neden olması nedeniyle oluşur.
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;