zoukankan      html  css  js  c++  java
  • 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 示例截图

  • 相关阅读:
    table标签去除默认边框
    自定义矢量图
    ClickJacking(点击劫持)
    css 字体不撑开默认块级元素问题
    meate 标签使用介绍
    intellij IDEA15 设置背景颜色
    JS 浮点数运算丢失精度解决方案
    IDEA 滚动条跳动问题
    JS
    异步变同步
  • 原文地址:https://www.cnblogs.com/PIESat/p/12367608.html
Copyright © 2011-2022 走看看