目前不同的GIS软件平台具有自己独特支持的数据格式,如ESRI的File GeoDataBase和Personal GeoDataBase、MapInfo的mif数据、AutoCAD的DWG数据、Google的Kml和Kmz数据等,PIE对这些常用软件的数据格式都进行了支持,能够顺利的进行浏览查看。
File GeoDataBase和Personal GeoDataBase是ESRI的本地数据存储格式,其中File GDB以文件方式存储,Personal GDB则为一个MS-Access 的mdb数据库, FGDB较PGDB具有更高的效率、更大的数据支持空间、更广的运行平台。
DWG是AutoCAD的数据格式,它采用点、线、面、文本组合存储的方式存储。
第一步 | 通过文件路径打开数据集 |
第二步 | 进行多数据集接口转换 |
第三步 | 通过多数据集创建多图层 |
接口/类 | 方法 | 说明 |
SysDataSource::DatasetFactory | OpenDataset | 打开数据集 |
SysCarto::LayerFactory | CreateDefaultMultiLayer | 创建多图层 |
CreateDefaultLayer | 创建图层 |
项目路径 | 百度云盘地址下/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(); |