多外包框空间索引

更新时间:2025-02-13 02:35:28

Ganos在提供默认空间索引的基础上,实现了多外包框(Multi-Bounding-Box)空间索引,用于对几何线对象查询的加速。

语法

CREATE INDEX index_name ON table_name USING GIST(geom_column_name operator_class);

参数

参数名称

描述

参数名称

描述

geom_column_name

创建多外包框空间索引目标列名。

operator_class

在创建多外包框空间索引时,必须明确指定操作符类。取值范围如下:

  • gist_geometry_ops(默认):对应Geometry类型,用于构建2D空间索引。

  • gist_geometry_ops_2dx:对应Geometry类型,用于构建2D多外包框空间索引。

  • gist_geography_ops(默认):对应Geography类型,用于构建3D空间索引。

  • gist_geography_ops_2dx:对应Geography类型,用于构建2D多外包框空间索引。

描述

  • 对于点数较多、空间跨度较大的LineStringMultiLineString对象,在构建索引时,会将目标对象进行拆分,构建多外包空间索引。

  • 索引拆分模式由参数ganos.geometry.mbbox_split_mode指定,取值包括lengthpoints,分别对应按对象长度拆分和按点个数拆分,默认为length,具体规则如下:

  • 查询时完全透明,无需更改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)
  • 语法
  • 参数
  • 描述
  • 示例