Aracılığıyla paylaş


CompoundCurve

A CompoundCurvesıfır ya da daha sürekli bir koleksiyon CircularStringya LineStringgeometri ya da Coğrafya türlerin örnekleri.

Önemli notÖnemli

Ayrıntılı bir açıklama ve örnekler bu sürümde yeni mekansal özellikleri dahil CompoundCurvebeyaz kağıt yükleme alt tür, Yeni mekansal özellikleri SQL Server 2012 yılında.

Boş bir CompoundCurveörneği örneği, ama bir CompoundCurvegeçerli olması için bu aşağıdaki ölçütlere uyması gerekir:

  1. En az birini içermesi gereken CircularStringya LineStringörneği.

  2. Sıra CircularStringya LineStringörnekleri sürekli olmalı.

Eğer bir CompoundCurveçok dizisi içerir CircularStringve LineString örnekler, bitiş son nokta için son haricinde her örneği için sıradaki sonraki örneği başlangıç bitiş noktası olmalı. Bitiş noktası sıra önceki örneği ise yani (4 3 7 2), sonraki geçtiği sırada olması için başlangıç noktası (4 3 7 2). Z(elevation) ve M(measure) değerleri noktası için de aynı olması gerektiğini unutmayın. İki nokta arasında fark varsa bir System.FormatExceptionatılır. İşaret içinde bir CircularStringz ve m bir değer yok. Hiçbir z ve m değerleri önceki örneği bitiş noktası için verilirse sonraki örneği başlangıç noktası z ve m değerleri içeremez. Önceki sırası için bitiş noktası (4 3) ise, bir sonraki serisi için başlangıç noktası (4 3); olmalıdır Bu olamaz (4 3 7 2). Tüm noktaları bir CompoundCurvez değeri ya da aynı z değeri örnek olması gerekir.

CompoundCurve örnekleri

Aşağıda geçerli gösterilmiştir CompoundCurvetürleri.

Ff929165.f278742e-b861-4555-8b51-3d972b7602bf(tr-tr,SQL.110).gif

Kabul edilen örnekleri

CompoundCurveBu boş bir örneği veya aşağıdaki ölçütlere uyan örneği kabul.

  1. Tarafından bulunan tüm örnekleri CompoundCurveörneği kabul edilen circular arc kesimi örnekler vardır. Kabul edilen circular arc kesimi örnekleri ile ilgili daha fazla bilgi için bkz: LineStringve CircularString.

  2. Tüm circular arc segmentler CompoundCurveörneği bağlı. İlk noktayı izleyen her circular arc kesiminin önceki circular arc kesimindeki son nokta ile aynıdır.

    [!NOT]

    Bu z ve m koordinatlarını içerir. Yani, tüm dört koordinat x, y, z ve m aynı olması gerekir.

  3. Bulunan örneklerin hiçbiri boş örnekleridir.

Aşağıdaki örnek kabul edilen CompoundCurveörnekleri.

DECLARE @g1 geometry = 'COMPOUNDCURVE EMPTY';
DECLARE @g2 geometry = 'COMPOUNDCURVE(CIRCULARSTRING(1 0, 0 1, -1 0), (-1 0, 2 0))';

Aşağıdaki örnekte gösterildiği CompoundCurvekabul edilmez örnekleri. Bu örnekleri atmak System.FormatException.

DECLARE @g1 geometry = 'COMPOUNDCURVE(CIRCULARSTRING EMPTY)';
DECLARE @g2 geometry = 'COMPOUNDCURVE(CIRCULARSTRING(1 0, 0 1, -1 0), (1 0, 2 0))';

Geçerli örneği

A CompoundCurveörneği aşağıdaki ölçütleri karşılıyorsa geçerli.

  1. CompoundCurveÖrneği kabul.

  2. Tarafından bulunan tüm circular arc kesimi örnekleri CompoundCurveörneği olan geçerli örneği.

Aşağıdaki örnek, geçerli gösterir CompoundCurveörnekleri.

DECLARE @g1 geometry = 'COMPOUNDCURVE EMPTY';
DECLARE @g2 geometry = 'COMPOUNDCURVE(CIRCULARSTRING(1 0, 0 1, -1 0), (-1 0, 2 0))';
DECLARE @g3 geometry = 'COMPOUNDCURVE(CIRCULARSTRING(1 1, 1 1, 1 1), (1 1, 3 5, 5 4))';
SELECT @g1.STIsValid(), @g2.STIsValid(), @g3.STIsValid();

@g3geçerli değil çünkü CircularStringörneği geçerli. Geçerliliği hakkında daha fazla bilgi CircularStringörnek için bkz: CircularString.

Aşağıdaki örnekte gösterildiği CompoundCurvegeçerli olmayan örnekleri.

DECLARE @g1 geometry = 'COMPOUNDCURVE(CIRCULARSTRING(1 1, 1 1, 1 1), (1 1, 3 5, 5 4, 3 5))';
DECLARE @g2 geometry = 'COMPOUNDCURVE((1 1, 1 1))';
DECLARE @g3 geometry = 'COMPOUNDCURVE(CIRCULARSTRING(1 1, 2 3, 1 1))';
SELECT @g1.STIsValid(), @g2.STIsValid(), @g3.STIsValid();

@g1İkinci örnek geçerli bir LineStringÖrnek olmadığı için geçerli değil. @g2geçerli değil çünkü LineStringörneği geçerli değil. @g3geçerli değil çünkü CircularStringörneği geçerli değil. Geçerli hakkında daha fazla bilgi için CircularStringve LineStringgörmek, CircularStringve LineString.

Örnekler

A.Geometrisi örneği boş bir CompooundCurve ile örnekleme

Aşağıdaki örnek boş oluşturulması gösterilmiştir CompoundCurveörneği:

DECLARE @g geometry;
SET @g = geometry::Parse('COMPOUNDCURVE EMPTY');

B.Aynı deyimi içinde bir CompoundCurve kullanarak bir geometrisi örneği başlatmasını ve bildirme

Nasıl ilan ve başlatmak için aşağıdaki örnek gösterir bir geometryile örnek bir CompoundCurve aynı deyimi içinde:

DECLARE @g geometry = 'COMPOUNDCURVE ((2 2, 0 0),CIRCULARSTRING (0 0, 1 2.1082, 3 6.3246, 0 7, -3 6.3246, -1 2.1082, 0 0))';

C.Coğrafi konum örneği ile bir CompoundCurve örnekleme

Nasıl ilan ve başlatmak için aşağıdaki örnek gösterir bir geographyile örnek bir CompoundCurve:

DECLARE @g geography = 'COMPOUNDCURVE(CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))';

D.Kare bir CompoundCurve örneği olarak saklanması

Aşağıdaki örnek kullanmak için iki farklı şekilde kullandığı bir CompoundCurvekare depolamak için örneği.

DECLARE @g1 geometry, @g2 geometry;
SET @g1 = geometry::Parse('COMPOUNDCURVE((1 1, 1 3), (1 3, 3 3),(3 3, 3 1), (3 1, 1 1))');
SET @g2 = geometry::Parse('COMPOUNDCURVE((1 1, 1 3, 3 3, 3 1, 1 1))');
SELECT @g1.STLength(), @g2.STLength();

Uzunlukları her ikisi için de @g1ve @g2aynıdır. Örnekte dikkat bu bir CompoundCurveörneği bir veya daha fazla örneğini saklayabilir LineString.

E.Örnekleme ile birden çok CircularStrings bir CompoundCurve kullanarak bir geometrisi örneği

Aşağıdaki örnek nasıl iki farklı gösterir CircularStringbaşlatmak için örnek bir CompoundCurve.

DECLARE @g geometry;
SET @g = geometry::Parse('COMPOUNDCURVE(CIRCULARSTRING(0 2, 2 0, 4 2), CIRCULARSTRING(4 2, 2 4, 0 2))');
SELECT @g.STLength();

Bu aşağıdaki çıktıyı üretir: 4∏ eşdeğer olan 12.566370…. CompoundCurveÖrnekte örneğini saklar 2 yarıçaplı daire. Her ikisi de önceki kod örnekleri kullanmak yoktu bir CompoundCurve. İlk örnek için bir LineStringörneği basit olurdu ve bir CircularStringörneği için ikinci örnek basit olurdu. Ancak, sonraki örnek nereye gösteren bir CompoundCurvedaha iyi bir alternatif sağlar.

F.Bir yarım bir CompoundCurve kullanarak

Aşağıdaki örnek bir CompoundCurvebir yarım depoya örneği.

DECLARE @g geometry;
SET @g = geometry::Parse('COMPOUNDCURVE(CIRCULARSTRING(0 2, 2 0, 4 2), (4 2, 0 2))');
SELECT @g.STLength();

G.Bir CompoundCurve birden fazla CircularString ve LineString örnekleri depolama

Aşağıdaki örnek, birden çok gösterir CircularStringve LineStringörnekleri kullanılarak saklanabilir bir CompoundCurve.

DECLARE @g geometry
SET @g = geometry::Parse('COMPOUNDCURVE((3 5, 3 3), CIRCULARSTRING(3 3, 5 1, 7 3), (7 3, 7 5), CIRCULARSTRING(7 5, 5 7, 3 5))');
SELECT @g.STLength();

H.z ve m değerleri örnekleriyle depolama

Aşağıdaki örnek, nasıl kullanılacağını gösterir bir CompoundCurvebir dizi saklamak için örnek CircularStringve LineStringz ve m değerleri örnekleriyle.

SET @g = geometry::Parse('COMPOUNDCURVE(CIRCULARSTRING(7 5 4 2, 5 7 4 2, 3 5 4 2), (3 5 4 2, 8 7 4 2))');

I.CircularString örnekleri açıkça bildirilmelidir neden gösteren

Aşağıdaki örnek, neden gösterir CircularStringörnekleri gerekir açıkça ilan. Programcı bir daire içinde saklamaya çalışıyor bir CompoundCurveörneği.

DECLARE @g1 geometry;  
DECLARE @g2 geometry;
SET @g1 = geometry::Parse('COMPOUNDCURVE(CIRCULARSTRING(0 2, 2 0, 4 2), (4 2, 2 4, 0 2))');
SELECT 'Circle One', @g1.STLength() AS Perimeter;  -- gives an inaccurate amount
SET @g2 = geometry::Parse('COMPOUNDCURVE(CIRCULARSTRING(0 2, 2 0, 4 2), CIRCULARSTRING(4 2, 2 4, 0 2))');
SELECT 'Circle Two', @g2.STLength() AS Perimeter;  -- now we get an accurate amount

Çıktı aşağıdaki gibidir:

Circle One11.940039…
Circle Two12.566370…

İki daire için çevre çevre gerçek değeri yaklaşık 4∏ olduğunu. Ancak, bir daire için çevre önemli ölçüde yanlıştır. Bir daire CompoundCurveörneği depolar bir circular arc kesimi (abc) ve iki çizgi parçaları (cd, da). CompoundCurveÖrneği sahip iki circular arc segmentlere (abc, cda) bir daire tanımlamak için saklamak. A LineStringörneği noktaları (4 2, 2 4, 0 2) daire bir'ın ikinci kümesi tanımlar CompoundCurveörneği. Sen-si olmak-e açıkça bildirmek bir CircularStringiçinde örnek bir CompoundCurve.

Ayrıca bkz.

Başvuru

STIsValid (geometri veri türü)

STLength (geometri veri türü)

STStartPoint (geometri veri türü)

STEndpoint (geometri veri türü)

Kavramlar

LineString

CircularString

Mekansal veri türlerine genel bakış

Nokta