Bagikan melalui


Membuat, Membuat, dan Mengkueri Instans geometri

Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance

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

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.

Jenis data geometri (planar) yang didukung oleh SQL Server sesuai dengan Fitur Sederhana Open Geospatial Consortium (OGC) untuk Spesifikasi SQL versi 1.1.0.

Untuk informasi selengkapnya tentang spesifikasi OGC, lihat yang berikut ini:

SQL Server mendukung subset standar GML 3.1 yang ada yang didefinisikan dalam skema berikut: https://schemas.microsoft.com/sqlserver/profiles/gml/SpatialGML.xsd.

Membuat atau membuat instans geometri baru

Membuat Instans geometri Baru dari Instans yang Sudah Ada

Jenis data geometri menyediakan banyak metode bawaan yang dapat Anda gunakan untuk membuat instans geometri baru berdasarkan instans yang ada.

Untuk membuat buffer di sekitar geometri
STBuffer (Tipe Data geometri)

BufferWithTolerance (Jenis Data geometri)

Untuk membuat versi geometri yang disederhanakan
Kurangi (Tipe Data geometri)

Untuk membuat lambung cembung geometri
STConvexHull (Tipe Data geometri)

Untuk membuat geometri dari persimpangan dua geometri
STIntersection (Jenis Data geometri)

Untuk membuat geometri dari penyatuan dua geometri
STUnion (Jenis Data geometri)

Untuk membuat geometri dari titik di mana satu geometri tidak tumpang tindih dengan geometri lainnya
STDifference (Jenis Data geometri)

Untuk membuat geometri dari titik di mana dua geometri tidak tumpang tindih
STSymDifference (Jenis Data geometri)

Untuk membuat instans Titik arbitrer yang terletak pada geometri yang ada
STPointOnSurface (Jenis Data geometri)

Membuat Instans geometri dari Input Teks Terkenal

Jenis data geometri menyediakan beberapa metode bawaan yang menghasilkan geometri dari representasi WKT Open Geospatial Consortium (OGC). Standar WKT adalah string teks yang memungkinkan data geometri ditukar dalam bentuk tekstual.

Untuk membangun semua jenis instans geometri dari input WKT
STGeomFromText (Tipe Data geometri)

Uraikan (Tipe Data geometri)

Untuk membuat instans Titik geometri dari input WKT
STPointFromText (Tipe Data geometri)

Untuk membuat instans MultiPoint geometri dari input WKT
STMPointFromText (Tipe Data geometri)

Untuk membuat instans LineString geometri dari input WKT
STLineFromText (Tipe Data geometri)

Untuk membuat instans MultiLineString geometri dari input WKT
STMLineFromText (Jenis Data geometri)

Untuk membuat instans Poligon geometri dari input WKT
STPolyFromText (Jenis Data geometri)

Untuk membuat instans MultiPolygon geometri dari input WKT
STMPolyFromText (Jenis Data geometri)

Untuk membuat instans Geometri GeometryCollection dari input WKT
STGeomCollFromText (Tipe Data geometri)

Membuat Instans geometri dari Input Biner Terkenal

WKB adalah format biner yang ditentukan oleh Open Geospatial Consortium (OGC) yang mengizinkan data geometri ditukar antara aplikasi klien dan database SQL. Fungsi berikut menerima input WKB untuk membangun geometri:

Untuk membangun semua jenis instans geometri dari input WKB
STGeomFromWKB (Jenis Data geometri)

Untuk membuat instans Titik geometri dari input WKB
STPointFromWKB (Jenis Data geometri)

Untuk membuat instans MultiPoint geometri dari input WKB
STMPointFromWKB (Jenis Data geometri)

Untuk membuat instans LineString geometri dari input WKB
STLineFromWKB (Jenis Data geometri)

Untuk membuat instans MultiLineString geometri dari input WKB
STMLineFromWKB (Jenis Data geometri)

Untuk membuat instans Poligon geometri dari input WKB
STPolyFromWKB (Jenis Data geometri)

Untuk membuat instans MultiPolygon geometri dari input WKB
STMPolyFromWKB (Jenis Data geometri)

Untuk membuat instans Geometri GeometryCollection dari input WKB
STGeomCollFromWKB (Tipe Data geometri)

Membuat Instans geometri dari Input Teks GML

Jenis data geometri menyediakan metode yang menghasilkan instans geometri dari GML, representasi XML objek geometri. SQL Server mendukung subset GML.

Untuk membuat semua jenis instans geometri dari input GML
GeomFromGml (Tipe Data geometri)

Mengembalikan Teks Terkenal dan Biner Terkenal dari Instans geometri

Anda dapat menggunakan metode berikut untuk mengembalikan format WKT atau WKB dari instans geometri :

Untuk mengembalikan representasi WKT dari instans geometri
STAsText (Tipe Data geometri)

ToString (Tipe Data geometri)

Untuk mengembalikan representasi WKT dari instans geometri termasuk nilai Z dan M apa pun
AsTextZM (Tipe Data geometri)

Untuk mengembalikan representasi WKB dari instans geometri
STAsBinary (Tipe Data geometri)

Untuk mengembalikan representasi GML dari instans geometri
AsGml (Tipe Data geometri)

Mengkueri Properti dan Perilaku Instans Geometri

Semua instans geometri memiliki sejumlah properti yang dapat diambil melalui metode yang disediakan SQL Server. Topik berikut menentukan properti dan perilaku jenis geometri, dan metode untuk mengkueri masing-masing.

Validitas, Jenis Instans, dan Informasi GeometryCollection

Setelah instans geometri dibangun, Anda dapat menggunakan metode berikut untuk menentukan apakah instans tersebut terbentuk dengan baik, mengembalikan jenis instans, atau, jika itu adalah instans koleksi, mengembalikan instans geometri tertentu.

Untuk mengembalikan jenis instans geometri
STGeometryType (Jenis Data geometri)

Untuk menentukan apakah geometri adalah jenis instans tertentu
InstanceOf (Jenis Data geometri)

Untuk menentukan apakah instans geometri terbentuk dengan baik untuk jenis instansnya
STIsValid (Tipe Data geometri)

Untuk mengonversi instans geometri ke instans geometri yang terbentuk dengan baik dengan jenis instans
MakeValid (Tipe Data geometri)

Untuk mengembalikan jumlah geometri dalam instans pengumpulan geometri
STNumGeometries (Jenis Data geometri)

Untuk mengembalikan geometri tertentu dalam instans pengumpulan geometri
STGeometryN (Jenis Data geometri) STGeometryN (jenis Data geometri)

Jumlah Poin

Semua instans geometri yang tidak ada terdiri dari poin. Titik-titik ini mewakili koordinat X dan Y dari bidang tempat geometri digambar. geometri menyediakan banyak metode bawaan untuk mengkueri titik instans.

Untuk mengembalikan jumlah titik yang terdiri dari instans
STNumPoints (Tipe Data geometri)

Untuk mengembalikan titik tertentu dalam instans
STPointN

Untuk mengembalikan titik arbitrer yang terletak pada instans
STPointOnSurface

Untuk mengembalikan titik awal instans
STStartPoint

Untuk mengembalikan titik akhir instans
STEndpoint

Untuk mengembalikan koordinat X dari instans Titik
STX (Jenis Data geometri)

Untuk mengembalikan koordinat Y dari instans Point
STY

Untuk mengembalikan titik pusat geometrik instans Polygon, CurvePolygon, atau MultiPolygon
STCentroid

Dimensi

Instans geometri yang tidak ada bisa 0, 1-, atau 2 dimensi. Geometri nol dimensi, seperti Titik dan MultiPoint, tidak memiliki panjang atau area. Objek satu dimensi, seperti LineString, CircularString, CompoundCurve, dan MultiLineString, memiliki panjang. Instans dua dimensi, seperti Polygon, CurvePolygon, dan MultiPolygon, memiliki area dan panjang. Instans kosong akan melaporkan dimensi -1, dan GeometryCollection akan melaporkan area tergantung pada jenis kontennya.

Untuk mengembalikan dimensi instans
STDimension

Untuk mengembalikan panjang instans
STLength

Untuk mengembalikan area instans
STArea

Kosong

Instans geometri kosongtidak memiliki titik apa pun. Panjang instans LineString, CircularString, CompoundCurve, dan MultiLineString kosong adalah nol. Area instans Polygon, CurvePolygon, dan MultiPolygon kosong adalah 0.

Untuk menentukan apakah instans kosong
STIsEmpty.

Sederhana

Agar geometri instans menjadi sederhana, itu harus memenuhi kedua persyaratan ini:

  • Setiap gambar instans tidak boleh bersinggungan dengan dirinya sendiri, kecuali di titik akhirnya.

  • Tidak ada dua angka instans yang dapat saling bersinggungan pada titik yang tidak berada di kedua batasnya.

Catatan

Geometri kosong selalu sederhana.

Untuk menentukan apakah instans sederhana
STIsSimple.

Batas, Interior, dan Eksterior

Interior instans geometri adalah ruang yang ditempati oleh instans, dan eksterior adalah ruang yang tidak menempatinya.

Batas didefinisikan oleh OGC sebagai berikut:

  • Instans Titik dan MultiPoint tidak memiliki batas.

  • Batas LineString dan MultiLineString dibentuk oleh titik awal dan titik akhir, menghapus batas yang terjadi bahkan berkali-kali.

DECLARE @g geometry;  
SET @g = geometry::Parse('MULTILINESTRING((0 1, 0 0, 1 0, 0 1), (1 1, 1 0))');  
SELECT @g.STBoundary().ToString();  

Batas instans Polygon atau MultiPolygon adalah set cincinnya.

DECLARE @g geometry;  
SET @g = geometry::Parse('POLYGON((0 0, 3 0, 3 3, 0 3, 0 0), (1 1, 1 2, 2 2, 2 1, 1 1))');  
SELECT @g.STBoundary().ToString();  

Untuk mengembalikan batas instans
Batas ST

Amplop

Amplop instans geometri, juga dikenal sebagai kotak pembatas, adalah persegi panjang sejajar sumbu yang dibentuk oleh koordinat minimum dan maksimum (X,Y) instans.

Untuk mengembalikan amplop instans
STEnvelope

Penutupan

Instans geometri tertutupadalah gambar yang titik awal dan titik akhirnya sama. Instans poligon dianggap tertutup. Instans titik tidak ditutup.

Cincin adalah instans LineString yang sederhana dan tertutup.

Untuk menentukan apakah instans ditutup
STIsClosed

Untuk menentukan apakah instans adalah cincin
STIsRing

Untuk mengembalikan cincin eksterior instans Polygon
STExteriorRing

Untuk mengembalikan jumlah cincin interior dalam Poligon
STNumInteriorRing

Untuk mengembalikan cincin interior poligon tertentu
STInteriorRingN

ID Referensi Spasial (SRID)

ID referensi spasial (SRID) adalah pengidentifikasi yang menentukan sistem koordinat mana instans geometri diwakili. Dua instans dengan SRID yang berbeda tidak dapat dibandingkan.

Untuk mengatur atau mengembalikan SRID instans
STSrid

Catatan

Properti ini dapat dimodifikasi.

Menentukan Hubungan antara Instans geometri

Jenis data geometri menyediakan banyak metode bawaan yang dapat Anda gunakan untuk menentukan hubungan antara dua instans geometri.

Untuk menentukan apakah dua instans terdiri dari kumpulan titik yang sama
STEquals

Untuk menentukan apakah dua instans putus-putus
STDisjoint

Untuk menentukan apakah dua instans bersinggungan
STIntersects

Untuk menentukan apakah dua instans menyentuh
STTouches

Untuk menentukan apakah dua instans tumpang tindih
STOverlaps

Untuk menentukan apakah dua instans melintas
STCrosses

Untuk menentukan apakah satu instans berada dalam instans lain
STWithin

Untuk menentukan apakah satu instans berisi instans lain
STContains

Untuk menentukan apakah satu instans tumpang tindih dengan instans lain
STOverlaps

Untuk menentukan apakah dua instans terkait spasial
STRelate

Untuk menentukan jarak terpendek antara titik dalam dua geometri
STDistance

Instans geometri Default ke Zero SRID

SRID default untuk instans geometri di SQL Server adalah 0. Dengan data spasial geometri , SRID spesifik instans spasial tidak diperlukan untuk melakukan perhitungan; dengan demikian, instans dapat berada di ruang planar yang tidak ditentukan. Untuk menunjukkan ruang planar yang tidak terdefinisi dalam perhitungan metode jenis data geometri , Mesin Database SQL Server menggunakan SRID 0.

Contoh

Dua contoh berikut menunjukkan cara menambahkan dan mengkueri data geometri.

Contoh A.

Contoh ini 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  

Contoh B.

Contoh ini 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();  

Lihat Juga

Data Spasial (SQL Server)