Bagikan melalui


Buat, Konstruksi, dan Kueri Instans Geometri

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

geometry Jenisnya telah ditentukan sebelumnya dan tersedia di setiap database. Anda dapat membuat kolom tabel jenis geometry dan beroperasi pada geometry data dengan cara yang sama seperti Anda akan menggunakan jenis CLR lainnya.

geometry Jenis data (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 membangun instans geometri baru

Membuat Instans geometri Baru dari Instans yang Sudah Ada

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

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

BufferWithTolerance (Tipe Data Geometri)

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

Untuk membuat bidang cembung dari sebuah geometri
STConvexHull (Tipe Data geometri)

Untuk membuat geometri dari persimpangan dua geometri
STIntersection (Tipe 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 (Tipe Data Geometri)

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

Membuat Instans geometri dari Input Teks Well-Known

Jenis geometry data 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 (Geometri Data Type)

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

Untuk membangun instance geometri LineString dari masukan WKT
STLineFromText (geometri Tipe Data)

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

Untuk membuat instance geometri Poligon dari input WKT
STPolyFromText (Tipe Data Geometri)

Untuk membangun instans geometri MultiPolygon dari input WKT
STMPolyFromText (Tipe Data Geometri)

Untuk membangun sebuah instance GeometryCollection dari masukan WKT
STGeomCollFromText (Tipe Data Geometri)

Membuat Instans geometri dari Input Biner Well-Known

WKB adalah format biner yang ditentukan oleh Open Geospatial Consortium (OGC) yang mengizinkan geometry data untuk 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 (Tipe Data Geometri)

Untuk membangun instance MultiPoint geometri dari masukan WKB
STMPointFromWKB (Jenis Data geometri)

Untuk membangun instance LineString dari geometri input WKB
STLineFromWKB (Jenis Data geometri)

Untuk membangun instans geometri MultiLineString dari input WKB
STMLineFromWKB (Tipe Data Geometri)

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

Untuk membuat instance geometri MultiPolygon dari input WKB
STMPolyFromWKB (Tipe Data Geometri)

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

Membuat Instans geometri dari Input Teks GML

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

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

Mengembalikan Teks Well-Known dan biner Well-Known dari Instans geometri

Anda dapat menggunakan metode berikut untuk mengembalikan instansi dalam format WKT atau WKB:

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
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 geometry instans 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 Koleksi Geometri

geometry Setelah instans dibuat, Anda dapat menggunakan metode berikut untuk menentukan apakah instans terbentuk dengan baik, mengembalikan jenis instans, atau, jika itu adalah instans koleksi, mengembalikan instans tertentugeometry.

Untuk mengembalikan jenis instans geometri
STGeometryType (Tipe Data Geometri)

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

Untuk menentukan apakah instans geometri terstruktur dengan baik sesuai dengan tipe 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 yang tidak kosong geometry terdiri dari poin. Titik-titik ini mewakili koordinat X dan Y dari bidang tempat geometri digambar. geometry menyediakan banyak metode bawaan untuk mengkueri titik instans.

Untuk mengembalikan jumlah titik yang mencakup sebuah instance
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
Tipe Data Geometri (STX)

Untuk mengembalikan koordinat Y dari instans Point
STY

Untuk menghasilkan titik tengah geometris dari instans Polygon, CurvePolygon, atau MultiPolygon
STCentroid

Dimensi

Instans yang tidak kosong geometry bisa berdimensi 0-, 1-, atau 2-. Zero-dimensional geometries, seperti Point dan MultiPoint, tidak memiliki ukuran panjang atau luas. Objek satu dimensi, seperti LineString, CircularString, CompoundCurve, dan MultiLineString, memiliki panjang. Instans dua dimensi, seperti Polygon, , CurvePolygondan MultiPolygon, memiliki area dan panjang. Instans kosong akan melaporkan dimensi -1, dan GeometryCollection akan melaporkan area tergantung pada jenis kontennya.

Untuk menentukan dimensi sebuah instans
STDimension

Untuk mengembalikan panjang instans
STLength

Untuk mengembalikan nilai area dari sebuah instans
STArea

Kosong

Instans kosonggeometry tidak memiliki poin apa pun. Panjang instans kosong LineString, CircularString, CompoundCurve, dan MultiLineString adalah nol. Luas Polygon kosong, CurvePolygon, dan MultiPolygon instans adalah 0.

Untuk menentukan apakah instans kosong
STIsEmpty.

Sederhana

Agar suatu geometry dapat dianggap sederhana, harus memenuhi kedua persyaratan ini:

  • Setiap figur instance tidak boleh berpotongan dengan dirinya sendiri, kecuali di titik akhirnya.

  • Tidak ada dua figura dari instans yang dapat berpotongan pada titik yang tidak berada di kedua batasnya.

Nota

Geometri kosong selalu sederhana.

Untuk menentukan apakah instans sederhana
STIsSimple.

Batas, Interior, dan Eksterior

Interiorgeometry instance adalah ruang yang ditempati oleh instance tersebut, dan eksterior adalah ruang yang tidak ditempati oleh instance tersebut.

Batas didefinisikan oleh OGC sebagai berikut:

  • Point instance dan MultiPoint tidak memiliki batasan.

  • LineString dan MultiLineString batasan dibentuk oleh titik awal dan titik akhir, menghapus batas yang terjadi bahkan beberapa 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 dari instans Polygon atau MultiPolygon adalah kumpulan 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 dari sebuah geometry turunan, juga dikenal sebagai kotak pembatas, adalah persegi panjang yang sejajar dengan sumbu, dibentuk oleh koordinat minimum dan maksimum (X,Y) dari turunan tersebut.

Untuk mengembalikan amplop dari instans tersebut
STEnvelope

Penutupan

Instans tertutupgeometry adalah gambar yang titik awal dan titik akhirnya sama. Polygon instance dianggap telah selesai. Point instance belum ditutup.

Cincin adalah bentuk yang sederhana dan tertutup LineString.

Untuk menentukan apakah instans ditutup
STIsClosed

Untuk menentukan apakah suatu entitas adalah sebuah ring
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 di mana instans geometry diwakili. Dua entitas dengan SRID yang berbeda tidak dapat dipertandingkan.

Untuk mengatur atau mengembalikan SRID instans
STSrid

Properti ini dapat dimodifikasi.

Menentukan Hubungan antara Instans geometri

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

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

Untuk menentukan apakah dua instans saling terpisah
STDisjoint

Untuk menentukan apakah dua contoh bersinggungan
STIntersects

Untuk menentukan apakah dua instans bersentuhan
STTouches

Untuk menentukan apakah dua objek saling tumpang tindih
STOverlaps

Untuk menentukan apakah dua objek saling berpotongan
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

Instance geometri secara default ke SRID Nol

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

Contoh

Dua contoh berikut menunjukkan cara menambahkan dan mengkueri data geometri.

  • Contoh pertama membuat tabel dengan kolom identitas dan geometry kolom GeomCol1. Kolom ketiga mengubah kolom geometry ke dalam representasi Open Geospatial Consortium (OGC) Well-Known Text (WKT), dan menggunakan metode STAsText(). Dua baris kemudian disisipkan: satu baris berisi LineString instance dari geometry, dan satu baris berisi Polygon instance.

    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 kedua menggunakan metode STIntersection() untuk mengembalikan titik di mana dua instans geometry yang disisipkan sebelumnya saling 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();  
    

Lihat Juga

Data Spasial (SQL Server)