に最終更新
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 |
+-----------------------------------------------------------------+