• 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 示例截图

  • 相关阅读:
    netcore 开发问题整理(图片地址)
    netcore 开发问题整理(下拉框)
    C# 请求网址中汉字的编码转换
    C# 时间戳
    c# 判断指定文件是否存在
    js数组常用方法整理
    服务器断电 Mysql启动失败
    Bean初始化之postProcessBeforeInitialization、afterPropertiesSet、init-method、postProcessAfterInitialization等方法的加载
    Java多线程基础
    Mysql多字段order by用法
  • 原文地址:https://www.cnblogs.com/PIESat/p/12367608.html
Copyright © 2020-2023  润新知