- Categorias:
ST_DIMENSION¶
Ao receber um valor do tipo GEOGRAPHY ou GEOMETRY, retorna a “dimensão” do valor. A dimensão de um valor GEOGRAPHY ou GEOMETRY é:
Tipo de objeto geoespacial |
Dimensão |
---|---|
Ponto / MultiPoint |
0 |
LineString / MultiLineString |
1 |
Polígono / MultiPolygon |
2 |
GeometryCollection |
A dimensão da coleção é igual à dimensão máxima de todos os valores dentro da coleção. Por exemplo, se um GeometryCollection contiver um ponto (dimensão 0) e um LineString (dimensão 1), a dimensão do GeometryCollection será 1. |
Recurso |
A dimensão do Recurso é a mesma que a dimensão do objeto geoespacial no Recurso. |
FeatureCollection |
A regra é a mesma para GeometryCollection. |
Os valores retornados (0, 1, 2) correspondem ao significado comum da palavra “dimensão”: um polígono é um objeto bidimensional, uma linha é um objeto unidimensional, e um ponto é um objeto dimensional zero.
Sintaxe¶
ST_DIMENSION( <geography_or_geometry_expression> )
Argumentos¶
geography_or_geometry_expression
O argumento deve ser uma expressão do tipo GEOGRAPHY ou GEOMETRY.
Retornos¶
Um valor do tipo INTEGER.
Notas de uso¶
Se a função for passada como NULL, a função retornará NULL.
Para objetos GEOGRAPHY:
Se a função for passada como um GeometryCollection contendo pelo menos um elemento NULL e nenhum elemento diferente de NULL, a função retornará 0.
Se a função for passada como um GeometryCollection contendo pelo menos um elemento NULL e pelo menos um elemento diferente de NULL, a função retornará a dimensão máxima dos elementos diferentes de NULL.
Observe que alguns outros sistemas retornam valores diferentes para as entradas NULL.
Exemplos¶
Exemplos GEOGRAPHY¶
O exemplo a seguir demonstra a função 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)))') ;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))) | +-----------+----------------------------------------------------------------------------------------------------+
Exemplos GEOMETRY¶
O exemplo a seguir demonstra a função 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;+-----------------+-------------------------------------------------------------------------------------------------+ | 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)) | +-----------------+-------------------------------------------------------------------------------------------------+