Bagikan melalui


Jenis Spasial - geometri (Transact-SQL)

Berlaku untuk: Database SQL ServerAzure SQL Database Azure SQL Managed Instance SQL di Microsoft Fabric

Jenis data spasial planar, geometri, diimplementasikan sebagai jenis data common language runtime (CLR) di 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 satu set ekstensi Microsoft ke standar tersebut.

Toleransi kesalahan untuk metode geometri dapat sebesar 1,0e-7 * tingkat. Sejauh ini mengacu pada perkiraan jarak maksimal antara 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.

Keterangan

Dalam database SQL di Microsoft Fabric, jenis data geografi dan geometri didukung tetapi tidak dapat dicerminkan ke Fabric OneLake.

Contoh

J. 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 metode .STAsText() 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 persimpangan dua instans geometri

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

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)