Aracılığıyla paylaş


(Geometri veri türü) azaltın

Yaklaşık döner verilen geometryDouglas-Peucker algoritması uzantı örneği verilen tolerans ile çalışan tarafından üretilen örneği.

Sözdizimi

.Reduce ( tolerance )

Bağımsız değişkenler

  • tolerance
    Bir değer türü kayan nokta. toleranceyaklaşıklık algoritması giriş için hoşgörü olduğunu.

Dönüş Türleri

SQL Server dönüş türü: geometry

clr döndürme türü: SqlGeometry

Açıklamalar

Koleksiyon türleri için bu algoritması bağımsız olarak her faaliyet geometryörneğinde içerdiği.

Bu algoritma değiştirme Pointörnekleri.

Tarih LineString, CircularString, ve CompoundCurveörnekleri, yaklaşıklık algoritması özgün başlangıç ve bitiş noktaları örneği korur ve yinelenen geri özgün örneğinden hiçbir nokta kadar sonuç çoğu icabında sapma daha fazla verilen tolerans noktası ekler.

Reduce()döner bir LineString, CircularString, ya CompoundCurveörneği için CircularStringörnekleri. Reduce()ya da döner bir CompoundCurveveya LineStringörneği için CompoundCurveörnekleri.

Tarih Polygonörnekleri, yaklaşıklık algoritması bağımsız olarak her halkaya uygulanır. Yöntem üretecek bir FormatException, döndürülen Polygonörneği geçerli değil; Örneğin, a-geçerli olmayan MultiPolygonörneği oluşturulur Reduce()her halka örnek ve elde edilen çalma örtüşme basitleştirmek için uygulanan. Tarih CurvePolygonörnekleri ile bir dış halka ve hiçbir iç çalma Reduce()döndüren bir CurvePolygon, LineString, veya Pointörneği. Eğer CurvePolygoniç çalma var sonra bir CurvePolygonya MultiPointörneği döndürülür.

Circular arc segment karşılaşıldığında yaklaşıklık algoritması ark tarafından yarım verilen Tolerans dahilinde kendi akor yaklaşılabilir olup olmadığını denetler. Akor bu ölçütleri karşılıyorsa, circular arc hesaplamalarında akor tarafından değiştirilir. Bu ölçütlere uymayan, circular arc korunur ve kalan kesimlerine yaklaşıklık algoritması uygulanır.

Örnekler

A.LineString kolaylaştırmak için reduce() kullanma

Aşağıdaki örnek bir LineStringörneği ve kullanımları Reduce()Örneği basitleştirmek için.

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();

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.Reduce() bir CircularString tolerans düzeyleri değişen ile kullanma

Aşağıdaki örnek Reduce()üç tolerans düzeyleri ile bir CircularStringörneği:

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 çıktıyı üretir:

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)

Her dönen örnekleri bitiş noktaları (0 0) ve (24 0) içerir.

C.Reduce() bir CompoundCurve tolerans düzeyleri değişen ile kullanma

Aşağıdaki örnek Reduce()iki tolerans düzeyleri ile bir CompoundCurveörneği:

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 dikkat edin ikinci SELECTdeyimi döndürür LineStringörneği: LineString(0 0, 16 0).

Özgün başlangıç ve bitiş noktaları kayıp olduğu örnek gösterilen

Aşağıdaki örnek, nasıl orijinal başlangıç ve bitiş noktaları tarafından elde edilen intstance muhafaza değil gösterir. Bu özgün başlangıç istinat nedeniyle oluşur ve bitiş noktaları sonuç içinde geçersiz bir LineStringörneği.

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;

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;

Ayrıca bkz.

Diğer Kaynaklar

Genişletilmiş statik Geometry yöntemleri