Share via


CircularString

A CircularStringsıfır veya daha fazla sürekli circular arc kesimleri topluluğudur. Üç nokta bir iki boyutlu düzlemde tanımlı bir eğri parça circular arc kesimdir; ilk noktayı üçüncü nokta ile aynı olamaz. Üç puan: circular arc parçanın collinear, ark segment bir çizgi parçası ele alınır.

Önemli notÖnemli

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

CircularString örnekleri

Aşağıda çizimi geçerli gösterir CircularStringörnekleri:

Ff929141.5ff17e34-b578-4873-9d33-79500940d0bc(tr-tr,SQL.110).gif

Kabul edilen örnekleri

A CircularStringEğer boş veya nokta, tek sayı içeren örneği kabul edilen nburada n > 1. Aşağıdaki CircularStringörnekleri kabul edilir.

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

@g3gösteren CircularStringörneği kabul edilen, ancak geçerli olabilir. Aşağıdaki CircularString örneğine bildiriyi kabul edilmez. Bu bildirim atar bir System.FormatException.

DECLARE @g geometry = 'CIRCULARSTRING(1 1, 2 0, 2 0, 1 1)';

Geçerli örneği

Geçerli bir CircularStringörneği boş veya aşağıdaki özniteliklere sahip:

  • En az bir circular arc kesimi içermesi gerekir (yani en az üç puanı da var).

  • Sıradaki sonraki kesimi için ilk bitiş noktasının sırasının son bölümü hariç her circular arc kesiminde geçen son noktası olmalıdır.

  • Bu noktaları tek sayıda olmalıdır.

  • Kendisi bir zaman aralığındaki gelemez.

  • Her ne kadar CircularStringörnekleri çizgi parçalarını içerebilir, bu çizgi parçaları üç collinear points by tanımlanmalıdır.

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

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

A CircularStringörneği tam bir daire tanımlamak için en az iki circular arc kesimleri içermeli. A CircularStringörneği, tam bir daire tanımlamak için bir tek circular arc kesimi (örneğin, (1 1 3 1, 1 1)) kullanamaz. (1 1, 2 2, 3 1 2 0, 1 1) Daire tanımlamak için kullanın.

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

DECLARE @g1 geometry = 'CIRCULARSTRING(1 1, 2 0, 1 1)';
DECLARE @g2 geometry = 'CIRCULARSTRING(0 0, 0 0, 0 0)';
SELECT @g1.STIsValid(), @g2.STIsValid();

Örnekleri ile collinear points

Aşağıdaki durumlarda bir circular arc kesimi bir çizgi parçası kabul edilir:

  • Ne zaman tüm üç Puan collinear (örneğin, (1 3 4 4, 7 5 için)).

  • Üçüncü nokta, ilk ve orta noktası aynı, ama olduğunda (örneğin, (1 3, 1 3, 7 5 için)) farklıdır.

  • İlk nokta, Orta ve son nokta aynı, ama olduğunda (örneğin, (1 3 4 4, 4 4 için)) farklıdır.

Örnekler

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

Bu örnek boş oluşturulması gösterilmiştir CircularStringörneği:

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

B.Bir dairesel Arc kesimi ile bir CircularString kullanarak bir geometrisi örneği örnekleme

Aşağıdaki örnek nasıl oluşturulacağını gösterir bir CircularStringile bir tek circular arc kesimi (yarım-daire) örneği:

DECLARE @g geometry;
SET @g = geometry:: STGeomFromText('CIRCULARSTRING(2 0, 1 1, 0 0)', 0);
SELECT @g.ToString();

C.Bir CircularString birden fazla dairesel Arc kesimleri ile kullanarak geometrisi örneği örnekleme

Aşağıdaki örnek nasıl oluşturulacağını gösterir bir CircularStringbirden fazla circular arc segment (tam daire) örnek:

DECLARE @g geometry;
SET @g = geometry::Parse('CIRCULARSTRING(2 1, 1 2, 0 1, 1 0, 2 1)');
SELECT 'Circumference = ' + CAST(@g.STLength() AS NVARCHAR(10));  

Bu aşağıdaki çıktıyı üretir:

Circumference = 6.28319

Çıkış karşılaştırmak zaman LineStringyerine kullanılan CircularString:

DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(2 1, 1 2, 0 1, 1 0, 2 1)', 0);
SELECT 'Perimeter = ' + CAST(@g.STLength() AS NVARCHAR(10));

Bu aşağıdaki çıktıyı üretir:

Perimeter = 5.65685

Fark değerini CircularStringörnektir daire gerçek çevresi olan 2∏ yakın.

D.Geometrisi örneği aynı deyimi içinde bir CircularString ile başlatmasını ve bildirme

Bu pasajı bildirmek ve örneğini gösterir bir geometryile örnek bir CircularStringaynı deyimi içinde:

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

E.Coğrafi konum örneği ile bir CircularString örnekleme

Aşağıdaki örnek nasıl beyan ve örneğini gösterir bir geographyile örnek bir CircularString:

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

F.Geometrisi örneği ile düz bir çizgi olan bir CircularString örnekleme

Aşağıdaki örnek nasıl oluşturulacağını gösterir bir CircularStringdüz bir çizgi olduğunu örneği:

DECLARE @g geometry;
SET @g = geometry::STGeomFromText('CIRCULARSTRING(0 0, 1 2, 2 4)', 0);

Ayrıca bkz.

Başvuru

MakeValid (coğrafi konum veri türü)

MakeValid (geometri veri türü)

STIsValid (geometri veri türü)

STIsValid (coğrafi konum veri türü)

STLength (geometri veri türü)

STStartPoint (geometri veri türü)

STEndpoint (geometri veri türü)

STPointN (geometri veri türü)

STNumPoints (geometri veri türü)

STIsRing (geometri veri türü)

STIsClosed (geometri veri türü)

STPointOnSurface (geometri veri türü)

Kavramlar

Mekansal veri türlerine genel bakış

CompoundCurve

LineString