カテゴリ:

地理空間関数

ST_DIMENSION

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

地理空間オブジェクト型

ディメンション

Point / MultiPoint

0

LineString / MultiLineString

1

Polygon / MultiPolygon

2

GeometryCollection

コレクションのディメンションは、コレクション内にあるすべての値の最大ディメンションと同じです。

たとえば、 GeometryCollection に点(ディメンション0)と LineString (ディメンション1)が含まれている場合、 GeometryCollection のディメンションは1です。

機能

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

FeatureCollection

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

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

構文

ST_DIMENSION( <geography_or_geometry_expression> )
Copy

引数

geography_or_geometry_expression

引数は型 GEOGRAPHY または GEOMETRY の式にする必要があります。

戻り値

INTEGER 型の値。

使用上の注意

  • 関数に NULL が渡されると、関数は NULL を返します。

  • GEOGRAPHY オブジェクトで、

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

    • 最低1 つの NULL 要素と最低1つの非 NULL 要素を含む GeometryCollection が関数に渡される場合、関数は非 NULL 要素の最大ディメンションを返します。

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

GEOGRAPHY 例

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

create table geospatial_table_02 (id INTEGER, g GEOGRAPHY);
insert into geospatial_table_02 values
    (1, 'POINT(-122.35 37.55)'),
    (2, 'MULTIPOINT((-122.35 37.55), (0.00 -90.0))'),
    (3, 'LINESTRING(-124.20 42.00, -120.01 41.99)'),
    (4, 'LINESTRING(-124.20 42.00, -120.01 41.99, -122.5 42.01)'),
    (5, '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))'),
    (6, 'POLYGON((-124.20 42.00, -120.01 41.99, -121.1 42.01, -124.20 42.00))'),
    (7, '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)))')
    ;
Copy
select st_dimension(g) as dimension, st_aswkt(g)
    from geospatial_table_02
    order by dimension, id;
+-----------+----------------------------------------------------------------------------------------------------+
| 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))) |
+-----------+----------------------------------------------------------------------------------------------------+
Copy

GEOMETRY 例

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

CREATE OR REPLACE TABLE geometry_shapes (g GEOMETRY);
INSERT INTO geometry_shapes VALUES
    ('POINT(66 12)'),
    ('MULTIPOINT((45 21), (12 54))'),
    ('LINESTRING(40 60, 50 50, 60 40)'),
    ('MULTILINESTRING((1 1, 32 17), (33 12, 73 49, 87.1 6.1))'),
    ('POLYGON((17 17, 17 30, 30 30, 30 17, 17 17))'),
    ('MULTIPOLYGON(((-10 0,0 10,10 0,-10 0)),((-10 40,10 40,0 20,-10 40)))'),
    ('GEOMETRYCOLLECTION(POLYGON((-10 0,0 10,10 0,-10 0)),LINESTRING(40 60, 50 50, 60 40), POINT(99 11))')
    ;

SELECT ST_DIMENSION(g), ST_ASWKT(g) FROM geometry_shapes;
Copy
+-----------------+-------------------------------------------------------------------------------------------------+
| ST_DIMENSION(G) | ST_ASWKT(G)                                                                                     |
|-----------------+-------------------------------------------------------------------------------------------------|
|               0 | POINT(66 12)                                                                                    |
|               0 | MULTIPOINT((45 21),(12 54))                                                                     |
|               1 | LINESTRING(40 60,50 50,60 40)                                                                   |
|               1 | MULTILINESTRING((1 1,32 17),(33 12,73 49,87.1 6.1))                                             |
|               2 | POLYGON((17 17,17 30,30 30,30 17,17 17))                                                        |
|               2 | MULTIPOLYGON(((-10 0,0 10,10 0,-10 0)),((-10 40,10 40,0 20,-10 40)))                            |
|               2 | GEOMETRYCOLLECTION(POLYGON((-10 0,0 10,10 0,-10 0)),LINESTRING(40 60,50 50,60 40),POINT(99 11)) |
+-----------------+-------------------------------------------------------------------------------------------------+
Copy