Categories:

Geospatial Functions

ST_DIMENSION

Given a value of type GEOGRAPHY, return the “dimension” of the value. The dimension of a GEOGRAPHY value is:

Geospatial Object Type

Dimension

Point / MultiPoint

0

LineString / MultiLineString

1

Polygon / MultiPolygon

2

GeometryCollection

The dimension of the collection is equal to the maximum dimension of all the values inside the collection.

For example, if a GeometryCollection contains a Point (dimension 0) and a LineString (dimension 1), the dimension of the GeometryCollection is 1.

Feature

The dimension of the Feature is the same as the dimension of the geospatial object in the Feature.

FeatureCollection

The rule is the same as for GeometryCollection.

The returned values (0, 1, 2) correspond to the common meaning of the word “dimension”: a polygon is a two-dimensional object, a line is a one-dimensional object, and a point is a zero-dimensional object.

Syntax

ST_DIMENSION( <geography_expression> )

Arguments

geography_expression

The argument must be an expression of type GEOGRAPHY.

Returns

A value of type INTEGER.

Usage Notes

  • If the function is passed NULL, the function returns NULL.

  • If the function is passed a GeometryCollection containing at least one NULL element and no non-NULL elements, the function returns 0.

  • If the function is passed a GeometryCollection containing at least one NULL element and at least one non-NULL element, the function returns the maximum dimension of the non-NULL elements.

Note that some other systems return different values for NULL inputs.

Examples

The following example demonstrates the ST_DIMENSION function:

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))) |
+-----------+----------------------------------------------------------------------------------------------------+