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.