O Babelfish comporta tipos de dados geoespaciais - Amazon Aurora

O Babelfish comporta tipos de dados geoespaciais

A partir das versões 3.5.0 e 4.1.0, o Babelfish inclui suporte para estes dois tipos de dados espaciais:

  • Tipo de dados de geometria: esse tipo de dados é destinado ao armazenamento de dados planares ou euclidianos (Terra plana).

  • Tipo de dados geográficos: esse tipo de dados é destinado ao armazenamento de dados elipsoidais (Terra redonda), como coordenadas de latitude e longitude do GPS.

Esses tipos de dados permitem o armazenamento e a manipulação de dados espaciais, mas com limitações.

Noções básicas sobre os tipos de dados geoespaciais no Babelfish

  • Os tipos de dados geoespaciais são aceitos em vários objetos de banco de dados, como visualizações, procedimentos e tabelas.

  • Comporta o tipo de dados de pontos para armazenar dados de localização como pontos definidos por latitude, longitude e um identificador de sistema de referência espacial (SRID) válido. Um ponto pode conter valores Z (elevação), M (medida) e pode estar vazio.

  • Comporta o tipo de dados de cadeia de linhas (da versão 5.4.0) definido por uma sequência de pontos e os segmentos de linha que os conectam e por um identificador de sistema de referência espacial (SRID) válido. Uma string de linha pode conter pontos com valores Z (elevação), M (medida) e pode estar vazia.

  • Aplicações que se conectam ao Babelfish por meio de drivers, como JDBC, ODBC, DOTNET e PYTHON, podem utilizar esse recurso geoespacial.

Funções de tipo de dados de geometria aceitas no Babelfish

  • STGeomFromText (geometry_tagged_text, SRID): cria uma instância de geometria usando a representação de texto conhecido (WKT).

  • STPointFromText (point_tagged_text, SRID): cria uma instância de ponto usando a representação WKT.

  • Ponto (X, Y, SRID): cria uma instância de ponto usando valores flutuantes das coordenadas x e y.

  • <geometry_instance>.STAsText ( ): extrai a representação WKT da instância de geometria.

  • <geometry_instance>.STAsBinary ( ): extrai a representação WKB da instância de geometria.

  • <geometry_instance>.STArea ( ): calcula a área total da superfície da instância de geometria.

  • <geometry_instance>.STSrid ( ): extrai o identificador de referência espacial (SRID) da instância de geometria.

  • <geometry_instance>.STDimension ( ): recupera a dimensão espacial da instância de geometria.

  • <geometry_instance>.STIsEmpty ( ): confere se a instância da geometria está vazia.

  • <geometry_instance>.STIsClosed ( ): confere se a instância da geometria está vazia.

  • <geometry_instance>.STIsValid ( ): confere se a instância da geometria está vazia.

  • <geometry_instance>.STDistance (other_geometry): calcula a distância entre duas instâncias de geometria.

  • <geometry_instance>.STEquals (other_geometry): confere se a instância de geometria representa o mesmo conjunto de pontos que outra instância de geometria.

  • <geometry_instance>.STContains (other_geometry): confere se a instância de geometria contém a instância other_geometry.

  • <geometry_instance>.STDisjoint (other_geometry): confere se duas instâncias de geometria não têm pontos em comum.

  • <geometry_instance>.STIntersects (other_geometry): confere se há intersecção espacial entre duas instâncias de geometria.

  • <geometry_instance>.STX: extrai a coordenada X (longitude) para a instância de geometria.

  • <geometry_instance>.STY: extrai a coordenada Y (latitude) para a instância de geometria.

A partir das versões 4.7.0 e 5.3.0, o Babelfish inclui suporte para as seguintes funções de dados espaciais:

  • <geometry_instance>.M: extrai a coordenada M da instância de geometria.

  • <geometry_instance>.Z: extrai a coordenada Z da instância de geometria.

  • <geometry_instance>.HasM: confere se a instância de geometria tem pelo menos um valor M.

  • <geometry_instance>.HasZ: confere se a instância de geometria tem pelo menos um valor Z.

A partir das versões 5.4.0, o Babelfish inclui suporte para a seguinte função de dados espaciais:

  • STLineFromText (linestring_tagged_text, SRID): cria uma instância de string de linha usando a representação WKT.

Funções de tipo de dados de geografia aceitas no Babelfish

  • STGeomFromText (geography_tagged_text, SRID): cria uma instância de geografia usando a representação WKT.

  • STPointFromText (point_tagged_text, SRID): cria uma instância de ponto usando a representação WKT.

  • Ponto (Lat, Long, SRID): cria uma instância de ponto usando valores flutuantes de latitude e de longitude.

  • <geography_instance>.STAsText ( ): extrai a representação WKT da instância de geografia.

  • <geography_instance>.STAsBinary ( ): extrai a representação WKB da instância de geografia.

  • <geography_instance>.STArea ( ): calcula a área total da superfície da instância de geografia.

  • <geography_instance>.STSrid ( ): extrai o identificador de referência espacial (SRID) da instância de geografia.

  • <geography_instance>.STDimension ( ): recupera a dimensão espacial da instância de geografia.

  • <geography_instance>.STIsEmpty ( ): confere se a instância da geografia está vazia.

  • <geography_instance>.STIsClosed ( ): confere se a instância da geografia está fechada.

  • <geography_instance>.STIsValid( ): confere se a instância da geografia é válida.

  • <geography_instance>.STDistance (other_geography): calcula a distância entre duas instâncias de geografia.

  • <geography_instance>.STEquals (other_geography): confere se a instância de geografia representa o mesmo conjunto de pontos que outra instância de geografia.

  • <geography_instance>.STContains (other_geography): confere se a instância de geografia contém a instância other_geography.

  • <geography_instance>.STDisjoint (other_geography): confere se duas instâncias de geografia não têm pontos em comum.

  • <geography_instance>.STIntersects (other_geography): confere se há intersecção espacial entre duas instâncias de geografia.

  • <geography_instance>.Lat: extrai o valor de latitude para a instância de geografia.

  • <geography_instance>.Long: extrai o valor de longitude para a instância de geografia.

A partir das versões 4.7.0 e 5.3.0, o Babelfish inclui suporte para as seguintes funções de dados espaciais:

  • <geography_instance>.M: extrai a coordenada M da instância geográfica.

  • <geography_instance>.M: extrai a coordenada M da instância de geografia.

  • <geography_instance>.HasM: confere se a instância de geografia tem pelo menos um valor M.

  • <geography_instance>.HasZ: confere se a instância de geografia tem pelo menos um valor Z.

A partir das versões 5.4.0, o Babelfish inclui suporte para a seguinte função de dados espaciais:

  • STLineFromText (linestring_tagged_text, SRID): cria uma instância de string de linha usando a representação WKT.

Limitações no Babelfish para tipos de dados geoespaciais

  • No momento, os tipos de geometria e geografia diferentes de instâncias de pontos e string de linha não são aceitos:

    • CircularString

    • CompoundCurve

    • Polígono

    • CurvePolygon

    • MultiPoint

    • MultiLineString

    • MultiPolygon

    • GeometryCollection

  • No momento, a indexação espacial não comporta tipos de dados geoespaciais.

  • No momento, somente as funções listadas comportam esses tipos de dados. Para obter mais informações, consulte Funções de tipo de dados de geometria aceitas no Babelfish e Funções de tipo de dados de geografia aceitas no Babelfish.

  • A saída da função STDistance para dados de geografia pode ter pequenas variações de precisão em comparação com o T-SQL. Isso se deve à implementação subjacente do PostGIS. Para ter mais informações, consulte ST_Distance.

  • A saída da função STIsValid para dados de geometria e geografia pode ter alguns desvios em comparação ao T-SQL. Por esse motivo, as funções STDistance, STContains, STInstersects, STDisjoint, STDimension, STArea, STEquals também podem se desviar do T-SQL em alguns casos (exibe a saída em vez de gerar erro). Isso se deve à implementação subjacente do PostGIS. Para ter mais informações, consulte ST_IsValid.

  • Para ter uma performance ideal, use tipos de dados geoespaciais integrados, sem criar camadas adicionais de abstração no Babelfish.

  • No Babelfish, os nomes das funções geoespaciais são usados como palavras-chave e realizarão operações espaciais somente se utilizados da maneira pretendida.