博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SuperMap iObjects C++之数据集管理
阅读量:4163 次
发布时间:2019-05-26

本文共 2377 字,大约阅读时间需要 7 分钟。

      数据源UGDatasource通过数据集存储同种类型的空间数据,一个数据源中可以包含多个数据集,该数据源中所有数据集通过一个数据集集合(UGDatasets)进行管理,包括:数据集创建、删除。

SuperMap提供了丰富的数据集类型,包括:矢量数据集(UGDatasetVector)、栅格数据集(UGDatasetGrid)、影像数据集(UGDatasetImage)、拓扑数据集(UGDatasetTopology),所有数据集类型都继承自UGDataset,相关类型的关系图如下所示。
在这里插入图片描述

      数据源中的数据集通过UGDatasets 数据集集合管理,而UGDatasets 实质是UGArray<UGDataset*>,的类型定义。 UGDataset是所有类型数据集的基类。

下面就通过两个简单的示例来介绍如何创建、删除一个新的空数据集;

创建数据集关键步骤:
1.打开一个工作空间,通过工作空间获得新数据集所在的数据源。
2.指定新数据集的相关参数:数据集类型、数据集名称。
3.通过接口UGDatasouce->CreateDatasetVector创建新数据集。
void SampleRun::CreatDataset()
{
//打开工作空间
OpenWorkspace();

//获取第一个数据源UGDataSource *pDataSource = m_pWorkspace->GetDataSource(0);//数据集信息UGDatasetVectorInfo datasetVectorInfo;//类型datasetVectorInfo.m_nType = UGDataset::Point;//名称,必须唯一datasetVectorInfo.m_strName = _U("测试");UGDataset* pDtaset = pDataSource->CreateDatasetVector(datasetVectorInfo);m_pWorkspace->Close();

}

删除数据集关键步骤:

1.打开一个工作空间,通过工作空间获得要删除数据集所在的数据源。
2.通过接口UGDatasouce-> DeleteDataset删除指定名称的数据集。
void SampleRun::DeleteDataset()
{
//打开工作空间
OpenWorkspace();

//获取第一个数据源UGDataSource *pDataSource = m_pWorkspace->GetDataSource(0);if (NULL == pDataSource){    qDebug()<

UGDataset* pDtaset = pDataSource->GetDataset(_U(“测试”));

UGbool isDeleted = pDataSource->DeleteDataset(_U(“测试”));

m_pWorkspace->Close();

}

数据集创建空间索引

      SuperMap SDX + 目前提供了四叉树索引、R 树索引、图库索引和动态索引。四叉树采用改良的希尔伯特编码,对空间数据进行编码,采用数据和索引的一体存储方式。R树索引的数据结构是B树在多维空间的扩展,索引查询效率较高,索引数据和空间数据分开存储。图库索引针对分幅数据效果很好。动态索引是SuperMap GIS新开发的索引,只支持数据库引擎,尽量使用了数据库的查询能力。
一个数据集在一种时刻只能使用一种索引,但是索引可以切换,即当对数据集创建完一种索引之后,必须删除旧的索引才能创建新的。数据集处于编辑状态时,系统自动维护当前的索引。
      备注 1.数据库中的点数据集不支持四叉树(QTree)索引和R树索引(RTree);
2.网络数据集不支持任何类型的空间索引;
3.复合数据集不支持动态索引;
4.路由数据集不支持图库索引(Tile);
5.属性数据集不支持任何类型的空间索引;
6.对于数据库类型的数据源,数据库记录要大于1000条时才可以建索引。
下面示例如何为矢量数据集创建空间索引。
关键步骤:
1.获得工作空间中要创建空间索引的数据集所在的数据源。
2.从数据源中取出目标数据集,得到一个UGDataset对象,并转换为UGDatasetVector矢量数据集对象。
3.通过接口UGDatasetVector->IsOpen判断要创建空间索引的数据集是否为打开状态,因为数据集打开的状态,不能创建空间索引。
4.通过UGSpatialIndexInfo对象设置空间索引创建参数,包括所创建空间索引的类型。
5.通过UGDatasetVector->BuildSpatialIndex接口为矢量数据集创建空间索引。
void SampleRun::CreatSpatialIndex()
{
//打开工作空间
OpenWorkspace();

//获取第一个数据源UGDataSource *pDataSource = m_pWorkspace->GetDataSource(0);//获取名称为“Countries”的矢量数据集用于查询UGDataset *pDataset = pDataSource->GetDataset(_U("Countries"));//强制类型转换UGDatasetVector *pDatasetVector = dynamic_cast
( pDataset);//数据集打开不能创建空间索引if (pDatasetVector->IsOpen()){ qDebug()<
BuildSpatialIndex(info);

}

转载地址:http://gipxi.baihongyu.com/

你可能感兴趣的文章
一位强人写的电子工程师起码技术要求
查看>>
晶振工作原理
查看>>
理解奈奎斯特定理和香农定理
查看>>
如何破解Synplify Pro 9.6.2? (SOC) (Synplify)
查看>>
FPGA查找表
查看>>
锁存器、触发器、寄存器和缓冲器的区别
查看>>
高手经验:一个新手的verilog学习经验
查看>>
如何使用Visual studio C++(VC++)编译C?图解,详!!!
查看>>
如何设计一个合适的系统电源
查看>>
信息类产品检测培训讲义-EN55022
查看>>
信息类产品检测培训讲义-EN55024
查看>>
PHY管理接口(MDIO)
查看>>
高速信号端接技术
查看>>
嵌入式ARM微处理器选型指南
查看>>
硬件芯片选型原理图设计
查看>>
对通用输入输出GPIO的深入理解
查看>>
单片机IO引脚驱动能力的提高
查看>>
巧妙的处理 spring boot中的静态资源
查看>>
MySQL5.7版本sql_mode=only_full_group_by问题解决办法
查看>>
springboot 打包运行
查看>>