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 核心接口与方法

接口/类

方法

说明

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

示例代码

 1 (方法一)打开File GeoDatabase
 2 FolderBrowserDialog fb = new FolderBrowserDialog();
 3     fb.Description = "File GDB(*.gdb) | *.gdb";
 4     if (fb.ShowDialog() != DialogResult.OK) return;    
 5     //打开数据集,当GDB中只有一个图层或无图层时,均返回空值
 6     IMultiDataset multiDataset = DatasetFactory.OpenDataset(fb.SelectedPath, OpenMode.ReadOnly) as IMultiDataset;
 7     if (multiDataset == null)
 8     {
 9       //创建图层
10         ILayer player = PIE.Carto.LayerFactory.CreateDefaultLayer(fb.SelectedPath);
11         if(player == null) return;          
12       // 添加图层到地图并刷新
13         mapControlMain.FocusMap.AddLayer(player);
14         mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
15     }
16     else
17     {
18         //创建图层
19         IMultiLayer multiLayer = LayerFactory.CreateDefaultMultiLayer(multiDataset);
20         if (multiLayer == null) return;          
21         // 添加图层到地图并刷新
22         mapControlMain.FocusMap.AddLayer(multiLayer as ILayer);        mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
23 } 
24 
25 (方法二)打开Personal GDB和Dwg
26 OpenFileDialog openFileDialog = new OpenFileDialog();
27     openFileDialog.Filter = "Personal GDB数据|*.mdb|Dwg数据|*.dwg";
28     if (openFileDialog.ShowDialog() != DialogResult.OK)  return;     
29     //创建数据集
30     IMultiDataset multiDataset = PIE.DataSource.DatasetFactory.OpenDataset(openFileDialog.FileName,OpenMode.ReadOnly) as IMultiDataset;
31     if (multiDataset == null)  return;
32       
33     //创建图层
34     IMultiLayer multiLayer = PIE.Carto.LayerFactory.CreateDefaultMultiLayer(multiDataset);
35     if (multiLayer == null) return;       
36     // 添加图层到地图并刷新
37     mapControlMain.FocusMap.AddLayer(multiLayer as ILayer);
38     mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);

View Code

2.5 示例截图

 

版权声明:本文为PIESat原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/PIESat/p/10142886.html