Jenis Spasial - geografi

Berlaku untuk:SQL Server Azure SQL DatabaseAzure SQL Managed Instance

Jenis data spasial geografi, geografi, diimplementasikan sebagai jenis data .NET common language runtime (CLR) dalam SQL Server. Jenis ini mewakili data dalam sistem koordinat bulat-bumi. Jenis data geografi SQL Server menyimpan data elipsoidal (bumi bulat), seperti koordinat lintang dan bujur GPS.

SQL Server mendukung serangkaian metode untuk jenis data spasial geografi. Ini termasuk metode pada geografi yang ditentukan oleh standar Open Geospatial Consortium (OGC) dan satu set ekstensi Microsoft ke standar tersebut.

Toleransi kesalahan untuk metode geografi dapat sebesar 1,0e-7 * jangkauan. Jangkauan mengacu pada perkiraan jarak maksimal antara titik-titik objek geografi.

Mendaftarkan Jenis geografi

Jenis geografi telah ditentukan sebelumnya dan tersedia di setiap database. Anda dapat membuat kolom tabel jenis geografi dan beroperasi pada data geografi dengan cara yang sama seperti Anda akan menggunakan jenis yang disediakan sistem lainnya. Dapat digunakan dalam kolom komputasi yang bertahan dan tidak bertahan.

Contoh

A. Memperlihatkan cara menambahkan dan mengkueri data geografi

Contoh berikut menunjukkan cara menambahkan dan mengkueri data geografi. Contoh pertama membuat tabel dengan kolom identitas dan geography kolom, GeogCol1. Kolom ketiga merender geography kolom ke dalam representasi Open Geospatial Consortium (OGC) Well-Known Text (WKT), dan menggunakan metode .STAsText() Dua baris kemudian disisipkan: satu baris berisi LineString instans geography, dan satu baris berisi Polygon instans.

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. Mengembalikan persimpangan dua instans geografi

Contoh berikut menggunakan STIntersection() metode untuk mengembalikan titik di mana dua instans yang disisipkan sebelumnya bersinggungan geography .

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. Menggunakan geografi dalam kolom komputasi

Contoh berikut membuat tabel dengan kolom komputasi yang bertahan menggunakan jenis geografi .

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

Lihat juga

Data Spasial (SQL Server)