GanosBase在提供預設空間索引的基礎上,實現了多外包框(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);