Aracılığıyla paylaş


Geometri örneklerini oluşturma, inşa etme ve sorgulama

Ş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ı

Planar uzamsal veri türü olan geometri, Öklid (düz) koordinat sistemindeki verileri temsil eder. Bu tür, SQL Server'da ortak dil çalışma zamanı (CLR) veri türü olarak uygulanır.

Geometri türü önceden tanımlanmıştır ve her veritabanında kullanılabilir. Geometri türünde tablo sütunları oluşturabilir ve geometri verileri üzerinde diğer CLR türlerini kullandığınız gibi çalışabilirsiniz.

SQL Server tarafından desteklenen geometri veri türü (planar), SQL Belirtimi sürüm 1.1.0 için Açık Jeo-Uzamsal Konsorsiyum (OGC) Basit Özelliklerine uygundur.

OGC belirtimleri hakkında daha fazla bilgi için aşağıdakilere bakın:

SQL Server, mevcut GML 3.1 standardının aşağıdaki şemada tanımlanan bir alt kümesini destekler: https://schemas.microsoft.com/sqlserver/profiles/gml/SpatialGML.xsd.

Yeni bir geometri örneği oluşturma veya inşa etme

Mevcut Örnekten Yeni geometri örneği oluşturma

Geometri veri türü, mevcut örnekleri temel alan yeni geometri örnekleri oluşturmak için kullanabileceğiniz çok sayıda yerleşik yöntem sağlar.

Bir geometri etrafında arabellek oluşturmak
STBuffer (geometri Veri Türü)

BufferWithTolerance (geometri veri tipi)

Geometrinin basitleştirilmiş bir sürümünü oluşturmak için
Azaltma (geometri Veri Türü)

Geometrinin dışbükey gövdesini oluşturmak için
STConvexHull (geometri Veri Türü)

İki geometrinin kesişiminden geometri oluşturmak için
STIntersection (geometri Veri Türü)

İki geometrinin birleşiminden geometri oluşturmak için
STUnion (Geometri veri türü)

Bir geometrinin başka bir geometriyle çakışmadığı noktalardan geometri oluşturmak için
STDifference (geometri Veri Türü)

İki geometrinin çakışmadığı noktalardan geometri oluşturmak için
STSymDifference (geometri Veri Türü)

Mevcut geometride bulunan rastgele bir Nokta örneği oluşturmak için
STPointOnSurface (geometri Veri Türü)

Well-Known Metin girişinden geometri örneği oluşturma

Geometri veri türü, Open Geospatial Consortium (OGC) WKT gösteriminden geometri oluşturan birkaç yerleşik yöntem sağlar. WKT standardı, geometri verilerinin metin biçiminde değişimini sağlayan bir metin dizesidir.

WKT girişinden herhangi bir tür geometri örneği oluşturmak için
STGeomFromText (geometri Veri Türü)

Ayrıştırma (geometri Veri Türü)

WKT girdisinden bir geometri Nokta örneği oluşturmak
STPointFromText (geometri Veri Türü)

WKT girişinden bir geometrik MultiPoint örneği oluşturmak için
STMPointFromText (geometri Veri Türü)

WKT girişinden bir LineString geometri örneği oluşturmak için
STLineFromText (geometri Veri Türü)

WKT girişinden bir geometri MultiLineString örneği oluşturmak için
STMLineFromText (geometri veri tipi)

WKT girişinden bir geometri Çokgen örneği oluşturmak
STPolyFromText (geometri Veri Türü)

WKT girişinden bir MultiPolygon geometri örneği oluşturmak için
STMPolyFromText (geometri Veri Türü)

WKT girişinden bir GeometryCollection geometri örneği oluşturmak için
STGeomCollFromText (geometri Veri Türü)

Well-Known Binary girişten geometri örneği oluşturma

WKB, Open Geospatial Consortium (OGC) tarafından belirtilen ve bir istemci uygulaması ile SQL veritabanı arasında geometri verilerinin değişimine izin veren ikili bir biçimdir. Aşağıdaki işlevler geometri oluşturmak için WKB girişini kabul eder:

WKB girişinden herhangi bir tür geometri örneği oluşturmak için
STGeomFromWKB (geometri Veri Türü)

WKB girişinden bir nokta geometri örneği oluşturmak için
STPointFromWKB (Geometri Veri Türü)

WKB girdisinden geometriye yönelik bir MultiPoint örneği oluşturmak
STMPointFromWKB (geometri Veri Türü)

WKB girişinden bir geometri LineString örneği oluşturmak için
STLineFromWKB (geometri Veri Türü)

WKB girişinden bir geometri MultiLineString örneği oluşturmak için
STMLineFromWKB (geometri Veri Türü)

WKB girişinden geometri Çokgen örneği oluşturmak için
STPolyFromWKB (Geometri Veri Türü)

WKB girişinden bir geometri MultiPolygon örneği oluşturmak
STMPolyFromWKB (geometri Veri Türü)

WKB girişinden bir GeometryCollection geometri örneği oluşturmak
STGeomCollFromWKB (geometri veri türü)

GML Metin Girişinden geometri örneği oluşturma

Geometri veri türü, geometrik nesnelerin XML gösterimi olan GML'den geometri örneği oluşturan bir yöntem sağlar. SQL Server, GML'nin bir alt kümesini destekler.

GML girişinden herhangi bir tür geometri örneği oluşturmak için
GeomFromGml (Geometri Veri Türü)

Geometri örneğinden Well-Known Text ve Well-Known Binary döndür.

Bir geometri örneğinin WKT veya WKB biçimini döndürmek için aşağıdaki yöntemleri kullanabilirsiniz:

Geometri örneğinin WKT gösterimini döndürmek için
STAsText (yerleşim Veri Türü)

ToString (geometri Veri Türü)

Z ve M değerleri dahil olmak üzere bir geometri örneğinin WKT gösterimini döndürmek
AsTextZM (geometri Veri Türü)

Geometri örneğinin WKB gösterimini döndürmek için
STAsBinary (geometri veri tipi)

Geometri örneğinin GML gösterimini döndürmek için
AsGml (geometri Veri Türü)

Geometri örneklerinin özelliklerini ve davranışlarını sorgulama

Tüm geometri örnekleri, SQL Server'ın sağladığı yöntemler aracılığıyla alınabilecek bir dizi özelliğe sahiptir. Aşağıdaki konular, geometri türlerinin özelliklerini ve davranışlarını ve her birini sorgulama yöntemlerini tanımlar.

Geçerlilik, örnek türü ve GeometryCollection bilgileri

Geometri örneği oluşturulduktan sonra, iyi biçimlendirilmiş olup olmadığını belirlemek, örnek türünü döndürmek veya bir koleksiyon örneğiyse belirli bir geometri örneği döndürmek için aşağıdaki yöntemleri kullanabilirsiniz.

Geometrinin örnek türünü döndürmek için
STGeometryType (geometri Veri Türü)

Geometrinin belirli bir örnek türü olup olmadığını belirlemek için
InstanceOf (geometri Veri Türü)

Bir geometri örneğinin örnek türü için iyi biçimlendirilmiş olup olmadığını belirlemek için
STIsValid (geometri Veri Türü)

Geometri örneğini örnek türüyle iyi biçimlendirilmiş bir geometri örneğine dönüştürmek için
MakeValid (geometri Veri Türü)

Geometri koleksiyonu örneğindeki geometri sayısını döndürmek için
STNumGeometries (geometri Veri Türü)

Geometri koleksiyonu örneğinde belirli bir geometriyi döndürmek için
STGeometryN (geometri Veri Türü) STGeometryN (geometri Veri türü)

Puan sayısı

Tüm boş geometri örnekleri noktalardan oluşur. Bu noktalar geometrilerin çizildiği düzlemin X ve Y koordinatlarını temsil eder. geometri , bir örneğin noktalarını sorgulamak için çok sayıda yerleşik yöntem sağlar.

Bir örneği oluşturan nokta sayısını döndürmek için
STNumPoints (geometri Veri Türü)

Örnekte belirli bir noktayı döndürmek için
STPointN (geometri Veri Türü)

Bir örneğin üzerinde bulunan rastgele bir nokta döndürmek için
STPointOnSurface (geometri Veri Türü)

Örneğin başlangıç noktasını döndürmek için
STStartPoint (geometri Veri Türü)

Örneğin uç noktasını döndürmek için
STEndpoint (geometri Veri Türü)

Bir Nokta örneğinin X koordinatını döndürmek için
STX (geometri Veri Türü)

Bir Nokta örneğinin Y koordinatını döndürmek için
STY (geometri Veri Türü)

Çokgen, CurvePolygon veya MultiPolygon örneğinin geometrik orta noktasını döndürmek için
STCentroid (geometri Veri Türü)

Dimension

Boş olmayan bir geometri örneği 0, 1 veya 2 boyutlu olabilir. Point ve MultiPoint gibi sıfır boyutlu geometrilerin uzunluğu veya alanı yoktur. LineString, CircularString, CompoundCurve ve MultiLineString gibi tek boyutlu nesnelerin uzunluğu vardır. Polygon, CurvePolygon ve MultiPolygon gibi iki boyutlu örneklerin alanı ve uzunluğu vardır. Boş örnekler -1 boyutunu, GeometryCollection ise içindekilerin türlerine bağlı bir alanı bildirir.

Örneğin boyutunu döndürmek için
STDimension (geometri Veri Türü)

Örneğin uzunluğunu döndürmek için
STLength (geometri veri türü)

Örneğin alanını döndürmek için
STArea (geometri Veri Türü)

Empty

Boşbir geometri örneğinin herhangi bir noktası yoktur. Boş LineString, CircularString, CompoundCurve ve MultiLineString örneklerinin uzunluğu sıfırdır. Boş Polygon, CurvePolygon ve MultiPolygon örneklerinin alanı 0'dır.

Örneğin boş olup olmadığını belirlemek için
STIsEmpty (geometri Veri Türü).

Simple

Örneğin geometrisininbasit olması için şu gereksinimlerin ikisini de karşılaması gerekir:

  • Örneğin her bir şekli, uç noktaları dışında kendi kendini kesiştirmemelidir.

  • Örneklemdeki iki figür, ikisinin de sınırları içinde olmayan bir noktada birbiriyle kesişemez.

Note

Boş geometriler her zaman basittir.

Örneğin basit olup olmadığını belirlemek için
STIsSimple (geometri veri tipi).

Sınır, iç ve dış

Geometri örneğinin kısmı, örneğin kapladığı alan, dış kısım ise onu kaplamamış alandır.

Sınır , OGC tarafından aşağıdaki gibi tanımlanır:

  • Point ve MultiPoint örneklerinin sınırı yoktur.

  • LineString ve MultiLineString sınırları, başlangıç noktaları ve bitiş noktaları tarafından oluşturulur ve bu da birkaç kez gerçekleşenleri kaldırır.

DECLARE @g geometry;  
SET @g = geometry::Parse('MULTILINESTRING((0 1, 0 0, 1 0, 0 1), (1 1, 1 0))');  
SELECT @g.STBoundary().ToString();  

Çokgen veya MultiPolygon örneğinin sınırı, halkalarının kümesidir.

DECLARE @g geometry;  
SET @g = geometry::Parse('POLYGON((0 0, 3 0, 3 3, 0 3, 0 0), (1 1, 1 2, 2 2, 2 1, 1 1))');  
SELECT @g.STBoundary().ToString();  

Örneğin sınırını döndürmek için
STBoundary (geometri Veri Türü)

Envelope

Sınırlayıcı kutu olarak da bilinen geometri örneğinin zarfı, örneğin minimum ve maksimum (X,Y) koordinatları tarafından oluşturulan eksene hizalanmış dikdörtgendir.

Bir örneğin zarfını geri getirmek için
STEnvelope (geometri Veri Türü)

Closure

Kapalıgeometri örneği, başlangıç noktaları ve bitiş noktaları aynı olan bir şekildir. Çokgen örnekler kapalı olarak kabul edilir. Nokta örnekleri tamamlanmamıştır.

Basit, kapalı bir LineString örneği bir halkadır.

Bir örneğin kapatılıp kapatılamadığını belirlemek için
STIsClosed (geometri Veri Türü)

Örneğin halka olup olmadığını belirlemek için
STIsRing (geometri Veri Türü)

Bir Çokgen örneğinin dış halkasını geri almak için
STExteriorRing (geometri Veri Türü)

Çokgendeki iç halkaların sayısını döndürmek için
STNumInteriorRing (geometri Veri Türü)

Çokgenin belirtilen iç halkasını döndürmek için
STInteriorRingN (geometri Veri Türü)

Uzamsal başvuru kimliği (SRID)

Uzamsal başvuru kimliği (SRID), geometri örneğinin hangi koordinat sisteminde temsilileceğini belirten bir tanımlayıcıdır. Farklı SRID'lere sahip iki örnek karşılaştırılamaz.

Bir örneğin SRID değerini ayarlamak veya döndürmek için
STSrid (geometri Veri Türü)

Note

Bu özellik değiştirilebilir.

Geometri örnekleri arasındaki ilişkileri belirleme

Geometri veri türü, ikigeometri örneği arasındaki ilişkileri belirlemek için kullanabileceğiniz birçok yerleşik yöntem sağlar.

İki örneğin aynı nokta kümesini oluşturp oluşturmadığını belirlemek için
STEquals (geometri Veri Türü)

İki örneğin kopuk olup olmadığını belirlemek için
STDisjoint (geometri Veri Türü)

İki örneğin kesişip kesişmediğini belirlemek için
STIntersects (geometri Veri Türü)

İki örneğin dokunup dokunmadığını belirlemek için
STTouches (geometri Veri Türü)

İki örneğin çakışarak çakışmadığını belirlemek için
STOverlaps (geometri Veri Türü)

İki örneğin çapraz olup olmadığını belirlemek için
STCrosses (geometri Veri Türü)

Bir örneğin başka bir örnek içinde olup olmadığını belirlemek için
STWithin (geometri veri türü)

Bir örneğin başka bir örnek içerip içermediğini belirlemek için
STContains (geometri Veri Türü)

Bir örneğin başka bir örnekle çakışarak çakışmadığını belirlemek için
STOverlaps (geometri Veri Türü)

İki örneğin uzamsal olarak ilişkili olup olmadığını belirlemek için
STRelate (geometri Veri Türü)

İki geometrideki noktalar arasındaki en kısa mesafeyi belirlemek için
STDistance (geometri Veri Türü)

geometri örnekleri Varsayılan olarak sıfır SRID

SQL Server'daki geometri örnekleri için varsayılan SRID değeridir 0. Geometri uzamsal verilerle, hesaplamalar yapmak için uzamsal örneğin belirli SRID'sine ihtiyaç duyulmaz; bu nedenle, örnekler tanımsız planar alanda bulunabilir. GEOMETRI veri türü yöntemlerinin hesaplamalarında tanımsız planar alanı göstermek için, SQL Server Veritabanı Altyapısı SRID 0kullanır.

Remarks

Geometri ve coğrafya türleri, Microsoft Fabric'teki SQL analiz uç noktasında veya Microsoft Fabric'teki Depo için tablo sütunu olarak kullanılamaz.

Examples

Aşağıdaki iki örnekte geometri verilerinin nasıl ekleneceği ve sorguleneceği gösterilmektedir.

Örnek A.

Bu örnek, kimlik sütunu ve bir geometry sütunu GeomCol1 içeren bir tablo oluşturur. Üçüncü sütun, sütunu Open Geospatial Consortium (OGC) Well-Known Text (WKT) gösterimine geometry dönüştürür STAsText() ve yöntemini kullanır. Ardından iki satır eklenir: bir satır bir LineString örneğini geometry, bir satır da bir Polygon örneği içerir.

IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL   
DROP TABLE dbo.SpatialTable;  
GO  

CREATE TABLE SpatialTable   
  ( id int IDENTITY (1,1),  
    GeomCol1 geometry,   
    GeomCol2 AS GeomCol1.STAsText() 
  );  
GO  

INSERT INTO SpatialTable (GeomCol1)  
VALUES (geometry::STGeomFromText('LINESTRING (100 100, 20 180, 180 180)', 0));  

INSERT INTO SpatialTable (GeomCol1)  
VALUES (geometry::STGeomFromText('POLYGON ((0 0, 150 0, 150 150, 0 150, 0 0))', 0));  
GO  

Örnek B.

Bu örnek, daha önce eklenen iki STIntersection() örneğinin kesiştiği noktaları döndürmek için geometry yöntemini kullanır.

DECLARE @geom1 geometry;  
DECLARE @geom2 geometry;  
DECLARE @result geometry;  

SELECT @geom1 = GeomCol1 FROM SpatialTable WHERE id = 1;  
SELECT @geom2 = GeomCol1 FROM SpatialTable WHERE id = 2;  
SELECT @result = @geom1.STIntersection(@geom2);  
SELECT @result.STAsText();