Aracılığıyla paylaş


Uzamsal Türler - coğrafya

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

Coğrafya uzamsal veri türü olan coğrafya, SQL Server'da .NET ortak dil çalışma zamanı (CLR) veri türü olarak uygulanır. Bu tür, yuvarlak dünya koordinat sistemindeki verileri temsil eder. SQL Server coğrafya veri türü, GPS enlemi ve boylam koordinatları gibi üç noktalı (yuvarlak dünya) verileri depolar.

Note

Fabric SQL veritabanında Uzamsal Türler sütunlarının kullanılmasına izin verilir, ancak Fabric OneLake'e yansıtılmaz.

SQL Server , coğrafya uzamsal veri türü için bir dizi yöntemi destekler. Buna Open Geospatial Consortium (OGC) standardı tarafından tanımlanan coğrafya yöntemleri ve bu standart için bir dizi Microsoft uzantısı dahildir.

Coğrafya yöntemleri için hataya dayanıklılık 1,0e-7 * uzantılar kadar büyük olabilir. Kapsamlar , coğrafya nesnesinin noktaları arasındaki yaklaşık maksimum uzaklığı ifade eder.

Coğrafya Türünü Kaydetme

Coğrafya türü önceden tanımlanmıştır ve her veritabanında kullanılabilir. Coğrafya türünde tablo sütunları oluşturabilir ve coğrafya verileri üzerinde sistem tarafından sağlanan diğer türleri 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. Coğrafya verilerinin nasıl ekleneceğini ve sorguleneceğini gösterme

Aşağıdaki örneklerde coğrafya verilerinin nasıl ekleneceği ve sorguleneceği gösterilmektedir. İlk örnek, kimlik sütunu ve sütunu olan bir geographyGeogCol1tablo oluşturur. Üçüncü sütun, sütunu Open Geospatial Consortium (OGC) Well-Known Text (WKT) gösterimine geography dönüştürür STAsText() ve yöntemini kullanır. Ardından iki satır eklenir: bir satır bir LineString örneğini geography, 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),  
    GeogCol1 geography,   
    GeogCol2 AS GeogCol1.STAsText() );  
GO  
  
INSERT INTO SpatialTable (GeogCol1)  
VALUES (geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656 )', 4326));  
  
INSERT INTO SpatialTable (GeogCol1)  
VALUES (geography::STGeomFromText('POLYGON((-122.358 47.653 , -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326));  
GO  

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

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

DECLARE @geog1 geography;  
DECLARE @geog2 geography;  
DECLARE @result geography;  
  
SELECT @geog1 = GeogCol1 FROM SpatialTable WHERE id = 1;  
SELECT @geog2 = GeogCol1 FROM SpatialTable WHERE id = 2;  
SELECT @result = @geog1.STIntersection(@geog2);  
SELECT @result.STAsText();  

C. Hesaplanan sütunda coğrafya kullanma

Aşağıdaki örnek, coğrafya türü kullanarak kalıcı bir 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 geography,  
    deliveryArea as location.STBuffer(10) persisted  
);  

Ayrıca Bkz.

Uzamsal Verileri (SQL Server)