본문으로 건너뛰기
최종 수정: 에

ST_DISJOINT

설명​

두 기하 도형이 완전히 분리되어 있는지(즉, 공통점이 없는지) 판별합니다. 두 도형의 경계나 내부가 교차하지 않으면(공유하는 점이 없으면) 1을 반환하고, 공통점이 하나 이상 있으면(경계가 맞닿거나 내부가 겹치는 경우 포함) 0을 반환합니다.

참고

Apache Doris 3.0.6부터 지원됩니다.

구문​

ST_DISJOINT( <shape1>, <shape2> )

매개변수​

매개변수설명
<shape1>다른 도형과 분리되어 있는지 판별할 첫 번째 기하 도형입니다. Point, Line, Polygon,Circle 등의 타입을 지원합니다.
<shape2>다른 도형과 분리되어 있는지 판별할 두 번째 기하 도형입니다. Point, Line, Polygon,Circle 등의 타입을 지원합니다.

반환값​

1: shape1이 shape2와 완전히 분리되어 있습니다(공통점이 없음). 0: shape1이 shape2와 교차합니다(공통점이 하나 이상 존재함).

ST_DISJOINT의 특수한 경우는 다음과 같습니다.

  • 입력 매개변수 중 하나라도 NULL이면 NULL을 반환합니다.
  • 입력 기하 도형이 유효하지 않으면 NULL을 반환합니다.
  • 빈 기하 도형에 대해서는 1을 반환합니다(빈 도형은 점을 포함하지 않으므로 어떤 도형과도 공통점이 없습니다).

예제​

다각형과 내부의 점(교차하므로 0 반환)

SELECT ST_Disjoint(ST_Polygon("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))"), ST_Point(5, 5));
+------------------------------------------------------------------------------------+
| ST_Disjoint(ST_Polygon("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))"), ST_Point(5, 5)) |
+------------------------------------------------------------------------------------+
| 0 |
+------------------------------------------------------------------------------------+

다각형과 외부의 점(분리되어 있으므로 1 반환)

SELECT ST_Disjoint(ST_Polygon("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))"), ST_Point(50, 50));
+--------------------------------------------------------------------------------------+
| ST_Disjoint(ST_Polygon("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))"), ST_Point(50, 50)) |
+--------------------------------------------------------------------------------------+
| 1 |
+--------------------------------------------------------------------------------------+

점과 선이 서로 분리된 경우(점이 선 위에 있지 않음)

mysql> SELECT ST_Disjoint(ST_Linefromtext("LINESTRING (0 0, 10 10)"), ST_Point(1, 2));
+-------------------------------------------------------------------------+
| ST_Disjoint(ST_Linefromtext("LINESTRING (0 0, 10 10)"), ST_Point(1, 2)) |
+-------------------------------------------------------------------------+
| 1 |
+-------------------------------------------------------------------------+

점과 선이 교차하는 경우(점이 선 위에 있음)

mysql> SELECT ST_Disjoint(ST_Linefromtext("LINESTRING (0 0, 10 10)"), ST_Point(5, 5));
+-------------------------------------------------------------------------+
| ST_Disjoint(ST_Linefromtext("LINESTRING (0 0, 10 10)"), ST_Point(5, 5)) |
+-------------------------------------------------------------------------+
| 0 |
+-------------------------------------------------------------------------+

선이 교차하는 경우

mysql> SELECT ST_Disjoint(  ST_Linefromtext("LINESTRING (0 0, 10 10)"),  ST_Linefromtext("LINESTRING (0 10, 10 0)"));
+--------------------------------------------------------------------------------------------------------+
| ST_Disjoint( ST_Linefromtext("LINESTRING (0 0, 10 10)"), ST_Linefromtext("LINESTRING (0 10, 10 0)")) |
+--------------------------------------------------------------------------------------------------------+
| 0 |
+--------------------------------------------------------------------------------------------------------+

선이 서로 분리된 경우(평행하며 겹치지 않음)

mysql> SELECT ST_Disjoint(  ST_Linefromtext("LINESTRING (0 0, 10 0)"),  ST_Linefromtext("LINESTRING (0 1, 10 1)"));
+------------------------------------------------------------------------------------------------------+
| ST_Disjoint( ST_Linefromtext("LINESTRING (0 0, 10 0)"), ST_Linefromtext("LINESTRING (0 1, 10 1)")) |
+------------------------------------------------------------------------------------------------------+
| 1 |
+------------------------------------------------------------------------------------------------------+

다각형이 서로 분리된 경우(완전히 떨어져 있음)

mysql> SELECT ST_Disjoint(  ST_Polygon("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))"),  ST_Polygon("POLYGON ((20 20, 30 20, 30 30, 20 30, 20 20))"));
+------------------------------------------------------------------------------------------------------------------------------------+
| ST_Disjoint( ST_Polygon("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))"), ST_Polygon("POLYGON ((20 20, 30 20, 30 30, 20 30, 20 20))")) |
+------------------------------------------------------------------------------------------------------------------------------------+
| 1 |
+------------------------------------------------------------------------------------------------------------------------------------+

다각형이 교차하는 경우(일부가 겹침)


mysql> SELECT ST_Disjoint( ST_Polygon("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))"), ST_Polygon("POLYGON ((5 5, 15 5, 15 15, 5 15, 5 5))"));
+------------------------------------------------------------------------------------------------------------------------------+
| ST_Disjoint( ST_Polygon("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))"), ST_Polygon("POLYGON ((5 5, 15 5, 15 15, 5 15, 5 5))")) |
+------------------------------------------------------------------------------------------------------------------------------+
| 0 |
+------------------------------------------------------------------------------------------------------------------------------+

빈 기하 도형은 어떤 도형과도 공통점이 없음

mysql> SELECT ST_Disjoint(  ST_Polygon("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))"),  ST_GeometryFromText("POINT EMPTY"));
+-----------------------------------------------------------------------------------------------------------+
| ST_Disjoint( ST_Polygon("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))"), ST_GeometryFromText("POINT EMPTY")) |
+-----------------------------------------------------------------------------------------------------------+
| NULL |
+-----------------------------------------------------------------------------------------------------------+

유효하지 않은 기하 도형(자기 교차 다각형)을 매개변수로 전달하는 경우

mysql> SELECT ST_Disjoint(  ST_Polygon("POLYGON ((0 0, 1 1, 0 1, 1 0, 0 0))"),  ST_Point(0.5, 0.5));
+---------------------------------------------------------------------------------------+
| ST_Disjoint( ST_Polygon("POLYGON ((0 0, 1 1, 0 1, 1 0, 0 0))"), ST_Point(0.5, 0.5)) |
+---------------------------------------------------------------------------------------+
| NULL |
+---------------------------------------------------------------------------------------+

NULL 매개변수는 NULL 반환


mysql> SELECT ST_Disjoint(ST_Point(0,0), NULL);
+----------------------------------+
| ST_Disjoint(ST_Point(0,0), NULL) |
+----------------------------------+
| NULL |
+----------------------------------+

원과 다각형이 교차하는 경우

mysql> SELECT ST_Disjoint(  ST_Polygon("POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0))"),  ST_Circle(5, 2.5, 2000));
+--------------------------------------------------------------------------------------------+
| ST_Disjoint( ST_Polygon("POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0))"), ST_Circle(5, 2.5, 2000)) |
+--------------------------------------------------------------------------------------------+
| 0 |
+--------------------------------------------------------------------------------------------+

원과 다각형이 서로 분리된 경우

mysql> SELECT ST_Disjoint(  ST_Polygon("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))"),  ST_Circle(20, 5, 5));
+--------------------------------------------------------------------------------------------+
| ST_Disjoint( ST_Polygon("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))"), ST_Circle(20, 5, 5)) |
+--------------------------------------------------------------------------------------------+
| 1 |
+--------------------------------------------------------------------------------------------+