Categorias:

Funções geoespaciais

ST_ENVELOPE

Retorna a caixa delimitadora mínima (um “envelope” retangular) que contém um objeto especificado GEOGRAPHY ou GEOMETRY.

Sintaxe

ST_ENVELOPE( <geography_or_geometry_expression> )

Argumentos

geography_or_geometry_expression

O argumento deve ser do tipo GEOGRAPHY ou GEOMETRY.

Retornos

A função retorna um valor do tipo GEOGRAPHY ou GEOMETRY que representa a caixa delimitadora mínima em torno do objeto de entrada.

Notas de uso

  • Para objetos GEOGRAPHY:

    • Se geography_expression for um LineString que representa um arco de meridiano (um arco ao longo de uma linha de longitude), ST_ENVELOPE retornará que LineString.

    • Se geography_expression for um LineString que representa um arco em paralelo (um arco ao longo de uma linha de latitude) diferente do equador, ST_ENVELOPE retorna um polígono que representa a caixa delimitadora do arco.

    • Se geography_expression for um único ponto, ST_ENVELOPE devolve esse ponto.

  • Para objetos GEOMETRY:

    • Em casos degenerados (por exemplo, quando a entrada é um ponto ou uma linha vertical ou horizontal), a função pode retornar uma geometria de dimensão menor (ou seja, um ponto ou um LineString).

    • Para objetos GEOMETRY, o objeto GEOMETRY retornado tem o mesmo SRID que a entrada.

Exemplos

Exemplos GEOGRAPHY

O exemplo a seguir retorna a caixa delimitadora mínima para um polígono:

SELECT ST_ENVELOPE(
    TO_GEOGRAPHY(
        'POLYGON((-122.306067 37.55412, -122.32328 37.561801, -122.325879 37.586852, -122.306067 37.55412))'
    )
) as minimum_bounding_box_around_polygon;
+-----------------------------------------------------------------------------------------------------------------------+
| MINIMUM_BOUNDING_BOX_AROUND_POLYGON                                                                                   |
|-----------------------------------------------------------------------------------------------------------------------|
| POLYGON((-122.325879 37.55412,-122.306067 37.55412,-122.306067 37.586852,-122.325879 37.586852,-122.325879 37.55412)) |
+-----------------------------------------------------------------------------------------------------------------------+

O seguinte exemplo passa em um LineString que representa um arco de meridiano. A função retorna o mesmo LineString, em vez de um polígono.

SELECT ST_ENVELOPE(
    TO_GEOGRAPHY(
        'LINESTRING(-122.32328 37.561801, -122.32328 37.562001)'
    )
) as minimum_bounding_box_around_meridian_arc;
+-------------------------------------------------------+
| MINIMUM_BOUNDING_BOX_AROUND_MERIDIAN_ARC              |
|-------------------------------------------------------|
| LINESTRING(-122.32328 37.561801,-122.32328 37.562001) |
+-------------------------------------------------------+

O exemplo seguinte passa em um LineString que representa um arco em um paralelo que não é o equador. A função retorna um polígono que representa a caixa delimitadora:

SELECT ST_ENVELOPE(
    TO_GEOGRAPHY(
        'LINESTRING(-122.32328 37.561801,-122.32351 37.561801)'
    )
) as minimum_bounding_box_around_arc_along_parallel;
+---------------------------------------------------------------------------------------------------------------------+
| MINIMUM_BOUNDING_BOX_AROUND_ARC_ALONG_PARALLEL                                                                      |
|---------------------------------------------------------------------------------------------------------------------|
| POLYGON((-122.32351 37.561801,-122.32328 37.561801,-122.32328 37.561801,-122.32351 37.561801,-122.32351 37.561801)) |
+---------------------------------------------------------------------------------------------------------------------+

O exemplo a seguir passa em um único ponto. A função retorna o mesmo ponto:

SELECT ST_ENVELOPE(
    TO_GEOGRAPHY(
        'POINT(-122.32328 37.561801)'
    )
) as minimum_bounding_box_around_point;
+-----------------------------------+
| MINIMUM_BOUNDING_BOX_AROUND_POINT |
|-----------------------------------|
| POINT(-122.32328 37.561801)       |
+-----------------------------------+

Exemplos GEOMETRY