カテゴリ:

地理空間関数

ST_DIMENSION

GEOGRAPHY 型の値を指定すると、値の「ディメンション」を返します。GEOGRAPHY 値のディメンションは次のとおりです。

  • ポイント/MultiPoint :0。

  • 線/MultiLine :1。

  • ポリゴン/MultiPolygon :2。

  • GeometryCollection :コレクションのディメンションは、コレクション内のすべての値の最大ディメンションと同じです。たとえば、 GeometryCollection に点(ディメンション0)と線(ディメンション1)が含まれている場合、コレクションのディメンションは1です。

  • 機能:機能のディメンションは、機能内の地理空間オブジェクトのディメンションと同じです。

  • FeatureCollection :ルールは GeometryCollection の場合と同じです。

返される値(0、1、2)は、「ディメンション」という単語の一般的な意味に対応します。多角形は2次元オブジェクト、線は1次元オブジェクト、点はゼロ次元オブジェクトです。

構文

ST_DIMENSION( <geography_expression> )

引数

地理式

引数は GEOGRAPHY 型の式でなければなりません。

戻り値

INTEGER 型の値。

使用上の注意

  • 関数に NULL が渡されると、関数は NULL を返します。関数に、1つ以上の NULL 要素を含み、非 NULL 要素を含まない GeometryCollection が渡された場合、関数は0を返します。

    他の一部のシステムは、 NULL 入力に対して異なる値を返すことに注意してください。

次の例は、 ST_DIMENSION 関数を示しています。

create table geospatial_table_02 (g GEOGRAPHY);
insert into geospatial_table_02 values
    ('POINT(-122.35 37.55)'),
    ('MULTIPOINT((-122.35 37.55), (0.00 -90.0))'),
    ('LINESTRING(-124.20 42.00, -120.01 41.99)'),
    ('LINESTRING(-124.20 42.00, -120.01 41.99, -122.5 42.01)'),
    ('MULTILINESTRING((-124.20 42.00, -120.01 41.99, -122.5 42.01), (10.0 0.0, 20.0 10.0, 30.0 0.0))'),
    ('POLYGON((-124.20 42.00, -120.01 41.99, -121.1 42.01, -124.20 42.00))'),
    ('MULTIPOLYGON(((-124.20 42.00, -120.01 41.99, -121.1 42.01, -124.20 42.0)),   ((20.0 20.0, 40.0 20.0, 40.0 40.0, 20.0 40.0, 20.0 20.0)))')
    ;    ;
select st_dimension(g) as dimension, st_aswkt(g)
    from geospatial_table_02;
+-----------+----------------------------------------------------------------------------------------------------+
| DIMENSION | ST_ASWKT(G)                                                                                        |
|-----------+----------------------------------------------------------------------------------------------------|
|         0 | POINT(-122.35 37.55)                                                                               |
|         0 | MULTIPOINT((-122.35 37.55),(0 -90))                                                                |
|         1 | LINESTRING(-124.2 42,-120.01 41.99)                                                                |
|         1 | LINESTRING(-124.2 42,-120.01 41.99,-122.5 42.01)                                                   |
|         1 | MULTILINESTRING((-124.2 42,-120.01 41.99,-122.5 42.01),(10 0,20 10,30 0))                          |
|         2 | POLYGON((-124.2 42,-120.01 41.99,-121.1 42.01,-124.2 42))                                          |
|         2 | MULTIPOLYGON(((-124.2 42,-120.01 41.99,-121.1 42.01,-124.2 42)),((20 20,40 20,40 40,20 40,20 20))) |
+-----------+----------------------------------------------------------------------------------------------------+