Funções geoespaciais no mecanismo do Athena versão 2 - Amazon Athena

Funções geoespaciais no mecanismo do Athena versão 2

Este tópico lista as funções geoespaciais do ESRI compatíveis a partir do mecanismo Athena versão 2. Para obter informações sobre as versões do mecanismo do Athena, consulte Versionamento do mecanismo do Athena.

Alterações no mecanismo do Athena versão 2

O Athena permite os seguintes tipos de funções geoespaciais:

Funções do construtor

Use funções do construtor para obter representações binárias dos tipos de dados de geometria point, line ou polygon. Você também pode usar essas funções para converter dados binários em texto e obter valores binários para dados de geometria expressos como Well-Known Text (WKT – Texto bem conhecido).

ST_AsBinary(geometry)

Retorna um tipo de dados varbinary que contém a representação WKB da geometria especificada. Exemplo:

SELECT ST_AsBinary(ST_Point(-158.54, 61.56))

ST_AsText(geometry)

Converte cada um dos tipos de dados de geometria especificados em texto. Retorna um valor em um tipo de dados varchar, que é uma representação WKT do tipo de dados de geometria. Exemplo:

SELECT ST_AsText(ST_Point(-158.54, 61.56))

ST_GeomAsLegacyBinary(geometry)

Retorna um varbinary herdado da geometria especificada. Exemplo:

SELECT ST_GeomAsLegacyBinary(ST_Point(-158.54, 61.56)

ST_GeometryFromText(varchar)

Converte um texto no formato WKT em um tipo de dados de geometria. Retorna um valor como um tipo de dados de geometria. Exemplo:

SELECT ST_GeometryFromText(ST_AsText(ST_Point(1, 2)))

ST_GeomFromBinary(varbinary)

Retorna um objeto de tipo geometria de uma representação WKB. Exemplo:

SELECT ST_GeomFromBinary(ST_AsBinary(ST_Point(-158.54, 61.56)))

ST_GeomFromLegacyBinary(varbinary)

Retorna um objeto de tipo geometria de um tipo varbinary herdado. Exemplo:

SELECT ST_GeomFromLegacyBinary(ST_GeomAsLegacyBinary(ST_Point(-158.54, 61.56)))

ST_LineFromText(varchar)

Retorna um valor como um tipo de dados de geometria line. Exemplo:

SELECT ST_Line('linestring(1 1, 2 2, 3 3)')

ST_LineString(array(point))

Retorna um tipo de geometria LineString formado de um array de tipos de geometria de ponto. Se houver menos de dois pontos não vazios no array especificado, um LineString vazio será retornado. Gera uma exceção quando um elemento no array é nulo, está vazio ou é igual ao anterior. A geometria retornada pode não ser simples. Dependendo da entrada especificada, a geometria retornada pode se intersectar ou conter vértices duplicados. Exemplo:

SELECT ST_LineString(ARRAY[ST_Point(-158.54, 61.56), ST_Point(-158.55, 61.56)])

ST_MultiPoint(array(point))

Retorna um objeto de geometria MultiPoint formado com base nos pontos especificados. Retorna nulo quando o array especificado está vazio. Gera uma exceção quando um elemento no array é nulo ou está vazio. A geometria retornada talvez não seja simples e contenha pontos duplicados se o array especificado tiver duplicatas. Exemplo:

SELECT ST_MultiPoint(ARRAY[ST_Point(-158.54, 61.56), ST_Point(-158.55, 61.56)])

ST_Point(double, double)

Retorna um objeto point de tipo de geometria. Para os valores de dados de entrada para essa função, use valores geométricos, como valores do sistema de coordenadas cartesianas da Universal Transversa de Mercator (UTM) ou unidades de mapas geográficos (latitude e longitude) em graus decimais. Os valores de latitude e longitude usam o sistema geodésico mundial, também conhecido como WGS 1984 ou EPSG:4326. WGS 1984 é o sistema de coordenadas usado pelo sistema GPS.

Por exemplo, na seguinte notação, as coordenadas do mapa são especificadas em latitude e longitude, e o valor .072284, que é a distância de folga, é especificada em unidades anguladas na forma de graus decimais:

SELECT ST_Buffer(ST_Point(-74.006801, 40.705220), .072284)

Sintaxe:

SELECT ST_Point(longitude, latitude) FROM earthquakes LIMIT 1

O seguinte exemplo usa coordenadas específicas de latitude e longitude:

SELECT ST_Point(-158.54, 61.56) FROM earthquakes LIMIT 1

O próximo exemplo usa coordenadas de longitude e latitude específicas:

SELECT ST_Point(-74.006801, 40.705220)

O seguinte exemplo usa a função ST_AsText para obter a geometria de WKT:

SELECT ST_AsText(ST_Point(-74.006801, 40.705220)) AS WKT

ST_Polygon(varchar)

Usando a sequência de ordenadas fornecidas no sentido horário, da esquerda para a direita, retorna um tipo de dados de geometria polygon. A partir do mecanismo Athena versão 2, apenas os polígonos são aceitos como entradas. Exemplo:

SELECT ST_Polygon('polygon ((1 1, 1 4, 4 4, 4 1))')

to_geometry(sphericalGeography)

Retorna um objeto de geometria com base no objeto geográfico esférico especificado. Exemplo:

SELECT to_geometry(to_spherical_geography(ST_Point(-158.54, 61.56)))

to_spherical_geography(geometry)

Retorna um objeto geográfico esférico com base na geometria especificada. Use essa função para converter um objeto de geometria em um objeto geográfico esférico com base na esfera do raio da Terra. É possível usar essa função somente nas geometrias POINT, MULTIPOINT, LINESTRING, MULTILINESTRING, POLYGON e MULTIPOLYGON definidas em espaço 2D ou uma GEOMETRYCOLLECTION dessas geometrias. Para cada ponto da geometria especificada, a função verifica se point.x está dentro de [-180.0, 180.0] e point.y está dentro de [-90.0, 90.0]. A função usa esses pontos como graus de latitude e longitude para construir a forma do resultado de sphericalGeography.

Exemplo:

SELECT to_spherical_geography(ST_Point(-158.54, 61.56))

Funções de relacionamentos geoespaciais

As funções a seguir expressam os relacionamentos entre duas geometrias diferentes que você especifica como entrada e retornam resultados do tipo boolean. A ordem na qual você especifica o par de geometrias importa: o primeiro valor de geometria é chamado de geometria à esquerda, o segundo valor de geometria é chamado de geometria à direita.

Essas funções retornam:

  • TRUE se e somente se o relacionamento descrito pela função é atendido.

  • FALSE se e somente se o relacionamento descrito pela função não é atendido.

ST_Contains(geometry, geometry)

Retornará TRUE se e somente se a geometria à esquerda contiver a geometria à direita. Exemplos:

SELECT ST_Contains('POLYGON((0 2,1 1,0 -1,0 2))', 'POLYGON((-1 3,2 1,0 -3,-1 3))')
SELECT ST_Contains('POLYGON((0 2,1 1,0 -1,0 2))', ST_Point(0, 0))
SELECT ST_Contains(ST_GeometryFromText('POLYGON((0 2,1 1,0 -1,0 2))'), ST_GeometryFromText('POLYGON((-1 3,2 1,0 -3,-1 3))'))

ST_Crosses(geometry, geometry)

Retornará TRUE se e somente se a geometria à esquerda cruzar a geometria à direita. Exemplo:

SELECT ST_Crosses(ST_Line('linestring(1 1, 2 2 )'), ST_Line('linestring(0 1, 2 2)'))

ST_Disjoint(geometry, geometry)

Retornará TRUE se e somente se a interseção da geometria à esquerda e da geometria à direita estiver vazia. Exemplo:

SELECT ST_Disjoint(ST_Line('linestring(0 0, 0 1)'), ST_Line('linestring(1 1, 1 0)'))

ST_Equals(geometry, geometry)

Retornará TRUE se e somente se a geometria à esquerda for igual à geometria à direita. Exemplo:

SELECT ST_Equals(ST_Line('linestring( 0 0, 1 1)'), ST_Line('linestring(1 3, 2 2)'))

ST_Intersects(geometry, geometry)

Retornará TRUE se e somente se a geometria à esquerda apresentar intersecção com a geometria à direita. Exemplo:

SELECT ST_Intersects(ST_Line('linestring(8 7, 7 8)'), ST_Polygon('polygon((1 1, 4 1, 4 4, 1 4))'))

ST_Overlaps(geometry, geometry)

Retornará TRUE se e somente se a geometria à esquerda sobrepuser a geometria à direita. Exemplo:

SELECT ST_Overlaps(ST_Polygon('polygon((2 0, 2 1, 3 1))'), ST_Polygon('polygon((1 1, 1 4, 4 4, 4 1))'))

ST_Relate(geometry, geometry, varchar)

Retornará TRUE somente se a geometria à esquerda tiver o relacionamento Dimensionally Extended nine-Intersection Model (DE-9IM – Modelo de nove interseções estendido dimensionalmente) especificado com a geometria à direita. A terceira entrada (varchar) representa o relacionamento. Exemplo:

SELECT ST_Relate(ST_Line('linestring(0 0, 3 3)'), ST_Line('linestring(1 1, 4 4)'), 'T********')

ST_Touches(geometry, geometry)

Retornará TRUE se e somente se a geometria à esquerda tocar a geometria à direita.

Exemplo:

SELECT ST_Touches(ST_Point(8, 8), ST_Polygon('polygon((1 1, 1 4, 4 4, 4 1))'))

ST_Within(geometry, geometry)

Retornará TRUE se e somente se a geometria à esquerda estiver dentro da geometria à direita.

Exemplo:

SELECT ST_Within(ST_Point(8, 8), ST_Polygon('polygon((1 1, 1 4, 4 4, 4 1))'))

Funções de operação

Use funções de operação para realizar operações nos valores do tipo de dados de geometria. Por exemplo, você pode obter os limites de um único tipo de dados de geometria, interseções entre dois tipos de dados de geometria, diferença entre geometrias à esquerda e à direita, em que cada um é do mesmo tipo de dados de geometria ou um buffer externo ou um anel em torno de um tipo de dados de geometria específico.

geometry_union(array(geometry))

Retorna uma geometria que representa a união do conjunto de pontos das geometrias especificadas. Exemplo:

SELECT geometry_union(ARRAY[ST_Point(-158.54, 61.56), ST_Point(-158.55, 61.56)])

ST_Boundary(geometry)

Usa como entrada um dos tipos de dados de geometria e retorna o tipo de dados de geometria boundary.

Exemplos:

SELECT ST_Boundary(ST_Line('linestring(0 1, 1 0)')))
SELECT ST_Boundary(ST_Polygon('polygon((1 1, 1 4, 4 4, 4 1))'))

ST_Buffer(geometry, double)

Usa como entrada um dos tipos de dados de geometria, como ponto, linha, polígono, multilinha ou multipolígono e uma distância como tipo double). Retorna o tipo de dados de geometria armazenado em buffer pela distância especificada (ou raio). Exemplo:

SELECT ST_Buffer(ST_Point(1, 2), 2.0)

No seguinte exemplo, as coordenadas do mapa são especificadas em latitude e longitude, e o valor .072284, que é a distância de folga, é especificado em unidades anguladas na forma de graus decimais:

SELECT ST_Buffer(ST_Point(-74.006801, 40.705220), .072284)

ST_Difference(geometry, geometry)

Retorna uma geometria da diferença entre a geometria à esquerda e a geometria à direita. Exemplo:

SELECT ST_AsText(ST_Difference(ST_Polygon('polygon((0 0, 0 10, 10 10, 10 0))'), ST_Polygon('polygon((0 0, 0 5, 5 5, 5 0))')))

ST_Envelope(geometry)

Recebe como entrada os tipos de dados de geometria line, polygon, multiline e multipolygon. Não oferece suporte ao tipo de dados de geometria point. Retorna o envelope como uma geometria, em que o envelope é um retângulo em torno do tipo de dados de geometria especificado. Exemplos:

SELECT ST_Envelope(ST_Line('linestring(0 1, 1 0)'))
SELECT ST_Envelope(ST_Polygon('polygon((1 1, 1 4, 4 4, 4 1))'))

ST_EnvelopeAsPts(geometry)

Retorna um array de dois pontos que representam os cantos inferior esquerdo e superior direito do polígono retangular delimitador de uma geometria. Retorna nulo quando a geometria especificada está vazia. Exemplo:

SELECT ST_EnvelopeAsPts(ST_Point(-158.54, 61.56))

ST_ExteriorRing(geometry)

Retorna a geometria do anel externo do tipo de entrada polygon. A partir do mecanismo Athena versão 2, os polígonos são as únicas geometrias aceitas como entradas. Exemplos:

SELECT ST_ExteriorRing(ST_Polygon(1,1, 1,4, 4,1))
SELECT ST_ExteriorRing(ST_Polygon('polygon ((0 0, 8 0, 0 8, 0 0), (1 1, 1 5, 5 1, 1 1))'))

ST_Intersection(geometry, geometry)

Retorna a geometria da interseção da geometria à esquerda e da geometria à direita. Exemplos:

SELECT ST_Intersection(ST_Point(1,1), ST_Point(1,1))
SELECT ST_Intersection(ST_Line('linestring(0 1, 1 0)'), ST_Polygon('polygon((1 1, 1 4, 4 4, 4 1))'))
SELECT ST_AsText(ST_Intersection(ST_Polygon('polygon((2 0, 2 3, 3 0))'), ST_Polygon('polygon((1 1, 4 1, 4 4, 1 4))')))

ST_SymDifference(geometry, geometry)

Retorna a geometria da diferença geometricamente simétrica entre a geometria à esquerda e a geometria à direita. Exemplo:

SELECT ST_AsText(ST_SymDifference(ST_Line('linestring(0 2, 2 2)'), ST_Line('linestring(1 2, 3 2)')))

ST_Union(geometry, geometry)

Retorna um tipo de dados de geometria que representa a união do conjunto de pontos das geometrias especificadas. Exemplo:

SELECT ST_Union(ST_Point(-158.54, 61.56),ST_LineString(array[ST_Point(1,2), ST_Point(3,4)]))

Funções do acessor

As funções do acessor são úteis para obter valores nos tipos varchar, bigint ou double de tipos de dados geometry diferentes, em que geometry é qualquer um dos tipos de dados de geometria disponíveis no Athena: point, line, polygon, multiline e multipolygon. Por exemplo, você pode obter uma área de um tipo de dados de geometria polygon, valores X e Y máximos e mínimos para um tipo de dados de geometria especificado, obter o comprimento de um line ou receber o número de pontos em um tipo de dados de geometria especificado.

geometry_invalid_reason(geometry)

Retorna, como tipo de dados varchar, a razão pela qual a geometria especificada não é válida ou não é simples. Se a geometria especificada não é válida nem simples, retorna a razão. Se a geometria especificada é válida e simples, retorna nulo. Exemplo:

SELECT geometry_invalid_reason(ST_Point(-158.54, 61.56))

great_circle_distance(latitude1, longitude1, latitude2, longitude2)

Retorna, como valor duplo, a distância do círculo máximo entre dois pontos na superfície da Terra em quilômetros. Exemplo:

SELECT great_circle_distance(36.12, -86.67, 33.94, -118.40)

line_locate_point(lineString, point)

Retorna um valor duplo entre 0 e 1 que representa a localização do ponto mais próximo na string de linha especificada ao ponto especificado como uma fração do comprimento total da linha 2d.

Retorna nulo quando a string de linha ou o ponto especificado está vazio ou é nulo. Exemplo:

SELECT line_locate_point(ST_GeometryFromText('LINESTRING (0 0, 0 1)'), ST_Point(0, 0.2))

simplify_geometry(geometry, double)

Usa o algoritmo Ramer-Douglas-Peucker para retornar um tipo de dado de geometria que é uma versão simplificada da geometria especificada. Evita a criação de geometrias derivadas (em particular, polígonos) que são inválidas. Exemplo:

SELECT simplify_geometry(ST_GeometryFromText('POLYGON ((1 0, 2 1, 3 1, 3 1, 4 1, 1 0))'), 1.5)

ST_Area(geometry)

Utiliza como entrada um tipo de dado de geometria e retorna uma área no tipo double. Exemplo:

SELECT ST_Area(ST_Polygon('polygon((1 1, 4 1, 4 4, 1 4))'))

ST_Centroid(geometry)

Usa como entrada um tipo de dados de geometria polygon e retorna um tipo de dados de geometria point que é o centro do envelope do polígono. Exemplos:

SELECT ST_Centroid(ST_GeometryFromText('polygon ((0 0, 3 6, 6 0, 0 0))'))
SELECT ST_AsText(ST_Centroid(ST_Envelope(ST_GeometryFromText('POINT (53 27)'))))

ST_ConvexHull(geometry)

Retorna um tipo de dados de geometria que é a menor geometria convexa que engloba todas as geometrias na entrada especificada. Exemplo:

SELECT ST_ConvexHull(ST_Point(-158.54, 61.56))

ST_CoordDim(geometry)

Usa como entrada um dos tipos de dados de geometria aceitos e retorna a contagem de componentes de coordenadas no tipo tinyint. Exemplo:

SELECT ST_CoordDim(ST_Point(1.5,2.5))

ST_Dimension(geometry)

Utiliza como entrada um dos tipos de dados de geometria compatíveis e retorna a dimensão espacial de uma geometria no tipo tinyint. Exemplo:

SELECT ST_Dimension(ST_Polygon('polygon((1 1, 4 1, 4 4, 1 4))'))

ST_Distance(geometry, geometry)

Retorna, com base na referência espacial, um valor duplo que contém a distância cartesiana mínima bidimensional entre duas geometrias nas unidades projetadas. A partir do mecanismo Athena versão 2, a informação retornada será nula se uma das entradas for uma geometria vazia. Exemplo:

SELECT ST_Distance(ST_Point(0.0,0.0), ST_Point(3.0,4.0))

ST_Distance(sphericalGeography, sphericalGeography)

Retorna, como valor duplo, a distância do círculo máximo entre dois pontos geográficos esféricos em metros. Exemplo:

SELECT ST_Distance(to_spherical_geography(ST_Point(61.56, -86.67)),to_spherical_geography(ST_Point(61.56, -86.68)))

ST_EndPoint(geometry)

Retorna o último ponto de um tipo de dados de geometria line como um tipo de dados de geometria point. Exemplo:

SELECT ST_EndPoint(ST_Line('linestring(0 2, 2 2)'))

ST_Geometries(geometry)

Retorna um array de geometrias na coleção especificada. Se a geometria especificada não for múltipla, retornará um array de elemento único. Quando a geometria especificada está vazia, retorna nulo.

Por exemplo, se o objeto for MultiLineString, ST_Geometries criará um array de objetos LineString. Se um objeto for GeometryCollection, ST_Geometries retornará um array não nivelado dos respectivos integrantes. Exemplo:

SELECT ST_Geometries(GEOMETRYCOLLECTION(MULTIPOINT(0 0, 1 1), GEOMETRYCOLLECTION(MULTILINESTRING((2 2, 3 3)))))

Resultado:

array[MULTIPOINT(0 0, 1 1),GEOMETRYCOLLECTION(MULTILINESTRING((2 2, 3 3)))]

ST_GeometryN(geometry, index)

Retorna, como tipo de dados de geometria, o elemento de geometria com um índice de número inteiro especificado. Os índices começam em 1. Se a geometria especificada for uma coleção de geometrias (por exemplo, um objeto GEOMETRYCOLLECTION ou MULTI*), retornará a geometria no índice especificado. Se o índice especificado for menor que 1 ou maior que o número total de elementos na coleção, retornará nulo. Para saber o número total de elementos, use ST_NumGeometries. As geometrias singulares (por exemplo, POINT, LINESTRING ou POLYGON) são tratadas como coleções de um elemento. As geometrias vazias são tratadas como coleções vazias. Exemplo:

SELECT ST_GeometryN(ST_Point(-158.54, 61.56),1)

ST_GeometryType(geometry)

Retorna, como varchar, o tipo da geometria. Exemplo:

SELECT ST_GeometryType(ST_Point(-158.54, 61.56))

ST_InteriorRingN(geometry, index)

Retorna o elemento do anel interno no índice especificado (os índices começam em 1). Se o índice especificado for menor que 1 ou maior que o número total de anéis internos na geometria especificada, retornará nulo. Gera um erro quando a geometria especificada não é um polígono. Para saber o número total de elementos, use ST_NumInteriorRing. Exemplo:

SELECT ST_InteriorRingN(st_polygon('polygon ((0 0, 1 0, 1 1, 0 1, 0 0))'),1)

ST_InteriorRings(geometry)

Retorna um array de geometria de todos os anéis internos encontrados na geometria especificada, ou um array vazio se o polígono não tiver anéis internos. Quando a geometria especificada está vazia, retorna nulo. Quando a geometria especificada não é um polígono, gera um erro. Exemplo:

SELECT ST_InteriorRings(st_polygon('polygon ((0 0, 1 0, 1 1, 0 1, 0 0))'))

ST_IsClosed(geometry)

Usa como entrada somente os tipos de dados de geometria line e multiline. Retornará TRUE (tipo boolean) se e somente se a linha for fechada. Exemplo:

SELECT ST_IsClosed(ST_Line('linestring(0 2, 2 2)'))

ST_IsEmpty(geometry)

Usa como entrada somente os tipos de dados de geometria line e multiline. Retornará TRUE (tipo boolean) somente se a geometria especificada estiver vazia, em outras palavras, quando os valores inicial e final de line coincidirem. Exemplo:

SELECT ST_IsEmpty(ST_Point(1.5, 2.5))

ST_IsRing(geometry)

Retornará TRUE (tipo boolean) se e somente se o tipo line for fechado e simples. Exemplo:

SELECT ST_IsRing(ST_Line('linestring(0 2, 2 2)'))

ST_IsSimple(geometry)

Retornará true se a geometria especificada não tiver pontos geométricos anômalos (por exemplo, autointerseção ou autotangência). Para determinar por que a geometria não é simples, use geometry_invalid_reason(). Exemplo:

SELECT ST_IsSimple(ST_LineString(array[ST_Point(1,2), ST_Point(3,4)]))

ST_IsValid(geometry)

Retornará true somente se a geometria especificada estiver bem formada. Para determinar por que a geometria não está bem formada, use geometry_invalid_reason(). Exemplo:

SELECT ST_IsValid(ST_Point(61.56, -86.68))

ST_Length(geometry)

Retorna o comprimento de line no tipo double. Exemplo:

SELECT ST_Length(ST_Line('linestring(0 2, 2 2)'))

ST_NumGeometries(geometry)

Retorna, como inteiro, o número de geometrias na coleção. Se a geometria for uma coleção de geometrias (por exemplo, um objeto GEOMETRYCOLLECTION ou MULTI*), retornará o número de geometrias. Geometrias únicas retornam 1, geometrias vazias retornam 0. Uma geometria vazia em um objeto GEOMETRYCOLLECTION é contada como uma geometria. Por exemplo, o seguinte exemplo é avaliado como 1:

ST_NumGeometries(ST_GeometryFromText('GEOMETRYCOLLECTION(MULTIPOINT EMPTY)'))

ST_NumInteriorRing(geometry)

Retorna o número de anéis internos na geometria polygon no tipo bigint. Exemplo:

SELECT ST_NumInteriorRing(ST_Polygon('polygon ((0 0, 8 0, 0 8, 0 0), (1 1, 1 5, 5 1, 1 1))'))

ST_NumPoints(geometry)

Retorna o número de pontos na geometria no tipo bigint. Exemplo:

SELECT ST_NumPoints(ST_Point(1.5, 2.5))

ST_PointN(lineString, index)

Retorna, como tipo de dados de geometria de ponto, o vértice da string de linha especificada no índice inteiro especificado. Os índices começam em 1. Se o índice especificado for menor que 1 ou maior que o número total de elementos na coleção, retornará nulo. Para saber o número total de elementos, use ST_NumPoints. Exemplo:

SELECT ST_PointN(ST_LineString(array[ST_Point(1,2), ST_Point(3,4)]),1)

ST_Points(geometry)

Retorna um array de pontos do objeto de geometria de string de linha especificado. Exemplo:

SELECT ST_Points(ST_LineString(array[ST_Point(1,2), ST_Point(3,4)]))

ST_StartPoint(geometry)

Retorna o primeiro ponto de um tipo de dados de geometria line em um tipo de dados de geometria point. Exemplo:

SELECT ST_StartPoint(ST_Line('linestring(0 2, 2 2)'))

ST_X(point)

Retorna a coordenada X de um ponto no tipo double. Exemplo:

SELECT ST_X(ST_Point(1.5, 2.5))

ST_XMax(geometry)

Retorna a coordenada X máxima de uma geometria no tipo double. Exemplo:

SELECT ST_XMax(ST_Line('linestring(0 2, 2 2)'))

ST_XMin(geometry)

Retorna a coordenada X mínima de uma geometria no tipo double. Exemplo:

SELECT ST_XMin(ST_Line('linestring(0 2, 2 2)'))

ST_Y(point)

Retorna a coordenada Y de um ponto no tipo double. Exemplo:

SELECT ST_Y(ST_Point(1.5, 2.5))

ST_YMax(geometry)

Retorna a coordenada Y máxima de uma geometria no tipo double. Exemplo:

SELECT ST_YMax(ST_Line('linestring(0 2, 2 2)'))

ST_YMin(geometry)

Retorna a coordenada Y mínima de uma geometria no tipo double. Exemplo:

SELECT ST_YMin(ST_Line('linestring(0 2, 2 2)'))

Funções de agregação

convex_hull_agg(geometry)

Retorna a geometria convexa mínima que engloba todas as geometrias inseridas como entrada.

geometry_union_agg(geometry)

Retorna uma geometria que representa a união do conjunto de pontos de todas as geometrias inseridas como entrada.

Funções de blocos do Bing

As funções a seguir convertem geometrias e blocos no sistema de blocos do Bing Mapas da Microsoft.

bing_tile(x, y, zoom_level)

Retorna um objeto de bloco do Bing com base nas coordenadas inteiras x e y e no nível de zoom especificado. O nível de zoom deve ser um número inteiro de 1 a 23. Exemplo:

SELECT bing_tile(10, 20, 12)

bing_tile(quadKey)

Retorna um objeto de bloco do Bing de um quadkey. Exemplo:

SELECT bing_tile(bing_tile_quadkey(bing_tile(10, 20, 12)))

bing_tile_at(latitude, longitude, zoom_level)

Retorna um objeto de bloco do Bing na latitude, na longitude e no nível de zoom especificados. A latitude deve ser entre -85,05112878 e 85,05112878. A longitude deve ser entre -180 e 180. Os valores latitude e longitude devem ser double, e zoom_level deve ser um número inteiro. Exemplo:

SELECT bing_tile_at(37.431944, -122.166111, 12)

bing_tiles_around(latitude, longitude, zoom_level)

Retorna um array de blocos do Bing que cercam o ponto de latitude e longitude especificado no nível do zoom informado. Exemplo:

SELECT bing_tiles_around(47.265511, -122.465691, 14)

bing_tiles_around(latitude, longitude, zoom_level, radius_in_km)

Retorna, no nível do zoom especificado, um array de blocos do Bing. O array contém o conjunto mínimo de blocos do Bing que cobre um círculo do raio especificado em quilômetros ao redor da latitude e longitude especificadas. Os valores latitude, longitude e radius_in_km são double, o nível do zoom é um integer. Exemplo:

SELECT bing_tiles_around(37.8475, 112.596667, 10, .5)

bing_tile_coordinates(tile)

Retorna as coordenadas x e y do bloco do Bing especificado. Exemplo:

SELECT bing_tile_coordinates(bing_tile_at(37.431944, -122.166111, 12))

bing_tile_polygon(tile)

Retorna a representação de polígono do bloco do Bing especificado. Exemplo:

SELECT bing_tile_polygon(bing_tile_at(47.265511, -122.465691, 4))

bing_tile_quadkey(tile)

Retorna o quadkey do bloco do Bing especificado. Exemplo:

SELECT bing_tile_quadkey(bing_tile(52, 143, 10))

bing_tile_zoom_level(tile)

Retorna o nível do zoom do bloco do Bing especificado como um inteiro. Exemplo:

SELECT bing_tile_zoom_level(bing_tile(52, 143, 10))

geometry_to_bing_tiles(geometry, zoom_level)

Retorna o conjunto mínimo de blocos do Bing que cobrem totalmente a geometria especificada no nível do zoom especificado. Os níveis de zoom permitidos são de 1 a 23. Exemplo:

SELECT geometry_to_bing_tiles(ST_Point(61.56, 58.54), 10)