Vertica 实施了多种数据类型,用于存储空间对象、熟知文本 (WKT) 字符串和熟知二进制 (WKB) 表示。这些数据类型包括:
1 - 支持的空间对象
Vertica 支持两种空间数据类型。这些数据类型在表列中存储二维和三维空间对象:
GEOMETRY
:在笛卡尔平面中定义的且坐标表示为 (x,y) 对的空间对象。所有计算均使用笛卡尔坐标。GEOGRAPHY
:在理想球体的表面或在 WGS84 坐标系中定义的空间对象。坐标表示为经度/纬度角度值,单位为度。所有的计算都以米为单位。对于理想球体计算,球体半径为 6371 千米,与地球形状近似。注意
一些空间程序使用椭圆对地球进行建模,从而产生略微不同的数据。
GEOMETRY
或 GEOGRAPHY
数据类型的最大大小为 10,000,000 字节 (10 MB)。不能将任何一种数据类型用作表的主键。
2 - 空间引用标识符 (SRID)
空间参照标识符 (SRID) 为整型值,表示在平面上投影坐标的方法。SRID 是指示在其中定义空间对象的坐标系的元数据。
使用几何实参的地理空间函数必须包含相同的 SRID。如果函数未包含相同的 SRID,查询将会返回错误。
例如,以下查询中的两个点具有不同的 SRID。因此,该查询返回错误:
=> SELECT ST_Distance(ST_GeomFromText('POINT(34 9)',2749), ST_GeomFromText('POINT(70 12)', 3359));
ERROR 5861: Error calling processBlock() in User Function ST_Distance at [src/Distance.cpp:65],
error code: 0, message: Geometries with different SRIDs found: 2749, 3359
支持的 SRID
Vertica 支持派生自 EPSG 标准的 SRID。使用几何实参的地理空间函数在执行计算时必须使用支持的 SRID。SRID 值为 0 至 232-1 是有效的。使用超出此范围的 SRID 执行查询将会返回错误。