All Products
Search
Document Center

AnalyticDB:Fungsi\ hubungan\ spasial

Last Updated:Mar 29, 2026

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:

FunctionRelationship tested
ST_ContainsSemua titik g2 berada di dalam g1, dan interior keduanya berbagi setidaknya satu titik
ST_Crossesg1 dan g2 berbagi sebagian, tetapi tidak semua, titik interior
ST_Disjointg1 dan g2 tidak berbagi titik apa pun
ST_Equalsg1 dan g2 menempati himpunan titik yang persis sama
ST_Intersectsg1 dan g2 berbagi setidaknya satu titik
ST_Overlapsg1 dan g2 memiliki dimensi yang sama dan saling tumpang tindih, tetapi tidak ada yang sepenuhnya memuat yang lainnya
ST_RelateHubungan spasial antara g1 dan g2 sesuai dengan pola yang ditentukan oleh string matriks Dimensionally Extended 9 Intersection Model (DE-9IM)
ST_Touchesg1 dan g2 berbagi setidaknya satu titik batas tetapi tidak berbagi titik interior
ST_WithinSemua 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:

ParameterTypeDescription
g1geometryGeometri pertama
g2geometryGeometri kedua
s1VARCHARString 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                                                                               |
+-------------------------------------------------------------------------------------------------+