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 analiz uç noktası
Microsoft Fabric'te ambar
Microsoft Fabric'te SQL veritabanı
CurvePolygon, SQL Veritabanı Altyapısı uzamsal verilerinde dış sınırlayıcı halka ve sıfır veya daha fazla iç halka ile tanımlanan topolojik olarak kapalı bir yüzeydir.
Önemli
CurvePolygon alt türü de dahil olmak üzere SQL Server 2012'de (11.x) kullanıma sunulan uzamsal özelliklerin ayrıntılı açıklaması ve örnekleri için SQL Server 2012'de Yeni Uzamsal Özellikler adlı teknik incelemeyi indirin.
Aşağıdaki ölçütler bir CurvePolygon örneğinin özniteliklerini tanımlar:
CurvePolygon örneğinin sınırı dış halka ve tüm iç halkalar tarafından tanımlanır.
CurvePolygon örneğinin iç kısmı, dış halka ile iç halkaların tümü arasındaki boşlukdur.
Bir CurvePolygon örneği, bir Poligon örneğinden farklıdır; çünkü bir CurvePolygon örneği, şu dairesel yay kesimlerini içerebilir: CircularString ve CompoundCurve.
CompoundCurve örnekleri
Aşağıdaki çizimde geçerli CurvePolygon rakamları gösterilmektedir:
Kabul edilen örnekler
Bir CurvePolygon örneğinin kabul edilmesi için boş olması veya yalnızca kabul edilen dairesel yay halkaları içermesi gerekir. Kabul edilen dairesel yay halkası aşağıdaki gereksinimleri karşılar.
Kabul edilen bir LineString, CircularString veya CompoundCurve örneğidir. Kabul edilen örnekler hakkında daha fazla bilgi için bkz. LineString, CircularString ve CompoundCurve.
En az dört puanı vardır.
Başlangıç ve uç nokta aynı X ve Y koordinatlarına sahiptir.
Uyarı
Z ve M değerleri yoksayılır.
Aşağıdaki örnekte kabul edilen CurvePolygon örnekleri gösterilmektedir.
DECLARE @g1 geometry = 'CURVEPOLYGON EMPTY';
DECLARE @g2 geometry = 'CURVEPOLYGON((0 0, 0 0, 0 0, 0 0))';
DECLARE @g3 geometry = 'CURVEPOLYGON((0 0 1, 0 0 2, 0 0 3, 0 0 3))'
DECLARE @g4 geometry = 'CURVEPOLYGON(CIRCULARSTRING(1 3, 3 5, 4 7, 7 3, 1 3))';
DECLARE @g5 geography = 'CURVEPOLYGON((-122.3 47, 122.3 -47, 125.7 -49, 121 -38, -122.3 47))';
@g3 , başlangıç ve bitiş noktalarının farklı Z değerleri olmasına rağmen kabul edilir çünkü Z değerleri yoksayılır.
@g5 coğrafya türü örneği geçerli olmasa bile kabul edilir.
Aşağıdaki örnekler System.FormatException fırlatır.
DECLARE @g1 geometry = 'CURVEPOLYGON((0 5, 0 0, 0 0, 0 0))';
DECLARE @g2 geometry = 'CURVEPOLYGON((0 0, 0 0, 0 0))';
@g1 kabul edilmiyor çünkü başlangıç ve bitiş noktaları aynı Y değerine sahip değil.
@g2 halka yeterli puana sahip olmadığından kabul edilmemektedir.
Geçerli örnekler
Bir CurvePolygon örneğinin geçerli olması için hem dış hem de iç halkaların aşağıdaki ölçütleri karşılaması gerekir:
- Yalnızca tek bir tanjant noktasında dokunabilirler.
- Birbirlerini geçemezler.
- Her halka en az dört nokta içermelidir.
- Her halka kabul edilebilir bir eğri türü olmalıdır.
CurvePolygon örneklerinin geometri veya coğrafya veri türleri olmasına bağlı olarak belirli ölçütleri karşılaması da gerekir.
Geometri veri türü
Geçerli bir geometryCurvePolygon örneğinin aşağıdaki öznitelikleri olmalıdır:
- Tüm iç halkalar dış halka içinde bulunmalıdır.
- Birden fazla iç halka olabilir, ancak bir iç halka başka bir iç halka içeremez.
- Hiçbir halka kendi kendini veya başka bir halkayı geçemez.
- Halkalar yalnızca tek teğet noktasında dokunabilir (halkaların dokunduğu nokta sayısı sonlu olmalıdır).
- Çokgenin iç kısmı bağlı olmalıdır.
Aşağıdaki örnekte geçerli geometryCurvePolygon örnekleri gösterilmektedir.
DECLARE @g1 geometry = 'CURVEPOLYGON EMPTY';
DECLARE @g2 geometry = 'CURVEPOLYGON(CIRCULARSTRING(1 3, 3 5, 4 7, 7 3, 1 3))';
SELECT @g1.STIsValid(), @g2.STIsValid();
CurvePolygon örnekleri, CurvePolygon örneklerinin yeni dairesel yay segmenti türlerini kabul etme durumu dışında Çokgen örnekleriyle aynı geçerlilik kurallarına sahiptir. Geçerli veya geçerli olmayan örneklerin daha fazla örneği için bkz. Çokgen.
Coğrafya veri türü
Geçerli bir geographyCurvePolygon örneği aşağıdaki özniteliklere sahip olmalıdır:
- Çokgenin iç kısmı soldaki kural kullanılarak bağlanır.
- Hiçbir halka kendi kendini veya başka bir halkayı geçemez.
- Halkalar yalnızca tek bir tanjant noktasında dokunabilir (halkaların dokunduğu noktaların sayısı sonlu olmalıdır).
- Çokgenin iç kısmı bağlı olmalıdır.
Aşağıdaki örnekte geçerli bir coğrafya CurvePolygon örneği gösterilmektedir.
DECLARE @g geography = 'CURVEPOLYGON((-122.3 47, 122.3 47, 125.7 49, 121 38, -122.3 47))';
SELECT @g.STIsValid();
Örnekler
A. Boş CurvePolygon ile Geometri Örneği Oluşturma
Bu örnekte boş bir CurvePolygon örneğinin nasıl oluşturulacağı gösterilmektedir:
DECLARE @g geometry;
SET @g = geometry::Parse('CURVEPOLYGON EMPTY');
B. Bir CurvePolygon ile Geometri Örneğini Aynı Bildirimde Bildirme ve Örnekleme
Bu kod parçacığı, aynı satırda CurvePolygon ile bir geometri örneğinin nasıl bildirileceğini ve başlatılacağını gösterir.
DECLARE @g geometry = 'CURVEPOLYGON(CIRCULARSTRING(2 4, 4 2, 6 4, 4 6, 2 4))'
C. CurvePolygon ile Coğrafya Örneği Oluşturma
Bu kod parçacığı, CurvePolygon ile coğrafya örneği bildirmeyi ve başlatmayı gösterir:
DECLARE @g geography = 'CURVEPOLYGON(CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))';
D. Yalnızca Dış Sınırlayıcı Halka ile CurvePolygon Depolama
Bu örnekte, bir CurvePolygon örneğinde basit bir dairenin nasıl depolanacağı gösterilmektedir (daireyi tanımlamak için yalnızca dış sınırlayıcı halka kullanılır):
DECLARE @g geometry;
SET @g = geometry::Parse('CURVEPOLYGON(CIRCULARSTRING(2 4, 4 2, 6 4, 4 6, 2 4))');
SELECT @g.STArea() AS Area;
E. İç Halkalar içeren bir CurvePolygon Depolama
Bu örnek , CurvePolygon örneğinde bir halka oluşturur (halkayı tanımlamak için hem dış sınırlayıcı halka hem de iç halka kullanılır):
DECLARE @g geometry;
SET @g = geometry::Parse('CURVEPOLYGON(CIRCULARSTRING(0 4, 4 0, 8 4, 4 8, 0 4), CIRCULARSTRING(2 4, 4 2, 6 4, 4 6, 2 4))');
SELECT @g.STArea() AS Area;
Bu örnekte iç halkalar kullanılırken hem geçerli bir CurvePolygon örneği hem de geçersiz bir örnek gösterilmektedir:
DECLARE @g1 geometry, @g2 geometry;
SET @g1 = geometry::Parse('CURVEPOLYGON(CIRCULARSTRING(0 5, 5 0, 0 -5, -5 0, 0 5), (-2 2, 2 2, 2 -2, -2 -2, -2 2))');
IF @g1.STIsValid() = 1
BEGIN
SELECT @g1.STArea();
END
SET @g2 = geometry::Parse('CURVEPOLYGON(CIRCULARSTRING(0 5, 5 0, 0 -5, -5 0, 0 5), (0 5, 5 0, 0 -5, -5 0, 0 5))');
IF @g2.STIsValid() = 1
BEGIN
SELECT @g2.STArea();
END
SELECT @g1.STIsValid() AS G1, @g2.STIsValid() AS G2;
@g1 hem @g2 hem de aynı dış sınırlayıcı halkayı kullanır: yarıçapı 5 olan bir daire ve her ikisi de iç halka için bir kare kullanır. Ancak, örnek @g1 geçerli, ancak örnek @g2 geçersiz. Geçersiz olmasının @g2 nedeni, iç halkanın dış halka ile sınırlanmış iç alanı dört ayrı bölgeye bölmesidir. Aşağıdaki çizimde neler olduğu gösterilmektedir: