Babelfish admite tipos de datos geoespaciales
A partir de las versiones 3.5.0 y 4.1.0, Babelfish admite los dos tipos de datos espaciales siguientes:
-
Tipo de datos geométricos: este tipo de datos está indicado para almacenar datos planares o euclidianos (tierra plana).
-
Tipo de datos geográficos: este tipo de datos está diseñado para almacenar datos elipsoidales o de tierra redonda, como las coordenadas de latitud y longitud de GPS.
Estos tipos de datos permiten el almacenamiento y la manipulación de datos espaciales, pero con limitaciones.
Descripción de los tipos de datos geoespaciales en Babelfish
Los tipos de datos geoespaciales se admiten en varios objetos de bases de datos, como vistas, procedimientos y tablas.
-
Admite el tipo de datos de puntos para almacenar los datos de ubicación como puntos definidos por la latitud, la longitud y un identificador del sistema de referencia espacial (SRID) válido. Un punto puede contener los valores Z (elevación) y M (medida) y puede estar vacío.
-
Admite el tipo de datos de cadena de línea (a partir de la versión 5.4.0) definidos por una secuencia de puntos y los segmentos de línea que los conectan, así como un identificador del sistema de referencia espacial (SRID) válido. Una cadena de línea puede contener puntos con valores Z (elevación) y M (medida) y puede estar vacía.
-
Las aplicaciones que se conectan a Babelfish a través de controladores como JDBC, ODBC, DOTNET y PYTHON pueden utilizar esta característica geoespacial.
Funciones de tipos de datos geométricos admitidos en Babelfish
STGeomFromText (
geometry_tagged_text, SRID): crea una instancia de geometría con la representación Well-Known Text (WKT).STPointFromText (
point_tagged_text, SRID): crea una instancia de punto con la representación WKT.-
Point (X, Y, SRID): crea una instancia de punto con valores flotantes de las coordenadas x e y.
-
<geometry_instance>.STAsText ( ): extrae la representación WKT de la instancia de geometría.
-
<geometry_instance>.STAsBinary ( ): extrae la representación WKB de la instancia de geometría.
-
<geometry_instance>.STArea ( ): calcula la superficie total de la instancia de geometría.
-
<geometry_instance>.STSrid ( ): extrae el identificador de referencia espacial (SRID) de la instancia de geometría.
-
<geometry_instance>.STDimension ( ): recupera la dimensión espacial de la instancia de geometría.
-
<geometry_instance>.STIsEmpty ( ): comprueba si la instancia de geometría está vacía.
-
<geometry_instance>.STIsClosed ( ): comprueba si la instancia de geometría está cerrada.
-
<geometry_instance>.STIsValid ( ): comprueba si la instancia de geometría es válida.
-
<geometry_instance>.STDistance (other_geometry): calcula la distancia entre dos instancias de geometría.
-
<geometry_instance>.STEquals (other_geometry): comprueba si la instancia de geometría representa el mismo conjunto de puntos que otra instancia de geometría.
-
<geometry_instance>.STContains (other_geometry): comprueba si la instancia de geometría contiene la instancia other_geometry.
-
<geometry_instance>.STDisjoint (other_geometry): comprueba si dos instancias de geometría no tienen puntos en común.
-
<geometry_instance>.STIntersects (other_geometry): comprueba si dos instancias de geometría se intersectan espacialmente.
-
<geometry_instance>.STX: extrae la coordenda X (longitud) para la instancia de geometría.
-
<geometry_instance>.STY: extrae la coordenada Y (latitud) para la instancia de geometría.
A partir de las versiones 4.7.0 y 5.3.0, Babelfish admite las funciones de datos espaciales siguientes:
-
<geometry_instance>.M: extrae la coordenada M de la instancia de geometría.
-
<geometry_instance>.Z: extrae la coordenada Z de la instancia de geometría.
-
<geometry_instance>.HasM: comprueba si la instancia de geometría tiene al menos un valor M.
-
<geometry_instance>.HasZ: comprueba si la instancia de geometría tiene al menos un valor Z.
A partir de la versión 5.4.0, Babelfish admite la función de datos espaciales siguientes:
-
STLineFromText (
linestring_tagged_text, SRID): crea una instancia de cadena de línea mediante la representación WKT.
Funciones de tipo de datos geográficos admitidos en Babelfish
-
STGeomFromText (
geometry_tagged_text, SRID): crea una instancia de geometría con la representación WKT. -
STPointFromText (
point_tagged_text, SRID): crea una instancia de punto con la representación WKT. -
Point (Lat, Long, SRID): crea una instancia de punto utilizando valores flotantes de latitud y longitud.
-
<geography_instance>.STAsText ( ): extrae la representación WKT de la instancia de geografía.
-
<geography_instance>.STAsBinary ( ): extrae la representación WKB de la instancia de geografía.
-
<geography_instance>.STArea ( ): calcula el área de la superficie total de la instancia de geografía.
-
<geography_instance>.STSrid ( ): extrae el identificador de referencia espacial (SRID) de la instancia de geografía.
-
<geography_instance>.STDimension ( ): recupera la dimensión espacial de la instancia de geografía.
-
<geography_instance>.STIsEmpty ( ): comprueba si la instancia de geografía está vacía.
-
<geography_instance>.STIsClosed ( ): comprueba si la instancia de geografía está cerrada.
-
<geography_instance>.STIsValid ( ): comprueba si la instancia de geografía es válida.
-
<geography_instance>.STDistance (other_geography): calcula la distancia entre dos instancias de geografía.
-
<geography_instance>.STEquals (other_geography): comprueba si la instancia de geografía representa el mismo conjunto de puntos que otra instancia de geografía.
-
<geography_instance>.STContains (other_geography): comprueba si la instancia de geografía contiene la instancia other_geography.
-
<geography_instance>.STDisjoint (other_geography): comprueba si dos instancias de geografía no tienen puntos en común.
-
<geometry_instance>.STIntersects (other_geography): comprueba si dos instancias de geografía se intersectan espacialmente.
-
<geography_instance>.Lat: extrae el valor de latitud para la instancia de geografía.
-
<geography_instance>.Long: extrae el valor de longitud para la instancia de geografía.
A partir de las versiones 4.7.0 y 5.3.0, Babelfish admite las funciones de datos espaciales siguientes:
-
<geography_instance>.M: extrae la coordenada M de la instancia de geografía.
-
<geography_instance>.Z: extrae la coordenada Z de la instancia de geografía.
-
<geography_instance>.HasM: comprueba si la instancia de geografía tiene al menos un valor M.
-
<geography_instance>.HasZ: comprueba si la instancia de geografía tiene al menos un valor Z.
A partir de la versión 5.4.0, Babelfish admite la función de datos espaciales siguientes:
-
STLineFromText (
linestring_tagged_text, SRID): crea una instancia de cadena de línea mediante la representación WKT.
Limitaciones de Babelfish para tipos de datos geoespaciales
-
Actualmente no se admiten otros tipos de geometría y geografía distintos de las instancias de punto y cadena de línea:
CircularString
CompoundCurve
Polygon
CurvePolygon
MultiPoint
MultiLineString
MultiPolygon
GeometryCollection
Actualmente, la indexación espacial no se admite para los tipos de datos geoespaciales.
Para estos tipos de datos solo se admiten actualmente las funciones enumeradas. Para obtener más información, consulte Funciones de tipos de datos geométricos admitidos en Babelfish y Funciones de tipo de datos geográficos admitidos en Babelfish.
El resultado de la función StDistance para datos geográficos podría tener pequeñas variaciones de precisión en comparación con T-SQL. Esto se debe a la implementación subyacente de PostGIS. Para obtener más información, consulte ST_Distance
El resultado de la función STIsValid para datos de geometría y de geografía podría tener algunas desviaciones en comparación con T-SQL. Por este motivo, las funciones STDistance, STContains, STInstersects, STDisjoint, STDimension, STArea y STEquals también pueden desviarse de T-SQL en algunos casos (devuelve un resultado en lugar de arrojar un error). Esto se debe a la implementación subyacente de PostGIS. Para obtener más información, consulte ST_IsValid
. Para lograr un rendimiento óptimo, utilice los tipos de datos geoespaciales integrados, sin crear capas adicionales de abstracción en Babelfish.
En Babelfish, los nombres de las funciones geoespaciales se utilizan como palabras clave y solo realizarán operaciones espaciales si se utilizan de la forma prevista.