程序集: SuperMap.Data (in SuperMap.Data)
版本: dll
语法
C# |
---|
public enum SpatialIndexType |
成员
成员名称 | 描述 | |
---|---|---|
None | 无空间索引。 无空间索引就是没有空间索引,适用于数据量非常小的情况。 | |
RTree | R树索引。 R树索引是基于磁盘的索引结构,是B树(一维)在高维空间的自然扩展,易于与现有数据库系统集成,能够支持各种类型的空间查询处理操作,在实践中得到了广泛的应用,是目前最流行的空间索引方法之一。 R树空间索引方法是设计一些包含空间对象的矩形,将一些空间位置相近的目标对象,包含在这个矩形内,把这些矩形作为空间索引,它含有所包含的空间对象的指针。例如,A中包含空间对象D、E、F、G,B中包含空间对象H、I、J、K,C中包含空间对象L、M、N。如图所示为R树索引的例子。 在进行空间检索的时候,首先判断哪些矩形落在检索窗口内,再进一步判断哪些目标是被检索的内容。这样可以提高检索速度。 注意: 1、 此索引适合于静态数据(对数据进行浏览、查询操作时)。 2、 此索引支持数据的并发操作。 | |
QTree | 四叉树索引。 四叉树是一种重要的层次化数据集结构,主要用来表达二维坐标下空间层次关系,实际上它是一维二叉树在二维空间的扩展。那么,四叉树索引就是将一张地图四等分,然后再每一个格子中再四等分,逐层细分,直至不能再分。 现在在SuperMap中四叉树最多允许分成13层。基于希尔伯特(Hilbert)编码的排序规则,从四叉树中可确定索引类中每个对象实例的被索引属性值是属于哪个最小范围。从而提高了检索效率。 如图所示为四叉树索引的简单示例图: | |
Tile | 图库索引。 在 SuperMap 中根据数据集的某一属性字段或根据给定的一个范围,将空间对象进行分类,通过索引进行管理已分类的空间对象,以此提高查询检索速度。如下图所示为根据给定范围进行图库索引的示例: 特别地,图库索引可以被缓存到本地(以二进制文件形式体现),这样可更进一步提高查询检索的速度。用户可以自己设定该缓存文件存放的位置,通过修改Environment类中的FileCacheFolder属性将数据集文件缓存到目录。 该图库索引适用于海量数据(即对象数超过百万个的数据)。 | |
MultiLevelGrid | 多级网格索引,又叫动态索引。 多级网格索引结合了 R 树索引与四叉树索引的优点,提供非常好的并发编辑支持,具有很好的普适性。若不能确定数据适用于哪种空间索引,可为其建立多级网格索引。 采用划分多层网格的方式来组织管理数据。网格索引的基本方法是将数据集按照一定的规则划分成相等或不相等的网格,记录每一个地理对象所占的网格位置。在GIS中常用的是规则网格。当用户进行空间查询时,首先计算出用户查询对象所在的网格,通过该网格快速查询所选地理对象。可以优化查询操作。如图所示: 当前版本中,定义网格的索引为一级,二级和三级,每一级都有各自的划分规则,第一级的网格最小,第二级和第三级的网格要相应得比前面的大。 在建立动态索引时,根据具体数据及其分布的情况,网格的大小和网格索引的级数由系统自动给出,不需要用户进行设置。 优点:当数据集在进行浏览操作的时候,动态索引方式的速度略微快些。 注意:此索引类型支持数据集的动态并发编辑。 | |
Primary | 原生索引,创建的是空间索引。 在PostgreSQL空间数据扩展PostGIS中是GIST索引,意思是通用的搜索树。 在SQLServer空间数据扩展SQLSpatial中是多级格网索引。 PostGIS的GIST索引是一种平衡的,树状结构的访问方法,主要使用了B-tree、R-tree、RD-tree索引算法。优点:适用于多维数据类型和集合数据类型,同样适用于其他的数据类型,GIST多字段索引在查询条件中包含索引字段的任何子集都会使用索引扫描。缺点:GIST索引创建耗时较长,占用空间也比较大。 SQLSpatial的多级格网索引最多可以设置四级,每一级按照等分格网的方式依次进行。在创建索引时,可以选择高、中、低三种格网密度,分别对应(4*4)、(8*8)和(16*16),目前默认中格网密度。 | |
GeoHash |
备注
以上几种索引仅适用于矢量数据集。
同时,一个数据集在一种时刻只能使用一种索引,但是索引可以切换,即当对数据集创建完一种索引之后,必须删除旧的索引才能创建新的。数据集处于编辑状态时,系统自动维护当前的索引。特别地,当数据被经过多次编辑后,索引的效率将会受到不同程度的影响,通过系统的判断得知是否要求重新建立空间索引。
注意:
(1)当前版本 UDB、PostgreSQL 和 Kingbase 数据源只支持 R 树索引(RTree),DB2 数据源只支持多级网格索引(Multi_Level_Grid);
(2)数据库中的点数据集均不支持四叉树(QTree)索引和 R 树索引(RTree);
(3)网络数据集不支持任何类型的空间索引;
(4)复合数据集不支持动态索引;
(5)路由数据集不支持图库索引(TILE);
(6)属性数据集不支持任何类型的空间索引;
(7)对于数据库类型的数据源,数据库记录要大于1000条时才可以创建索引。