Fungsi operasi menghitung hubungan spasial dan transformasi pada nilai GEOMETRY. Semua fungsi yang mengembalikan GEOMETRY menghasilkan output biner—bungkus hasilnya dalam ST_AsText() untuk mendapatkan Well-Known Text (WKT) yang dapat dibaca.
| Function | Description |
|---|---|
ST_Intersection(g1, g2) | Mengembalikan irisan geometris antara g1 dan g2 |
ST_Envelope(g) | Mengembalikan persegi panjang pembatas minimum dari suatu geometri |
ST_Union(g1, g2) | Mengembalikan gabungan himpunan titik dari dua geometri |
geometry_union(array[g1, g2, ...]) | Mengembalikan gabungan himpunan titik dari array geometri |
ST_Boundary(g) | Mengembalikan batas suatu geometri sebagai geometri baru |
ST_EnvelopeAsPts(g) | Mengembalikan titik pojok kiri-bawah dan kanan-atas dari persegi panjang pembatas |
ST_Difference(g1, g2) | Mengembalikan bagian dari g1 yang tidak beririsan dengan g2 |
ST_ExteriorRing(g1) | Mengembalikan cincin luar poligon sebagai linestring |
ST_SymDifference(g1, g2) | Mengembalikan bagian dari g1 dan g2 yang tidak saling beririsan |
ST_Intersection
ST_Intersection(g1, g2)Mengembalikan geometri yang merepresentasikan irisan antara g1 dan g2.
Tipe kembalian: GEOMETRY
Contoh:
Menjalankan SELECT ST_Intersection(...) secara langsung menghasilkan output biner. Gunakan ST_AsText() untuk mengonversinya menjadi teks yang dapat dibaca:
SELECT ST_AsText(ST_Intersection(ST_GeometryFromText('MULTIPOINT (50 100, 50 200)'), ST_GeometryFromText('Point (50 100)')));Hasil:
+-----------------------------------------------------------------------------------------------------------------------+
| ST_AsText(ST_Intersection(ST_GeometryFromText('MULTIPOINT (50 100, 50 200)'), ST_GeometryFromText('Point (50 100)'))) |
+-----------------------------------------------------------------------------------------------------------------------+
| POINT (50 100) |Fungsi terkait: ST_Union, ST_Difference, ST_SymDifference, ST_AsText
ST_Envelope
ST_Envelope(g)Mengembalikan representasi biner dari persegi panjang pembatas minimum (envelope) yang melingkupi geometri input.
Tipe input yang didukung: LINE, POLYGON, MULTILINE, MULTIPOLYGON
Input POINT tidak didukung.
Tipe kembalian: GEOMETRY
Contoh 1 — Envelope dari LINESTRING:
SELECT ST_AsText(ST_Envelope(ST_GeometryFromText('LINESTRING (1 1, 2 2, 1 3)')));Hasil:
+---------------------------------------------------------------------------------+
| ST_AsText(ST_Envelope(ST_GeometryFromText('LINESTRING (1 1, 2 2, 1 3)'))) |
+---------------------------------------------------------------------------------+
| POLYGON ((1 1, 2 1, 2 3, 1 3, 1 1)) |Contoh 2 — Envelope dari MULTIPOINT:
SELECT ST_AsText(ST_Envelope(ST_GeometryFromText('MULTIPOINT (1 2, 2 4, 3 6, 4 8)')));Hasil:
+-------------------------------------------------------------------------------+
| ST_AsText(ST_Envelope(ST_GeometryFromText('MULTIPOINT (1 2, 2 4, 3 6, 4 8)'))) |
+-------------------------------------------------------------------------------+
| POLYGON ((1 2, 4 2, 4 8, 1 8, 1 2)) |Fungsi terkait: ST_EnvelopeAsPts, ST_Boundary
ST_Union
ST_Union(g1, g2)Mengembalikan geometri yang merepresentasikan gabungan himpunan titik dari g1 dan g2.
Tipe kembalian: INT
Untuk menghitung gabungan array geometri, gunakan geometry_union.Contoh:
SELECT ST_ASText(ST_Union(ST_GeometryFromText('MULTIPOLYGON (((1 1, 3 1, 3 3, 1 3, 1 1)))'), ST_GeometryFromText('MULTIPOLYGON (((2 2, 4 2, 4 4, 2 4, 2 2)))')));Hasil:
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ST_ASText(ST_Union(ST_GeometryFromText('MULTIPOLYGON (((1 1, 3 1, 3 3, 1 3, 1 1)))'), ST_GeometryFromText('MULTIPOLYGON (((2 2, 4 2, 4 4, 2 4, 2 2)))'))) |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| POLYGON ((1 1, 3 1, 3 2, 4 2, 4 4, 2 4, 2 3, 1 3, 1 1)) |Fungsi terkait: geometry_union, ST_Intersection, ST_Difference, ST_SymDifference
geometry_union
geometry_union(array[g1, g2, ...])Mengembalikan geometri yang merepresentasikan gabungan himpunan titik dari array geometri.
Tipe kembalian: GEOMETRY
Untuk menghitung gabungan tepat dua geometri, gunakan ST_Union.Contoh:
SELECT ST_AsText(geometry_union(ARRAY[ST_Point(61.56, -158.54), ST_Point(61.56, -158.55)]));Hasil:
+------------------------------------------------------------------------------------------------+
| ST_AsText(geometry_union(ARRAY[ST_Point(61.56, -158.54), ST_Point(61.56, -158.55)])) |
+------------------------------------------------------------------------------------------------+
| MULTIPOINT ((61.56 -158.55), (61.56 -158.54)) |Fungsi terkait: ST_Union
ST_Boundary
ST_Boundary(g)Mengembalikan batas geometri input sebagai geometri baru.
Tipe kembalian: GEOMETRY
Contoh:
SELECT ST_AsText(ST_Boundary(ST_GeometryFromText('LINESTRING (8 4, 5 7)')));Hasil:
+----------------------------------------------------------------------------+
| ST_AsText(ST_Boundary(ST_GeometryFromText('LINESTRING (8 4, 5 7)'))) |
+----------------------------------------------------------------------------+
| MULTIPOINT ((8 4), (5 7)) |Fungsi terkait: ST_Envelope, ST_ExteriorRing
ST_EnvelopeAsPts
ST_EnvelopeAsPts(g)Mengembalikan array dua nilai POINT yang merepresentasikan titik pojok kiri bawah dan kanan atas dari persegi panjang pembatas. Mengembalikan null jika geometri input kosong.
Tipe kembalian: Array[Geometry]
Contoh — geometri kosong mengembalikan null:
SELECT ST_EnvelopeAsPts(ST_GeometryFromText('LINESTRING EMPTY'));Hasil:
+-----------------------------------------------------------------+
| ST_EnvelopeAsPts(ST_GeometryFromText('LINESTRING EMPTY')) |
+-----------------------------------------------------------------+
| null |Fungsi terkait: ST_Envelope
ST_Difference
ST_Difference(g1, g2)Mengembalikan bagian dari g1 yang tidak beririsan dengan g2.
Tipe kembalian: GEOMETRY
Urutan parameter penting. ST_Difference(A, B) selalu mengembalikan bagian dari A, bukan B. Ini satu-satunya fungsi operasi di mana menukar argumen menghasilkan hasil yang berbeda.Contoh:
SELECT ST_AsText(ST_Difference(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)')));Hasil:
+---------------------------------------------------------------------------------------------------------------+
| ST_AsText(ST_Difference(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)'))) |
+---------------------------------------------------------------------------------------------------------------+
| POINT (50 100) |Hasilnya adalah POINT (50 100) lengkap karena kedua titik tersebut saling lepas—tidak ada yang dikurangi.
Fungsi terkait: ST_Intersection, ST_SymDifference, ST_Union
ST_ExteriorRing
ST_ExteriorRing(g1)Mengembalikan cincin luar poligon sebagai LINESTRING.
Tipe kembalian: GEOMETRY
Contoh:
SELECT ST_AsText(ST_ExteriorRing(ST_GeometryFromText('POLYGON ((1 1, 1 4, 4 1))')));Hasil:
+------------------------------------------------------------------------------------+
| ST_AsText(ST_ExteriorRing(ST_GeometryFromText('POLYGON ((1 1, 1 4, 4 1))'))) |
+------------------------------------------------------------------------------------+
| LINESTRING (1 1, 4 1, 1 4, 1 1) |Fungsi terkait: ST_Boundary
ST_SymDifference
ST_SymDifference(g1, g2)Mengembalikan bagian dari g1 dan g2 yang tidak saling beririsan.
Tipe kembalian: GEOMETRY
Contoh:
SELECT ST_AsText(ST_SymDifference(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (50 150)')));Hasil:
+--------------------------------------------------------------------------------------------------------------+
| ST_AsText(ST_SymDifference(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (50 150)'))) |
+--------------------------------------------------------------------------------------------------------------+
| MULTIPOINT ((50 100), (50 150)) |Kedua titik tersebut saling lepas, sehingga selisih simetrisnya adalah gabungan kedua titik tersebut.
Fungsi terkait: ST_Difference, ST_Union, ST_Intersection
Catatan Penggunaan
Output biner: Semua fungsi yang mengembalikan GEOMETRY menghasilkan output biner saat digunakan dalam
SELECTbiasa. Selalu bungkus pemanggilan fungsi denganST_AsText()untuk mendapatkan output WKT yang dapat dibaca.ST_Difference tidak simetris:
ST_Difference(A, B)selalu mengembalikan subset dari A. Menukar argumen menghasilkan hasil yang berbeda.ST_Envelope tidak mendukung input POINT. Memberikan geometri POINT ke
ST_Envelopetidak didukung.MULTILINE: AnalyticDB for MySQL menggunakan
MULTILINEsebagai tipe jalur multi-segmen. Tipe standar OGC yang setara adalahMULTILINESTRING.