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具有更高的效率、更大的数据支持空间、更广的运行平台。
![PIE SDK打开GDB、Dwg数据 PIE SDK打开GDB、Dwg数据](https://image.shishitao.com:8440/aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTUzMjg4OC8yMDE4MTIvMTUzMjg4OC0yMDE4MTIxOTE0MDM1NjUyMy0yNTc0NDE5MTAucG5n.png?w=700&webp=1)
DWG是AutoCAD的数据格式,它采用点、线、面、文本组合存储的方式存储。
2.2 实现思路及原理说明
第一步
|
通过文件路径打开数据集
|
第二步
|
进行多数据集接口转换
|
第三步
|
通过多数据集创建多图层
|
2.3 核心接口与方法
接口/类
|
方法
|
说明
|
DataSource.DatasetFactory
|
OpenDataset
|
打开数据集
|
Carto.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
FolderBrowserDialog fb = new FolderBrowserDialog();
fb.Description = "File GDB(*.gdb) | *.gdb";
if (fb.ShowDialog() != DialogResult.OK) return;
//打开数据集,当GDB中只有一个图层或无图层时,均返回空值
IMultiDataset multiDataset = DatasetFactory.OpenDataset(fb.SelectedPath, OpenMode.ReadOnly) as IMultiDataset;
if (multiDataset == null)
{
//创建图层
ILayer player = PIE.Carto.LayerFactory.CreateDefaultLayer(fb.SelectedPath);
if(player == null) return;
// 添加图层到地图并刷新
mapControlMain.FocusMap.AddLayer(player);
mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
}
else
{
//创建图层
IMultiLayer multiLayer = LayerFactory.CreateDefaultMultiLayer(multiDataset);
if (multiLayer == null) return;
// 添加图层到地图并刷新
mapControlMain.FocusMap.AddLayer(multiLayer as ILayer); mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
}
(方法二)打开Personal GDB和Dwg
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Personal GDB数据|*.mdb|Dwg数据|*.dwg";
if (openFileDialog.ShowDialog() != DialogResult.OK) return;
//创建数据集
IMultiDataset multiDataset = PIE.DataSource.DatasetFactory.OpenDataset(openFileDialog.FileName,OpenMode.ReadOnly) as IMultiDataset;
if (multiDataset == null) return;
//创建图层
IMultiLayer multiLayer = PIE.Carto.LayerFactory.CreateDefaultMultiLayer(multiDataset);
if (multiLayer == null) return;
// 添加图层到地图并刷新
mapControlMain.FocusMap.AddLayer(multiLayer as ILayer);
mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
|
2.5 示例截图
![PIE SDK打开GDB、Dwg数据 PIE SDK打开GDB、Dwg数据](https://image.shishitao.com:8440/aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTUzMjg4OC8yMDE4MTIvMTUzMjg4OC0yMDE4MTIxOTE0MDQzMDgxMC0yMTk5OTAzNTIucG5n.png?w=700&webp=1)
![PIE SDK打开GDB、Dwg数据 PIE SDK打开GDB、Dwg数据](https://image.shishitao.com:8440/aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTUzMjg4OC8yMDE4MTIvMTUzMjg4OC0yMDE4MTIxOTE0MDQ0NTA2NC0xMTk2NDI2NjE4LnBuZw%3D%3D.png?w=700&webp=1)