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

ST_AREA_SQUARE_METERS

설명​

지구 표면의 닫힌 영역의 면적을 제곱미터 단위로 계산합니다. 입력 매개변수는 지구 표면의 영역을 나타내는 기하 객체(다각형, 원, 다면체 등)입니다.

닫히지 않은 기하 객체(점, 선분 등)의 면적은 0입니다. 유효하지 않은 기하 객체(자기 교차 다각형 등)의 경우 NULL을 반환합니다.

구문​

ST_AREA_SQUARE_METERS( <geo>)

매개변수​

매개변수설명
<geo>지구 표면의 기하 객체입니다. GeoPolygon, GeoCircle, GeoMultiPolygon과 같은 닫힌 영역 유형을 지원합니다.

반환 값​

영역의 면적을 제곱미터 단위로 반환하며, 반환 타입은 DOUBLE입니다.

ST_AREA_SQUARE_METERS는 다음과 같은 경계 조건을 처리합니다.

  • 입력 매개변수가 NULL이면 NULL을 반환합니다.
  • 입력이 닫히지 않은 기하 객체(점 GeoPoint, 선분 GeoLineString 등)이면 0을 반환합니다.
  • 입력 기하 객체가 유효하지 않으면(자기 교차 다각형, 닫히지 않은 다각형 등) NULL을 반환합니다.
  • 입력 좌표가 경도/위도 범위(경도 [-180, 180], 위도 [-90, 90])를 벗어나면 NULL을 반환합니다.

예제​

원형 영역(반지름이 1도인 원)

SELECT ST_Area_Square_Meters(ST_Circle(0, 0, 1));
+-------------------------------------------------+
| st_area_square_meters(st_circle(0.0, 0.0, 1.0)) |
+-------------------------------------------------+
| 3.1415926535897869 |
+-------------------------------------------------+

점 객체(면적 없음)

SELECT ST_Area_Square_Meters(ST_Point(0, 1));
+-------------------------------------------+
| st_area_square_meters(st_point(0.0, 1.0)) |
+-------------------------------------------+
| 0 |
+-------------------------------------------+

선분 객체(면적 없음)

SELECT ST_Area_Square_Meters(ST_LineFromText("LINESTRING (1 1, 2 2)"));
+-----------------------------------------------------------------+
| st_area_square_meters(st_linefromtext('LINESTRING (1 1, 2 2)')) |
+-----------------------------------------------------------------+
| 0 |
+-----------------------------------------------------------------+

단순한 정사각형 영역(좁은 경도/위도 범위)


mysql> SELECT ST_Area_Square_Meters(ST_Polygon("POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))"));
+--------------------------------------------------------------------------+
| ST_Area_Square_Meters(ST_Polygon("POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))")) |
+--------------------------------------------------------------------------+
| 12364036567.076408 |
+--------------------------------------------------------------------------+

복잡한 다각형 영역

mysql> SELECT ST_Area_Square_Meters(ST_Polygon("POLYGON ((0 0, 5 1, 10 0, 5 -1, 0 0))"));
+----------------------------------------------------------------------------+
| ST_Area_Square_Meters(ST_Polygon("POLYGON ((0 0, 5 1, 10 0, 5 -1, 0 0))")) |
+----------------------------------------------------------------------------+
| 123725166420.83101 |
+----------------------------------------------------------------------------+

경도 180°를 가로지르는 직사각형 영역


mysql> SELECT ST_Area_Square_Meters(ST_Polygon("POLYGON ((179 0, 180 0, 180 1, 179 1, 179 0))"));
+------------------------------------------------------------------------------------+
| ST_Area_Square_Meters(ST_Polygon("POLYGON ((179 0, 180 0, 180 1, 179 1, 179 0))")) |
+------------------------------------------------------------------------------------+
| 12364036567.07628 |
+------------------------------------------------------------------------------------+

남반구의 원형 영역

mysql> SELECT ST_Area_Square_Meters(ST_Circle(0, -30, 2));
+---------------------------------------------+
| ST_Area_Square_Meters(ST_Circle(0, -30, 2)) |
+---------------------------------------------+
| 12.566370614359073 |
+---------------------------------------------+

유효하지 않은 다각형(자기 교차)

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

닫히지 않은 다각형

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

범위를 벗어난 좌표

mysql>  SELECT ST_Area_Square_Meters(ST_Polygon("POLYGON ((0 0, 200 0, 200 1, 0 1, 0 0))"));
+------------------------------------------------------------------------------+
| ST_Area_Square_Meters(ST_Polygon("POLYGON ((0 0, 200 0, 200 1, 0 1, 0 0))")) |
+------------------------------------------------------------------------------+
| NULL |
+------------------------------------------------------------------------------+

NULL 입력

mysql> SELECT ST_Area_Square_Meters(NULL);
+-----------------------------+
| ST_Area_Square_Meters(NULL) |
+-----------------------------+
| NULL |
+-----------------------------+