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
)