com.supermap.data

类 SpatialIndexType



  • public class SpatialIndexType
    extends Enum

    该类定义了空间索引类型常量。

    空间索引用于提高数据空间查询效率的数据结构。在 SuperMap 中提供了 R 树索引,四叉树索引,图幅索引和多级网格索引。

    以上几种索引仅适用于矢量数据集。

    同时,一个数据集在一种时刻只能使用一种索引,但是索引可以切换,即当对数据集创建完一种索引之后,必须删除旧的索引才能创建新的。数据集处于编辑状态时,系统自动维护当前的索引。特别地,当数据被多次编辑后,索引的效率将会受到不同程度的影响,通过系统的判断得知是否要求重新建立空间索引。

    1. 当前版本 UDB 和 PostgreSQL 数据源只支持 R 树索引(RTree),DB2 数据源只支持多级网格索引(Multi_Level_Grid);
    2. 数据库中的点数据集均不支持四叉树(QTree)索引和 R 树索引(RTree);
    3. 网络数据集不支持任何类型的空间索引;
    4. 复合数据集不支持多级网格索引;
    5. 路由数据集不支持图幅索引(TILE);
    6. 属性数据集不支持任何类型的空间索引;
    7. 对于数据库类型的数据源,数据库记录要大于1000条时才可以创建索引。
    • 字段概要

      字段 
      限定符和类型 字段和说明
      static SpatialIndexType MULTI_LEVEL_GRID
      多级网格索引 多级网格索引结合了 R 树索引与四叉树索引的优点,提供非常好的并发编辑支持,具有很好的普适性。
      static SpatialIndexType NONE
      无空间索引 无空间索引就是没有空间索引,适用于数据量非常小的情况
      static SpatialIndexType QTREE
      四叉树索引 四叉树是一种重要的层次化数据集结构,主要用来表达二维坐标下空间层次关系,实际上它是一维二叉树在二维空间的扩展。
      static SpatialIndexType RTREE
      R树索引 R 树索引是基于磁盘的索引结构,是 B 树(一维)在高维空间的自然扩展,易于与现有数据库系统集成,能够支持各种类型的空间查询处理操作,在实践中得到了广泛的应用,是目前最流行的空间索引方法之一。
      static SpatialIndexType TILE
      图幅索引 在 SuperMap 中根据数据集的某一属性字段或根据给定的一个范围,将空间对象进行分类,通过索引进行管理已分类的空间对象,以此提高查询检索速度。
    • 字段详细资料

      • NONE

        public static final SpatialIndexType NONE
        无空间索引 无空间索引就是没有空间索引,适用于数据量非常小的情况
      • RTREE

        public static final SpatialIndexType RTREE
        R树索引 R 树索引是基于磁盘的索引结构,是 B 树(一维)在高维空间的自然扩展,易于与现有数据库系统集成,能够支持各种类型的空间查询处理操作,在实践中得到了广泛的应用,是目前最流行的空间索引方法之一。R 树空间索引方法是设计一些包含空间对象的矩形,将一些空间位置相近的目标对象,包含在这个矩形内,把这些矩形作为空间索引,它含有所包含的空间对象的指针。例如,A 中包含空间对象 D、E、F、G,B 中包含空间对象 H、I、J、K,C 中包含空间对象 L、M、N。如图所示为 R 树索引的例子。

        在进行空间检索的时候,首先判断哪些矩形落在检索窗口内,再进一步判断哪些目标是被检索的内容。这样可以提高检索速度。 注:

        1.此索引适合于静态数据(对数据进行浏览、查询操作时)。

        2.此索引支持数据的并发操作。

      • QTREE

        public static final SpatialIndexType QTREE
        四叉树索引 四叉树是一种重要的层次化数据集结构,主要用来表达二维坐标下空间层次关系,实际上它是一维二叉树在二维空间的扩展。那么,四叉树索引就是将一张地图四等分,然后再每一个格子中再四等分,逐层细分,直至不能再分。现在在 SuperMap 中四叉树最多允许分成13层。基于希尔伯特(Hilbert)编码的排序规则,从四叉树中可确定索引类中每个对象实例的被索引属性值是属于哪个最小范围。从而提高了检索效率。如图所示为四叉树索引的简单示例图:

      • TILE

        public static final SpatialIndexType TILE
        图幅索引 在 SuperMap 中根据数据集的某一属性字段或根据给定的一个范围,将空间对象进行分类,通过索引进行管理已分类的空间对象,以此提高查询检索速度。如下图所示为根据给定范围进行图幅索引的示例:

        特别地,图幅索引可以被缓存到本地(以二进制文件形式体现),这样可更进一步提高查询检索的速度。用户可以自己设定该缓存文件存放的位置,通过修改 Environment 类中的 getFileCacheFolder 和 setFileCacheFolder 方法将数据集文件缓存到目录。该图幅索引适用于海量数据(即对象数超过百万个的数据)。
      • MULTI_LEVEL_GRID

        public static final SpatialIndexType MULTI_LEVEL_GRID
        多级网格索引

        多级网格索引结合了 R 树索引与四叉树索引的优点,提供非常好的并发编辑支持,具有很好的普适性。若不能确定数据适用于哪种空间索引,可为其建立多级网格索引。

        采用划分多层网格的方式来组织管理数据。网格索引的基本方法是将数据集按照一定的规则划分成相等或不相等的网格,记录每一个地理对象所占的网格位置。在 GIS 中常用的是规则网格。当用户进行空间查询时,首先计算出用户查询对象所在的网格,通过该网格快速查询所选地理对象,可以优化查询操作。

        如图所示:

        当前版本中,定义网格的索引为一级,二级和三级,每一级都有各自的划分规则,第一级的网格最小,第二级和第三级的网格要相应得比前面的大。在建立多级网格索引时,根据具体数据及其分布的情况,网格的大小和网格索引的级数由系统自动给出,不需要用户进行设置。 优点:当数据集在进行浏览操作的时候,多级网格索引方式的速度略微快些。 注意:此索引类型支持数据集的动态并发编辑。