zoukankan      html  css  js  c++  java
  • PIE SDK打开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 核心接口与方法

    接口/类

    方法

    说明

    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 示例截图

     

  • 相关阅读:
    jQuery before 和 after
    pm2常用的命令
    git 常见命令
    Number 和 parseInt 区别
    枚举创建单例模式 安全 而且利用反射也读不到
    spring 的数据库工具类 JDBCTemplate
    阿里druid数据库连接及配置文件
    java C3P0连接数据库
    JDBC利用.properties文件连接数据库
    JDBC工具类的使用
  • 原文地址:https://www.cnblogs.com/PIESat/p/10142886.html
Copyright © 2011-2022 走看看