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