Babelfish 支持地理空间数据类型
从 3.5.0 和 4.1.0 版本开始,Babelfish 包括对以下两种空间数据类型的支持:
-
几何数据类型 – 这种数据类型用于存储平面或欧几里得(扁平地球)数据。
-
地理数据类型 – 这种数据类型用于存储椭圆或圆地球数据,例如 GPS 纬度和经度坐标。
这些数据类型允许存储和操作空间数据,但有限制。
了解 Babelfish 中的地理空间数据类型
各种数据库对象(例如视图、过程和表)都支持地理空间数据类型。
-
支持二维点数据类型,以便将位置数据存储为由纬度、经度和有效的空间参考系统标识符(SRID)定义的点。
-
通过 JDBC、ODBC、DOTNET 和 PYTHON 等驱动程序连接到 Babelfish 的应用程序可以利用此地理空间功能。
Babelfish 中支持的几何数据类型函数
STGeomFromText (
geometry_tagged_text
, SRID) – 使用熟知文本(WKT)表示法创建几何实例。STPointFromText (
point_tagged_text
, SRID) – 使用 WKT 表示法创建点实例。-
Point (X, Y, SRID) – 使用 x 和 y 坐标的浮点值创建点实例。
-
<geometry_instance>.STAsText ( ) – 从几何实例中提取 WKT 表示。
-
<geometry_instance>.STDistance (other_geometry) – 计算两个几何实例之间的距离。
-
<geometry_instance>.STX – 提取几何实例的 X 坐标(经度)。
-
<geometry_instance>.STY – 提取几何实例的 Y 坐标(纬度)。
Babelfish 支持的地理数据类型函数
-
STGeomFromText (
geography_tagged_text
, SRID) – 使用 WKT 表示法创建地理实例。 -
STPointFromText (
point_tagged_text
, SRID) – 使用 WKT 表示法创建点实例。 -
Point (Lat, Long, SRID) – 使用纬度和经度的浮点值创建点实例。
-
<geography_instance>.STAsText ( ) – 从地理实例中提取 WKT 表示。
-
<geography_instance>.STDistance (other_geography) – 计算两个地理实例之间的距离。
-
<geography_instance>.Lat – 提取地理实例的纬度值。
-
<geography_instance>.Long – 提取地理实例的经度值。
Babelfish 中对地理空间数据类型的限制
-
目前,Babelfish 不支持更高级功能,例如用于地理空间数据类型的点实例的 Z-M 标志。
-
目前不支持点实例以外的几何类型:
LineString
CircularString
CompoundCurve
Polygon
CurvePolygon
MultiPoint
MultiLineString
MultiPolygon
GeometryCollection
目前,地理空间数据类型不支持空间索引。
目前,这些数据类型仅支持这些列出的函数。有关更多信息,请参阅 Babelfish 中支持的几何数据类型函数和 Babelfish 支持的地理数据类型函数。
与 T-SQL 相比,地理数据的 STDistance 函数输出可能存在细微的精度变化。这是由于底层的 PostGIS 实现。有关更多信息,请参阅 ST_Distance
。 为了获得最佳性能,可使用内置的地理空间数据类型,而无需在 Babelfish 中创建额外的抽象层。
提示
虽然您可以创建自定义数据类型,但不建议基于地理空间数据进行创建。这可能会带来复杂性,并且由于支持有限,可能会导致意外行为。
在 Babelfish 中,地理空间函数名称用作关键字,只有在按预期方式使用时才会执行空间运算。
提示
在 Babelfish 中创建用户定义的函数和过程时,请避免使用与内置地理空间函数相同的名称。如果您有任何同名的现有数据库对象,请使用
sp_rename
重命名它们。