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);
- 本页导读 (1)
- 语法
- 参数
- 描述
- 示例