Jenis Spasial - geografi
Berlaku untuk: Database SQL ServerAzure SQL Database Azure SQL Managed Instance SQL di Microsoft Fabric
Jenis data spasial geografi, geografi, diimplementasikan sebagai jenis data .NET common language runtime (CLR) di SQL Server. Jenis ini mewakili data dalam sistem koordinat bulat bumi. Jenis data geografi SQL Server menyimpan data elipsoidal (bumi bulat), seperti koordinat garis lintang dan bujur GPS.
Catatan
Dalam database Fabric SQL, kolom Jenis Spasial diizinkan untuk digunakan, tetapi tidak akan dicerminkan ke Fabric OneLake.
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 * tingkat. Tingkatannya 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.
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 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 dipertahankan 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
);