Aracılığıyla paylaş


CircularString

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL analiz uç noktasıMicrosoft Fabric'te ambarMicrosoft Fabric'te SQL veritabanı

CircularString, sıfır veya daha fazla sürekli dairesel yay kesiminden oluşan bir koleksiyondur. Dairesel yay segmenti, iki boyutlu düzlemde üç nokta ile tanımlanan eğri bir kesimdir; birinci nokta üçüncü noktayla aynı olamaz. Dairesel bir yay segmentinin üç noktasının tümü de doğrusalsa, yay segmenti bir çizgi segmenti olarak değerlendirilir.

CircularString örnekleri

Aşağıdaki çizimde geçerli CircularString örnekleri gösterilmektedir:

CircularString örneği uzamsal ölçümlerin diyagramı.

Kabul edilen örnekler

Bir CircularString örneği boşsa veya n olan tek sayıda nokta içeriyorsa kabul edilir; burada n > 1 olur. 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)';  

@g3 , CircularString örneğinin kabul edilebileceğini ancak geçerli olmadığını gösterir. Aşağıdaki CircularString örnek bildirimi kabul edilmedi. Bu bildirim bir System.FormatException fırlatır.

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

Geçerli örnekler

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

  • En az bir dairesel yay segmenti içermelidir (yani en az üç noktaya sahiptir).
  • Son segment dışında, dizideki her döngüsel yay kesimi için son uç nokta, dizideki bir sonraki segment için ilk uç nokta olmalıdır.
  • Tek sayıda puana sahip olmalıdır.
  • Bir aralıkta kendi kendine örtüşemez.
  • CircularString örnekleri çizgi kesimleri içerese de, bu çizgi kesimleri üç satırlı noktayla tanımlanmalıdır.

Aşağıdaki örnekte geçerli CircularString örnekleri gösterilmektedir.

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

Bir CircularString örneğinin tam bir daire tanımlamak için en az iki dairesel yay kesimi içermesi gerekir. Bir CircularString örneği, tam bir daire tanımlamak için tek bir dairesel yay kesimi (örneğin, (1 1, 3 1, 1 1) kullanamaz. Daireyi tanımlamak için (1 1, 2 2, 3 1, 2 0, 1 1) kullanın.

Aşağıdaki örnekte geçerli olmayan CircularString örnekleri gösterilmektedir.

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

Kollinear noktaları olan örnekler

Aşağıdaki durumlarda dairesel bir yay segmenti çizgi segmenti olarak ele alınacaktır:

  • Üç nokta aynı doğru üzerinde olduğunda (örneğin, (1 3, 4 4, 7 5)).
  • İlk ve orta nokta aynı ancak üçüncü nokta farklı olduğunda (örneğin, (1 3, 1 3, 7 5)).
  • Orta ve son nokta aynı ancak ilk nokta farklı olduğunda (örneğin, (1 3, 4 4, 4 4)).

Examples

A. Boş Bir CircularString ile Geometri Örneği Oluşturma

Bu örnekte boş bir CircularString örneğinin nasıl oluşturulacağı gösterilmektedir:

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

B. Bir Dairesel Yay Segmenti ile "CircularString" Kullanarak Geometri Örneği Oluşturma

Aşağıdaki örnekte, tek bir dairesel yay segmenti (yarım daire) ile bir CircularString örneğinin nasıl oluşturulacağı gösterilmektedir:

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

C. CircularString Kullanarak Birden Çok Dairesel Yay Kesimi ile Geometri Örneği Oluşturma

Aşağıdaki örnekte birden fazla dairesel yay kesimine (tam daire) sahip bir CircularString örneğinin nasıl oluşturulacağı gösterilmektedir:

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

Sonuç kümesi aşağıdadır.

Circumference = 6.28319  

CircularString yerine LineString kullanıldığında çıktıyı karşılaştırın:

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

Sonuç kümesi aşağıdadır.

Perimeter = 5.65685  

CircularString örneğinin değeri, dairenin gerçek çevresi olan 2∏'ye yakındır.

D. Aynı İfade İçinde Bir CircularString ile Geometri Örneğini Tanımlama ve Örnek Oluşturma

Bu kod parçacığı, aynı deyimde bir geometri örneğini bir CircularString ile nasıl bildirip örneğini oluşturacağınızı gösterir.

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

E. CircularString ile Coğrafya Örneği Oluşturun

Aşağıdaki örnekte, CircularString ile bir coğrafya örneğinin nasıl bildirilip örneklenmesi gösterilmektedir:

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. Düz Çizgi içeren bir CircularString ile Geometri Örneği Oluşturma

Aşağıdaki örnekte düz çizgi olan bir CircularString örneğinin nasıl oluşturulacağı gösterilmektedir:

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