Ganos在提供默认空间索引的基础上,实现了多外包框(Multi-Bounding-Box)空间索引,用于对几何线对象查询的加速。
语法
CREATE INDEX index_name ON table_name USING GIST(geom_column_name operator_class);参数
| 参数名称 | 描述 | 
| geom_column_name | 创建多外包框空间索引目标列名。 | 
| operator_class | 在创建多外包框空间索引时,必须明确指定操作符类。取值范围如下: 
 | 
描述
- 对于点数较多、空间跨度较大的LineString和MultiLineString对象,在构建索引时,会将目标对象进行拆分,构建多外包空间索引。 
- 索引拆分模式由参数ganos.geometry.mbbox_split_mode指定,取值包括 - length和- points,分别对应按对象长度拆分和按点个数拆分,默认为- length,具体规则如下:- 按对象长度拆分时,拆分后每段长度由ganos.geometry.mbbox_split_length指定。拆分段数由ganos.geometry.mbbox_split_max_segments参数指定,若按每段的最小长度值拆分后段数超过该参数值,则拆分后每段长度=总长度/该参数值。 
- 按点个数拆分时,拆分后每段包含点个数由ganos.geometry.mbbox_split_points指定。拆分段数由ganos.geometry.mbbox_split_max_segments参数指定,若按每段的包含点数拆分后段数超过该参数值,则拆分后每段长度包含的点个数=总点数/该参数值。 
 
- 查询时完全透明,无需更改SQL语句。 
示例
- Geometry类型 - CREATE TABLE line_test(id int, geom geometry); INSERT INTO line_test VALUES(1, st_geomfromtext('Linestring(0 1, 0 0, 1 0, 2 1,2 2,3 3)')); --- 创建2D空间索引 CREATE INDEX line_test_gist_geom_2d ON line_test USING GIST(geom); --- 创建2D多外包框空间索引 CREATE INDEX line_test_gist_geom_2dx ON line_test USING GIST(geom gist_geometry_ops_2dx);
- Geography类型 - CREATE TABLE line_test(id int, geog geography); INSERT INTO line_test VALUES(1, st_geogfromtext('Linestring(0 1, 0 0, 1 0, 2 1,2 2,3 3)')); --- 创建3D空间索引 CREATE INDEX line_test_gist_geog_3d ON line_test USING GIST(geog); --- 创建2D多外包框空间索引 CREATE INDEX line_test_gist_geog_2dx ON line_test USING GIST(geog gist_geography_ops_2dx);