Aracılığıyla paylaş


Uzamsal Türler - geometri (Transact-SQL)

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

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

SQL Server , geometri uzamsal veri türü için bir dizi yöntemi destekler. Bu yöntemler, Open Geospatial Consortium (OGC) standardı tarafından tanımlanan geometri yöntemlerini ve bu standart için bir dizi Microsoft uzantısını içerir.

Geometri yöntemleri için hata toleransı 1,0e-7 * uzantılar kadar büyük olabilir. Kapsamlar , geometri nesnesinin noktaları arasındaki yaklaşık maksimum uzaklığı ifade eder.

Geometri Türünü Kaydetme

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. Kalıcı ve kalıcı olmayan hesaplanmış sütunlarda kullanılabilir.

Remarks

Microsoft Fabric'teki SQL veritabanında coğrafya ve geometri veri türleri desteklenir ancak Fabric OneLake'e yansıtılamaz.

Examples

A. Geometri verilerinin nasıl ekleneceğini ve sorguleneceğini gösterme

Aşağıdaki iki örnekte geometri verilerinin nasıl ekleneceği ve sorguleneceği gösterilmektedir. İlk örnek, kimlik sütunu ve sütunu olan bir geometryGeomCol1tablo 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  

B. İki geometri örneğinin kesişimini döndürme

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

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

C. Hesaplanan sütunda geometri kullanma

Aşağıdaki örnek , geometri türü kullanarak kalıcı hesaplanan sütuna sahip bir tablo oluşturur.

IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL   
    DROP TABLE dbo.SpatialTable;  
GO  
  
CREATE TABLE SpatialTable  
(  
    locationId int IDENTITY(1,1),  
    location geometry,  
    deliveryArea as location.STBuffer(10) persisted  
)  

Ayrıca Bkz.

Uzamsal Verileri (SQL Server)