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 2D para armazenar dados de localização como pontos definidos por latitude, por longitude e por um identificador de sistema de referência espacial (SRID) válido.
-
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>.STDistance (other_geometry): calcula a distância 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.
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>.STDistance (other_geography): calcula a distância 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.
Limitações no Babelfish para tipos de dados geoespaciais
-
No momento, o Babelfish não comporta recursos mais avançados, como sinalizadores Z-M, para instâncias de pontos de tipos de dados geoespaciais.
-
No momento, não há suporte para tipos de geometria diferentes de instâncias de pontos:
Linestring
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
. Para ter uma performance ideal, use tipos de dados geoespaciais integrados, sem criar camadas adicionais de abstração no Babelfish.
dica
Embora seja possível criar tipos de dados personalizados, não é recomendável criá-los com base em dados geoespaciais. Isso pode introduzir complexidades, podendo ocasionar um comportamento inesperado devido ao suporte limitado.
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.
dica
Ao criar funções e procedimentos definidos pelo usuário no Babelfish, evite usar os mesmos nomes das funções geoespaciais integradas. Se você tiver objetos de banco de dados com os mesmos nomes, use
sp_rename
para renomeá-los.