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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk