Funções do acessor - Amazon Athena

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