PIE-SDK For C++打开GDB、Dwg数据

1.功能简介

  目前不同的GIS软件平台具有自己独特支持的数据格式,如ESRIFile GeoDataBasePersonal GeoDataBaseMapInfomif数据、AutoCADDWG数据、GoogleKmlKmz数据等,PIE对这些常用软件的数据格式都进行了支持,能够顺利的进行浏览查看。

2.功能实现说明

2.1 数据格式介绍

        File GeoDataBasePersonal GeoDataBaseESRI的本地数据存储格式,其中File GDB以文件方式存储,Personal GDB则为一个MS-Access mdb数据库, FGDBPGDB具有更高的效率、更大的数据支持空间、更广的运行平台。

        DWGAutoCAD的数据格式,它采用点、线、面、文本组合存储的方式存储。

2.2 实现思路及原理说明

第一步

通过文件路径打开数据集

第二步

进行多数据集接口转换

第三步

通过多数据集创建多图层

2.3 核心接口与方法

接口/

方法

说明

SysDataSource::DatasetFactory

OpenDataset

打开数据集

SysCarto::LayerFactory

CreateDefaultMultiLayer

创建多图层

CreateDefaultLayer

创建图层

2.4 示例代码

项目路径

百度云盘地址下/PIE示例程序/03.数据加载/04.打开GDB数据

数据路径

百度云盘地址下/PIE示例数据/矢量数据/FGDB/China.gdb

百度云盘地址下/PIE示例数据/矢量数据/PGDB/China.mdb

百度云盘地址下/PIE示例数据/矢量数据/DWG/China.dwg

视频路径

百度云盘地址下/PIE视频教程/03.数据加载/04.打开GDB数据.avi

示例代码

(方法一)打开File GeoDatabase

    QString file_path = QFileDialog::getExistingDirectory(nullptr, "请选择文件路径...", "./");

    if (file_path.isEmpty()) return;

    

    SysCarto::LayerPtr fgdbLayer = SysCarto::LayerFactory::Instance()->CreateDefaultLayer(file_path);

    if (fgdbLayer == nullptr) return;

    m_ptrHookHelper->GetFocusMap()->AddLayer(fgdbLayer);

    m_ptrHookHelper->GetActiveView()->Refresh();

 

(方法二)打开Personal GDBDwg

注:打开MDB需要Microsoft Access环境,否则打开MDB会失败

    QString filter = "Personal GDB数据 (*.mdb);;Dwg数据 (*.dwg)";

    QString lstFile = QFileDialog::getOpenFileName(nullptr, "添加数据", "", filter);

    if (lstFile==nullptr) return;

    

    SysDataSource::MultiDatasetPtr dataSetPtr = SysDataSource::DatasetFactory::Instance()->OpenDataset(lstFile, ysDataSource::GA_ReadOnly);

    if (dataSetPtr==nullptr) return;

      

    SysCarto::LayerPtr multiLayer = SysCarto::LayerFactory::Instance()->CreateDefaultMultiLayer(dataSetPtr);

    if (multilayer==nullptr) return;

      

    m_ptrHookHelper->GetFocusMap()->AddLayer(multiLayer);

    m_ptrHookHelper->GetActiveView()->Refresh();

2.5 示例截图

相关文章