Gunakan fungsi spasial untuk menguji hubungan topologis antara dua objek geometri. Setiap fungsi mengembalikan 1 jika hubungan yang ditentukan terpenuhi, dan 0 jika tidak.
Fungsi hubungan spasial berikut tersedia:
| Function | Relationship tested |
|---|---|
| ST_Contains | Semua titik g2 berada di dalam g1, dan interior keduanya berbagi setidaknya satu titik |
| ST_Crosses | g1 dan g2 berbagi sebagian, tetapi tidak semua, titik interior |
| ST_Disjoint | g1 dan g2 tidak berbagi titik apa pun |
| ST_Equals | g1 dan g2 menempati himpunan titik yang persis sama |
| ST_Intersects | g1 dan g2 berbagi setidaknya satu titik |
| ST_Overlaps | g1 dan g2 memiliki dimensi yang sama dan saling tumpang tindih, tetapi tidak ada yang sepenuhnya memuat yang lainnya |
| ST_Relate | Hubungan spasial antara g1 dan g2 sesuai dengan pola yang ditentukan oleh string matriks Dimensionally Extended 9 Intersection Model (DE-9IM) |
| ST_Touches | g1 dan g2 berbagi setidaknya satu titik batas tetapi tidak berbagi titik interior |
| ST_Within | Semua titik g1 berada di dalam g2, dan interior keduanya berbagi setidaknya satu titik (kebalikan dari ST_Contains) |
ST_Contains
ST_Contains(g1, g2)Mengembalikan 1 jika g1 sepenuhnya memuat g2—yaitu, semua titik g2 berada di dalam g1, dan interior g1 serta g2 berbagi setidaknya satu titik. Mengembalikan 0 jika tidak.
Batas g1 bukan bagian dari interiornya. Titik yang tepat berada pada batas g1 tidak dianggap termuat oleh g1.
Return type: INT
Relationship to ST_Within: ST_Contains(A, B) merupakan kebalikan dari ST_Within(B, A). Keduanya mengembalikan hasil yang sama.
Example:
SELECT ST_Contains(
ST_GeometryFromText('POLYGON ((1 1, 1 4, 4 4, 4 1))'),
ST_GeometryFromText('POINT (2 2)')
);Result:
+-----------------------------------------------------------------------------------------------------+
|ST_Contains(ST_GeometryFromText('POLYGON ((1 1, 1 4, 4 4, 4 1))'), ST_GeometryFromText('POINT (2 2)')) |
+-----------------------------------------------------------------------------------------------------+
| 1 |
+-----------------------------------------------------------------------------------------------------+ST_Crosses
ST_Crosses(g1, g2)Mengembalikan 1 jika g1 dan g2 saling bersilangan secara spasial—yaitu, keduanya berbagi sebagian titik interior tetapi tidak semuanya. Mengembalikan 0 jika tidak.
Return type: INT
Example:
SELECT ST_Crosses(
ST_GeometryFromText('POINT (20 20)'),
ST_GeometryFromText('POINT (25 25)')
);Result:
+----------------------------------------------------------------------------------------------+
|ST_Crosses(ST_GeometryFromText('POINT (20 20)'), ST_GeometryFromText('POINT (25 25)')) |
+----------------------------------------------------------------------------------------------+
| 0 |
+----------------------------------------------------------------------------------------------+ST_Disjoint
ST_Disjoint(g1, g2)Mengembalikan 1 jika g1 dan g2 saling lepas secara spasial—yaitu, keduanya tidak berbagi titik apa pun. Mengembalikan 0 jika tidak.
Return type: INT
Example:
SELECT ST_Disjoint(
ST_GeometryFromText('POINT (50 100)'),
ST_GeometryFromText('POINT (150 150)')
);Result:
+--------------------------------------------------------------------------------------------------+
|ST_Disjoint(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)')) |
+--------------------------------------------------------------------------------------------------+
| 1 |
+--------------------------------------------------------------------------------------------------+ST_Equals
ST_Equals(g1, g2)Mengembalikan 1 jika g1 dan g2 setara secara spasial—yaitu, keduanya menempati himpunan titik yang persis sama. Mengembalikan 0 jika tidak.
Return type: INT
Example:
SELECT ST_Equals(
ST_GeometryFromText('POINT (50 100)'),
ST_GeometryFromText('POINT (150 150)')
);Result:
+------------------------------------------------------------------------------------------------+
|ST_Equals(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)')) |
+------------------------------------------------------------------------------------------------+
| 0 |
+------------------------------------------------------------------------------------------------+ST_Intersects
ST_Intersects(g1, g2)Mengembalikan 1 jika g1 dan g2 saling berpotongan secara spasial—yaitu, keduanya berbagi setidaknya satu titik. Mengembalikan 0 jika tidak.
Return type: INT
Example:
SELECT ST_Intersects(
ST_GeometryFromText('POINT (50 100)'),
ST_GeometryFromText('POINT (150 150)')
);Result:
+----------------------------------------------------------------------------------------------------+
|ST_Intersects(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)')) |
+----------------------------------------------------------------------------------------------------+
| 0 |
+----------------------------------------------------------------------------------------------------+ST_Overlaps
ST_Overlaps(g1, g2)Mengembalikan 1 jika g1 dan g2 saling tumpang tindih secara spasial—yaitu, keduanya memiliki dimensi yang sama, berbagi sebagian titik, tetapi tidak ada yang sepenuhnya memuat yang lainnya. Mengembalikan 0 jika tidak.
Return type: INT
Example:
SELECT ST_Overlaps(
ST_GeometryFromText('POLYGON ((1 1, 1 4, 4 4, 4 1))'),
ST_GeometryFromText('POLYGON ((3 3, 3 5, 5 5, 5 3))')
);Result:
+---------------------------------------------------------------------------------------------------------------------------------+
|ST_Overlaps(ST_GeometryFromText('POLYGON ((1 1, 1 4, 4 4, 4 1))'), ST_GeometryFromText('POLYGON ((3 3, 3 5, 5 5, 5 3))')) |
+---------------------------------------------------------------------------------------------------------------------------------+
| 1 |
+---------------------------------------------------------------------------------------------------------------------------------+ST_Relate
ST_Relate(g1, g2, s1)Mengembalikan 1 jika hubungan spasial antara g1 dan g2 sesuai dengan pola yang ditentukan oleh string matriks DE-9IM s1. Mengembalikan 0 jika tidak.
Dimensionally Extended 9 Intersection Model (DE-9IM) menggambarkan hubungan antara dua geometri sebagai string 9 karakter yang menggunakan simbol F, 0, 1, 2, T, dan *. Gunakan ST_Relate ketika tidak ada fungsi bernama (seperti ST_Contains atau ST_Touches) yang mencakup hubungan spesifik yang ingin Anda uji.
Parameters:
| Parameter | Type | Description |
|---|---|---|
g1 | geometry | Geometri pertama |
g2 | geometry | Geometri kedua |
s1 | VARCHAR | String pola matriks DE-9IM (misalnya, 'T*****FF*') |
Return type: INT
Example:
SELECT ST_Relate(
ST_GeometryFromText('LINESTRING (0 0, 3 3)'),
ST_GeometryFromText('LINESTRING (1 1, 4 1)'),
'****T****'
);Result:
+--------------------------------------------------------------------------------------------------------------------------+
|ST_Relate(ST_GeometryFromText('LINESTRING (0 0, 3 3)'), ST_GeometryFromText('LINESTRING (1 1, 4 1)'), '****T****') |
+--------------------------------------------------------------------------------------------------------------------------+
| 0 |
+--------------------------------------------------------------------------------------------------------------------------+ST_Touches
ST_Touches(g1, g2)Mengembalikan 1 jika g1 dan g2 saling bersentuhan secara spasial—yaitu, keduanya berbagi setidaknya satu titik batas tetapi tidak berbagi titik interior. Mengembalikan 0 jika tidak.
Return type: INT
Example:
SELECT ST_Touches(
ST_GeometryFromText('POINT (50 100)'),
ST_GeometryFromText('POINT (150 150)')
);Result:
+-------------------------------------------------------------------------------------------------+
|ST_Touches(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)')) |
+-------------------------------------------------------------------------------------------------+
| 0 |
+-------------------------------------------------------------------------------------------------+ST_Within
ST_Within(g1, g2)Mengembalikan 1 jika g1 sepenuhnya berada di dalam g2—yaitu, semua titik g1 berada di dalam g2, dan interior g1 serta g2 berbagi setidaknya satu titik. Mengembalikan 0 jika tidak.
Jenis pengembalian: BOOLEAN
Relationship to ST_Contains: ST_Within(A, B) merupakan kebalikan dari ST_Contains(B, A). Keduanya mengembalikan hasil yang sama.
Example:
SELECT ST_Within(
ST_GeometryFromText('POINT (50 100)'),
ST_GeometryFromText('POINT (150 150)')
);Result:
+-------------------------------------------------------------------------------------------------+
|ST_Within(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)')) |
+-------------------------------------------------------------------------------------------------+
| 0 |
+-------------------------------------------------------------------------------------------------+