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

ST_AREA_SQUARE_KM

설명​

지구 표면에서 닫힌 영역의 면적을 제곱킬로미터 단위로 계산합니다. 입력 매개변수는 지구 표면의 영역을 나타내는 기하 객체(예: GeoPolygon, GeoCircle, GeoMultiPolygon)입니다.

구문​

ST_AREA_SQUARE_KM( <geo>)

매개변수​

매개변수설명
<geo>지구 표면의 GeoPolygon, GeoCircle, GeoMultiPolygon 타입 기하 객체로, 닫힌 영역을 형성해야 합니다.

반환값​

영역의 면적을 제곱킬로미터 단위로 나타낸 DOUBLE 타입 값을 반환합니다.

ST_AREA_SQUARE_KM의 경계 조건별 동작:

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

예제​

작은 정사각형 영역(경도/위도 범위가 작음). 변의 길이가 약 1°인 정사각형 영역으로, 면적은 약 12,364제곱킬로미터입니다.

SELECT ST_Area_Square_Km(ST_Polygon("POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))"));
+----------------------------------------------------------------------+
| st_area_square_km(st_polygon('POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))')) |
+----------------------------------------------------------------------+
| 12364.036567076409 |
+----------------------------------------------------------------------+

더 큰 직사각형 영역

mysql> SELECT ST_Area_Square_Km(ST_Polygon("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))"));
+--------------------------------------------------------------------------+
| ST_Area_Square_Km(ST_Polygon("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))")) |
+--------------------------------------------------------------------------+
| 1233204.7035253085 |
+--------------------------------------------------------------------------+

곡선 경계를 가진 복잡한 다각형

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

경도 180° 선을 가로지르는 영역

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

남반구의 영역

mysql> SELECT ST_Area_Square_Km(ST_Polygon("POLYGON ((0 -10, 10 -10, 10 -20, 0 -20, 0 -10))"));
+----------------------------------------------------------------------------------+
| ST_Area_Square_Km(ST_Polygon("POLYGON ((0 -10, 10 -10, 10 -20, 0 -20, 0 -10))")) |
+----------------------------------------------------------------------------------+
| 1195196.6541230455 |
+----------------------------------------------------------------------------------+

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

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

유효 범위를 벗어나는 좌표

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

NULL 입력

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

원의 면적 계산

mysql> SELECT ST_Area_Square_Km(ST_Circle(0, 0, 1));
+---------------------------------------+
| ST_Area_Square_Km(ST_Circle(0, 0, 1)) |
+---------------------------------------+
| 3.141592653589787e-06 |
+---------------------------------------+

점 객체(면적 없음)

SELECT ST_Area_Square_Km(ST_Point(0, 1));
+-------------------------------------------+
| st_area_square_km(st_point(0.0, 1.0)) |
+-------------------------------------------+
| 0 |
+-------------------------------------------+

선 객체(면적 없음)

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