Aracılığıyla paylaş


Coğrafya nesneleri 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ı

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

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.

Yeni coğrafya örneği oluşturma veya inşa etme

Mevcut Örnekten Yeni Coğrafya Örneği Oluşturma

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

Bir coğrafya etrafında arabellek oluşturmak için
STBuffer (coğrafya Veri Türü)

Bir coğrafya etrafında toleransa izin veren bir tampon oluşturmak için
BufferWithTolerance (coğrafya Veri Türü)

İki coğrafya örneğinin kesişiminden bir coğrafya oluşturmak için
STIntersection (coğrafya Veri Türü)

İki coğrafya örneğinin birleşiminden bir coğrafya oluşturmak için
STUnion (coğrafya Veri Türü)

Bir coğrafyanın başka bir coğrafyayla çakışmadığı noktalardan bir coğrafya oluşturmak için
STDifference (coğrafya Veri Türü)

Well-Known Metin Girişinden Coğrafya Örneği Oluşturma

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

WKT girişinden herhangi bir tür coğrafya örneği oluşturmak için
STGeomFromText (coğrafya veri türü)

Ayrıştırma (coğrafya veri türü)

WKT girişinden coğrafya Noktası örneği oluşturmak için
STPointFromText (coğrafya Veri Türü)

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

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

WKT girişinden coğrafya MultiLineString örneği oluşturmak için
STMLineFromText (coğrafya Veri Türü)

WKT girişinden coğrafya Çokgen örneği oluşturmak için
STPolyFromText (coğrafya Veri Türü)

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

WKT girişi kullanılarak bir coğrafya GeometryCollection örneği inşa etmek
STGeomCollFromText (coğrafya Veri Türü)

Well-Known İkili Girişten Coğrafya Örneği Oluşturma

WKB, OGC tarafından belirtilen ve Coğrafya verilerinin bir istemci uygulaması ile SQL veritabanı arasında değişimine izin veren ikili bir biçimdir. Aşağıdaki işlevler coğrafya örnekleri oluşturmak için WKB girişini kabul eder:

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

WKB girişinden coğrafya Noktası örneği oluşturmak için
STPointFromWKB (coğrafya Veri Türü)

WKB girişinden coğrafya MultiPoint örneği oluşturulması
STMPointFromWKB (coğrafya Veri Türü)

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

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

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

WKB girişinden coğrafya MultiPolygon örneği oluşturmak için
STMPolyFromWKB (coğrafya Veri Türü)

WKB girişinden coğrafya GeometryCollection örneği oluşturmak için
STGeomCollFromWKB (coğrafya Veri Türü) STGeomCollFromWKB (coğrafya Veri Türü)

GML metin girişinden coğrafya örneği oluşturma

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

Coğrafya İşaretleme Dili hakkında daha fazla bilgi için bkz. OGC Belirtimi: OGC Belirtimleri, Coğrafya İşaretleme Dili.

GML girişinden herhangi bir tür coğrafya örneği oluşturmak için
GeomFromGML (coğrafya Veri Türü)

Coğrafya örneğinden Well-Known Text ve Well-Known Binary döndürme

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

Coğrafya örneğinin WKT gösterimini döndürmek için
STAsText (coğrafya Veri Türü)

ToString (coğrafya Veri Türü)

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

Coğrafya örneğinin WKB gösterimini döndürmek için
STAsBinary (coğrafya Veri Türü)

Coğrafya örneğinin GML gösterimini döndürmek için
AsGml - coğrafya Veri Türü

Coğrafya örneklerinin özelliklerini ve davranışlarını sorgulama

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

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

Bir coğrafya örneği oluşturulduğunda, örnek türünü döndürmek için aşağıdaki yöntemleri kullanabilirsiniz veya bir GeometryCollection örneğiyse, belirli bir coğrafya örneğini döndürebilirsiniz.

Bir coğrafyanın örnek türünü döndürmek için
STGeometryType (coğrafya Veri Türü)

Coğrafyanın belirli bir örnek türü olup olmadığını belirlemek için
InstanceOf (coğrafya Veri Türü)

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

GeometryCollection örneğinde belirli bir coğrafyayı döndürmek için
STGeometryN (coğrafya Veri Türü) STGeometryN (coğrafya Veri Türü)

Puan sayısı

Var olmayan tüm coğrafya örnekleri noktalardan oluşur. Bu noktalar coğrafya örneklerinin çizildiği yerin enlem ve boylam koordinatlarını temsil eder. Veri türü coğrafyası , 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 (coğrafya Veri Türü)

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

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

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

Dimension

Belirsiz bir coğrafya örneği 0, 1 veya 2 boyutlu olabilir. Point ve MultiPoint gibi sıfır boyutlu coğrafya örneklerinin 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çeriğinin en büyük boyutunu bildirir.

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

Örneğin uzunluğunu döndürmek için
STLength (coğrafya Veri Türü)

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

Empty

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

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

Closure

Kapalıcoğrafya örneği, başlangıç noktaları ve bitiş noktaları aynı olan bir şekildir. Çokgen örnekler kapalı olarak kabul edilir. Nokta örnekleri kapatılmaz.

Halka basit, kapalı bir LineString örneğidir.

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

Çokgen örnekteki halka sayısını döndürmek için
NumRings (coğrafya Veri Türü)

Bir coğrafya örneğinin belirtilen halkasını döndürmek için
RingN (Coğrafya Veri Türü)

Uzamsal başvuru kimliği (SRID)

Uzamsal başvuru kimliği (SRID), coğrafya örneğinin hangi üç noktalı koordinat sisteminde temsil olduğunu belirten bir tanımlayıcıdır. Farklı SRID'lere sahip iki coğrafya örneği karşılaştırılamaz.

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

Bu özellik değiştirilebilir.

Coğrafya örnekleri arasındaki ilişkileri belirleme

Coğrafya veri türü, iki coğrafya ö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 kesiştiği noktayı veya noktaları belirlemek için
STIntersection (coğrafya Veri Türü)

İki coğrafya örneğindeki noktalar arasındaki en kısa mesafeyi belirlemek için
STDistance (geometri Veri Türü)

İki coğrafya örneği arasındaki nokta farkını belirlemek için
STDifference (coğrafya Veri Türü)

Başka bir örnekle karşılaştırıldığında bir coğrafya örneğinin simetrik farkını veya benzersiz noktalarını türetmek için
STSymDifference (coğrafya Veri Türü)

coğrafya örnekleri desteklenen SRID kullanmalıdır

SQL Server, EPSG standartlarına göre SRID'leri destekler. Hesaplamalar yapılırken veya coğrafya uzamsal verileriyle yöntemler kullanılırken coğrafya örnekleri için SQL Server tarafından desteklenen bir SRID kullanılmalıdır. SRID, sys.spatial_reference_systems katalog görünümünde görüntülenen SRID'lerden biriyle eşleşmelidir. Daha önce de belirtildiği gibi, coğrafya veri türünü kullanarak uzamsal verileriniz üzerinde hesaplamalar yaptığınızda, her üç noktalı virgüle belirli bir uzamsal başvuru tanımlayıcısı (SRID) atandığından, sonuçlarınız verilerinizin oluşturulmasında hangi elipsoidin kullanıldığına bağlıdır.

SQL Server, coğrafya örneklerinde yöntemler kullanılırken WGS 84 uzamsal başvuru sistemine eşlenen varsayılan 4326 SRID'sini kullanır. WGS 84 (veya SRID 4326) dışında bir uzamsal başvuru sisteminden veri kullanıyorsanız, coğrafya uzamsal verileriniz için belirli SRID'yi belirlemeniz gerekir.

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 örneklerde coğrafya verilerinin nasıl ekleneceği ve sorguleneceği gösterilmektedir.

Örnek A.

Bu örnek, kimlik sütunu ve bir geography sütunu GeogCol1 içeren bir tablo 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  

Örnek B.

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

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