Bagikan melalui


Membuat, membuat, dan mengkueri instans geometri

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceTitik akhir analitik SQL di Microsoft FabricGudang di Microsoft FabricDatabase SQL di Microsoft Fabric

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 titik

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 (Tipe Data geometri)

Untuk mengembalikan titik arbitrer yang terletak pada instans
STPointOnSurface (Jenis Data geometri)

Untuk mengembalikan titik awal instans
STStartPoint (Tipe Data geometri)

Untuk mengembalikan titik akhir instans
STEndpoint (Tipe Data geometri)

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

Untuk mengembalikan koordinat Y dari instans Point
STY (Tipe Data geometri)

Untuk mengembalikan titik pusat geometrik instans Polygon, CurvePolygon, atau MultiPolygon
STCentroid (Tipe Data geometri)

Dimension

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 (Jenis Data geometri)

Untuk mengembalikan panjang instans
STLength (Jenis Data geometri)

Untuk mengembalikan area instans
STArea (Jenis Data geometri)

Empty

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 (Jenis Data geometri).

Simple

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.

Note

Geometri kosong selalu sederhana.

Untuk menentukan apakah instans sederhana
STIsSimple (Jenis Data geometri).

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
STBoundary (Tipe Data geometri)

Envelope

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 (Tipe Data geometri)

Closure

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 (Tipe Data geometri)

Untuk menentukan apakah instans adalah cincin
STIsRing (Tipe Data geometri)

Untuk mengembalikan cincin eksterior instans Polygon
STExteriorRing (Tipe Data geometri)

Untuk mengembalikan jumlah cincin interior dalam Poligon
STNumInteriorRing (Jenis Data geometri)

Untuk mengembalikan cincin interior poligon tertentu
STInteriorRingN (Jenis Data geometri)

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 (Tipe Data geometri)

Note

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 (Jenis Data geometri)

Untuk menentukan apakah dua instans putus-putus
STDisjoint (Tipe Data geometri)

Untuk menentukan apakah dua instans bersinggungan
STIntersects (Jenis Data geometri)

Untuk menentukan apakah dua instans menyentuh
STTouches (Tipe Data geometri)

Untuk menentukan apakah dua instans tumpang tindih
STOverlaps (Tipe Data geometri)

Untuk menentukan apakah dua instans melintas
STCrosses (Tipe Data geometri)

Untuk menentukan apakah satu instans berada dalam instans lain
STWithin (Jenis Data geometri)

Untuk menentukan apakah satu instans berisi instans lain
STContains (Tipe Data geometri)

Untuk menentukan apakah satu instans tumpang tindih dengan instans lain
STOverlaps (Tipe Data geometri)

Untuk menentukan apakah dua instans terkait spasial
STRelate (Tipe Data geometri)

Untuk menentukan jarak terpendek antara titik dalam dua geometri
STDistance (Jenis Data geometri)

instans geometri Default ke nol 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.

Remarks

Jenis geometri dan geografi tidak dapat digunakan sebagai kolom tabel di titik akhir analitik SQL di Microsoft Fabric atau Gudang di Microsoft Fabric.

Examples

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