首页 / 浏览问题 / 组件GIS / 问题详情
vs2012+qt5.2创建数据源并写入图层
17EXP 2017年08月02日
环境已经搭建起来了。

现在就是无法创建一个临时的数据图层。

我试验了两种方法

1

UGWorkspace* m_pWorkspace = qMapControl->GetMap()->GetWorkspace();
UGDataSource *dataSource = m_pWorkspace->GetDataSource(0);  

UGC::UGint gi = dataSource->GetDatasetCount();  //显示数量23

UGDatasetVectorInfo *info =  new UGDatasetVectorInfo();

UGC::UGDataset *pDataset = dataSource->CreateDatasetVector(*info); //pDataset 为NULL

UGC::UGint gi = dataSource->GetDatasetCount();  //依旧23

2 UGDataSourceManager *dsManager = new UGDataSourceManager();
  UGDataSource *dataSource = dsManager->CreateDataSource(UGC::UGEngineType::UDB);

   UGC::UGint gi = dataSource->GetDatasetCount(); //显示数量0

   UGDataset* pDataset

     = dataSource->CreateCollection(g_pointDatasetName,UGC::UGDataset::DatasetType::Point);

UGC::UGint gi = dataSource->GetDatasetCount(); //显示数量0
UGLayer* pLayer = pMap->m_Layers.AddDataset(pDataset, pDataset->GetType());

所以我弄不明白的是pDataset的创建。
而且,找了半天,也没有发现后面如何创建OgdcFieldInfos,如果我要创建出来UGDataset,然后如何创建OgdcFieldInfos,如何往里面SetFieldValue呢?完全不知道如何操作。麻烦给个例子好么?谢谢。

1个回答

UGDatasetVectorInfo  info =  UGDatasetVectorInfo();
    info.m_nType = UGC ::UGDataset ::DatasetType ::Point;
    info .m_nCodecType = UGC ::UGDataCodec::CodecType ::encNONE;
    info .m_strName = _U ("HAHAH");
    UGDatasetVector * data = datasource->CreateDatasetVector (info);

你的info没有设置参数呀,需要设置必须的参数才能创建成功,包括数据集类型,名称等。

创建字段使用UGFieldInfo;然后用UGDatasetVector->CreateField()来创建字段,修改字段值的话用ugrecordset,对字段的增删改查都用的记录集这个类。
4,620EXP 2017年08月02日
...