Jenis Spasial - geometri (Transact-SQL)

Berlaku untuk:Database SQL Server Azure SQL Azure SQL Managed Instance

Jenis data spasial planar, geometri, diimplementasikan sebagai jenis data runtime bahasa umum (CLR) dalam SQL Server. Jenis ini mewakili data dalam sistem koordinat Euclidean (datar).

SQL Server mendukung serangkaian metode untuk jenis data spasial geometri. Metode ini mencakup metode pada geometri yang ditentukan oleh standar Open Geospatial Consortium (OGC) dan serangkaian ekstensi Microsoft ke standar tersebut.

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

Mendaftarkan Jenis geometri

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

Contoh

A. Memperlihatkan cara menambahkan dan mengkueri data geometri

Dua contoh berikut menunjukkan cara menambahkan dan mengkueri data geometri. Contoh pertama membuat tabel dengan kolom identitas dan geometry kolom, GeomCol1. Kolom ketiga merender geometry kolom ke dalam representasi Open Geospatial Consortium (OGC) Well-Known Text (WKT), dan menggunakan STAsText() metode . Dua baris kemudian disisipkan: satu baris berisi LineString instans geometry, 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),  
    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. Mengembalikan irisan dua instans geometri

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

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

Contoh berikut membuat tabel dengan kolom komputasi yang dipertahankan menggunakan jenis geometri .

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  
)  

Lihat juga

Data Spasial (SQL Server)