根据给定的空间索引类型来为矢量数据集创建空间索引。
命名空间:
SuperMap.Data程序集: SuperMap.Data (in SuperMap.Data)
版本: dll
语法
C# |
---|
public bool BuildSpatialIndex( SpatialIndexType spatialIndexType ) |
参数
- spatialIndexType
- Type: SuperMap.Data..::.SpatialIndexType
指定的需要创建空间索引的类型。
返回值
创建索引成功返回 true,否则返回 false。备注
注意:
(1)数据库型数据源中的点数据集不支持四叉树(QTree)索引和R树索引(RTree);
(2)CAD数据集不支持动态索引(Dynamic);
(3)路由数据集不支持图幅索引(Tile);
(4)属性数据集、模型数据集不支持任何类型的空间索引;
(5)对于数据库类型的数据源,数据库记录要大于1000条时才可以建空间索引。
有关空间索引类型请参见SpatialIndexType枚举类型说明。
本操作需要在数据集关闭状态时进行,如当前数据集仍然打开,则抛出InvalidOperationException非法操作异常。
示例
以下代码示范判断某数据集的空间索引是否需要重建,如果需要重建,建立一个 R 树索引,如果不需重建,则判断现有数据集是否支持动态索引。
假设打开一个工作空间 workspace 对象,工作空间中存在一个数据源 datasource 对象。
CopyC#
public void TestBuildSpatialIndex(Workspace workspace, Datasource datasource) { // 判断此数据集的空间索引是否需要重建,如果需要重建,建立一个 R 树索引,如果不需重建,则判断现有数据集是否支持动态索引 if (datasetVector.IsSpatialIndexDirty) { // 取出数据源中名为 "World" 的矢量数据集(datasetVector) DatasetVector datasetVector = (DatasetVector)datasource.Datasets["World"]; // 删除已存在的索引 datasetVector.DropSpatialIndex(); datasetVector.Close(); // 重建 R 树索引 if (datasetVector.BuildSpatialIndex(SpatialIndexType.RTree)) { SpatialIndexType spatialindextype = datasetVector.SpatialIndexType; Console.WriteLine("新建空间索引的类型为:" + spatialindextype); } } else { // 如果不需要重建,判断现有数据集是否支持动态索引 if (datasetVector.IsSpatialIndexTypeSupported(SpatialIndexType.MultiLevelGrid)) { Console.WriteLine("该数据集支持动态索引"); } else { Console.WriteLine("该数据集不支持动态索引"); } } }