PIE-SDK For C++打开GDB、Dwg数据
1.功能简介
目前不同的GIS软件平台具有自己独特支持的数据格式,如ESRI的File GeoDataBase和Personal GeoDataBase、MapInfo的mif数据、AutoCAD的DWG数据、Google的Kml和Kmz数据等,PIE对这些常用软件的数据格式都进行了支持,能够顺利的进行浏览查看。
2.功能实现说明
2.1 数据格式介绍
File GeoDataBase和Personal GeoDataBase是ESRI的本地数据存储格式,其中File GDB以文件方式存储,Personal GDB则为一个MS-Access 的mdb数据库, FGDB较PGDB具有更高的效率、更大的数据支持空间、更广的运行平台。
DWG是AutoCAD的数据格式,它采用点、线、面、文本组合存储的方式存储。
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 GDB和Dwg 注:打开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(); |