AE加载不同数据的方法(GeoDatabase空间数据管理)

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
简介:

原文 AE加载不同数据的方法(GeoDatabase空间数据管理)

GeoDatabase

先看一下GeoDatabase核心结构模型图:

 

 

1  工作空间工厂WorkspaceFactory对象

   WorkspaceFactory是GeoDatabase的入口,是一个抽象类,拥有很多子类,例如SdeWorkspaceFactory, AccessWorkspaceFactory, ShapfileWorkspaceFactory  CadWorkspaceFactory等

   IWorkspaceFactory接口定义了所有工作空间对象的一般属性和方法

   public IWorkspaceName Create (string parentDirectory,string Name,IPropertySet ConnectionProperties,int hWnd);用于产生一个新的工作空间名称对象,前两个参数是数据库的路径和名称,第三个参数是一个属性集(properset)对象。
   public IWorkspace Open ( IPropertySet ConnectionProperties,int hWnd);打开一个已经存在的工作空间像SDE数据库等;

      public IWorkspace OpenFromFile (string fileName,int hWnd);打开一个文件类型的数据

2 工作空间WorkSpace对象

   Workspace在逻辑上是一个包含空间数据集和非空间数据集的数据容器,数据包括要素类、栅格数据集、表等对象

   Workspace对象主要的一些接口:

        1 IWorkspace接口:定义了一个工作空间最普通的属性和方法。

        2  IFeatureWorkspace接口

        这个接口主要用于管理要素的数据集,如表(Table)、对象类(ObjectClass)、要素类(FeatureClass)、要素数据集(FeatureDataset)和关系类(RelationshipClass)等。

   主要的成员:

 http://img181.poco.cn/mypoco/myphoto/20110318/00/5640523720110318001539062.png?_=1987605

   public IFeatureClass OpenFeatureClass ( string Name) 打开一个已经存在的要素类,无论这个要素类是在工作空间还是在一个要素数据集中
    public IFeatureDataset OpenFeatureDataset (string Name);打开一个已经存在的要素数据集
    public ITable OpenTable (string Name);打开一个已经存在的表; 

3 RasterWorkspace对象

   主要实现了IRasterWorkspace接口

    public IRasterDataset OpenRasterDataset ( string Name);

4 属性集Propertyset对象

  Propertyset对象是一个专门用于设置属性的对象,它是一种name-value对应的集合,类似于Hash表。属性名必须是字符串,属性值可以是字符串、数值或日期也可以是一个对象

  public void SetProperty (string Name, object Value);

5 DataSet数据集对象

   Dataset对象可分为两大类:Table和GeoDataset,GeoDataset是一个抽象类,代表了拥有空间属性的数据集,包括FeatureDataset、要素类FeatureClass、TIN和栅格数据集RasterDataset。

6  FeatureDataset对象

 

实现的主要接口

1 IFeatureDataset接口

      public IEnumDataset Subsets {get;}Datasets contained within this dataset.

2 IFeatureClassContainer接口

   用于管理要素数据集里面的要素类,该接口的ClassByName和Class(index)等属性可以用来获取数据集中的特定的要素类(这里很奇怪在帮助文档中只有属性没有方法但点进去却是一个方法Ok你大概不理解我说的)

       public IFeatureClass get_Class (int ClassIndex);

       public IFeatureClass get_ClassByID (int ID);

      public IFeatureClass get_ClassByName (string Name);

 

例子

1 加载Shapefiles文件

复制代码
OpenFileDialog dlg=new OpenFileDialog();
dlg.Title="打开shapefile文件";
dlg.Filter="(*.shp)|*.shp";
dlg.ShowDialog();
string filename=dlg.FileName;
int index=filename.LastIndexOf(@"\");
string path=filename.Substring(0,index);
string name=filename.Substring(index+1);
IWorkspaceFactory pWsFactory = new ShapefileWorkspaceFactoryClass();
IFeatureWorkspace  pWorkSpace = pWsFactory.OpenFromFile(path, 0) as IFeatureWorkspace;
IFeatureClass pFeatureClass = pWorkSpace.OpenFeatureClass(name);
IFeatureLayer pFeatureLayer = new FeatureLayerClass();
pFeatureLayer.Name = pFeatureClass.AliasName;
pFeatureLayer.FeatureClass = pFeatureClass;
axMapControl1.Map.AddLayer(pFeatureLayer);
axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);
复制代码

  

2.加载栅格数据

复制代码
OpenFileDialog dlg = new OpenFileDialog();
dlg.Title = "打开Raster文件";
dlg.Filter = " Layer File(*.lyr)|*.jpg;*.bmp;*.tiff ";
dlg.ShowDialog();
string filename = dlg.FileName;
int index = filename.LastIndexOf(@"\");
string path = filename.Substring(0, index);
string name = filename.Substring(index + 1);
IWorkspaceFactory pWsFactory =new RasterWorkspaceFactoryClass();
IRasterWorkspace pRasterWorkspace = pWsFactory.OpenFromFile(path, 0) as IRasterWorkspace;
IRasterDataset pRasterDataset = pRasterWorkspace.OpenRasterDataset(name);
IRasterLayer pRasterLayer = new RasterLayerClass();
pRasterLayer.CreateFromDataset(pRasterDataset);
axMapControl1.Map.AddLayer(pRasterLayer);
axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);
复制代码

 

加载CAD数据

复制代码
OpenFileDialog dlg = new OpenFileDialog();
dlg.Title = "打开CAD文件";
dlg.Filter = " CAD(*.dwg)|*.dwg|All Files(*.*)|*.* ";
dlg.ShowDialog();
string filename = dlg.FileName;
int index = filename.LastIndexOf(@"\");
string path = filename.Substring(0, index);
string name = filename.Substring(index + 1);
IWorkspaceFactory pWsFactory = new CadWorkspaceFactoryClass();
IFeatureWorkspace pFeatureWorkspace = pWsFactory.OpenFromFile(path, 0) as IFeatureWorkspace;
IFeatureDataset pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(name);
IFeatureClassContainer pFCContainer = pFeatureDataset as IFeatureClassContainer;
for (int i = 0; i < pFCContainer.ClassCount; i++)
{
    IFeatureClass pFeatureClass = pFCContainer.get_Class(i);
    if (pFeatureClass.FeatureType == esriFeatureType.esriFTCoverageAnnotation)
    {
        IFeatureLayer pFeatureLayer = new CadAnnotationLayerClass();
    }
    else
    {
        IFeatureLayer pFeatureLayer = new FeatureLayerClass();
        pFeatureLayer.FeatureClass = pFeatureClass;
        pFeatureLayer.Name = pFeatureClass.AliasName;
        axMapControl1.Map.AddLayer(pFeatureLayer);
    }
    axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);
复制代码

 

加载PersonGeodatabase数据

复制代码
OpenFileDialog dlg = new OpenFileDialog();
dlg.Title = "打开Geodatabase文件";
dlg.Filter = " Personal Geodatabase(*.mdb)|*.mdb|All Files(*.*)|*.* ";
dlg.ShowDialog();
string path = dlg.FileName;
           
IWorkspaceFactory pAccessWorkspaceFactory;
IFeatureWorkspace pFeatureWorkspace;
IFeatureLayer pFeatureLayer;
IFeatureDataset pFeatureDataset;
pAccessWorkspaceFactory = new AccessWorkspaceFactoryClass();
          
IWorkspace pWorkspace = pAccessWorkspaceFactory.OpenFromFile(path, 0);
IEnumDataset pEnumDataset = pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny);
pEnumDataset.Reset();
IDataset pDataset = pEnumDataset.Next();
           
if (pDataset is IFeatureDataset)
{
    pFeatureWorkspace = (IFeatureWorkspace)pAccessWorkspaceFactory.OpenFromFile(path, 0);
    pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(pDataset.Name);
    IEnumDataset pEnumDataset1 = pFeatureDataset.Subsets;
    pEnumDataset1.Reset();
    IDataset pDataset1 = pEnumDataset1.Next();
   
    if (pDataset1 is IFeatureClass)
    {
        pFeatureLayer = new FeatureLayerClass();
        pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset1.Name);
        pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
        axMapControl1.Map.AddLayer(pFeatureLayer);
        axMapControl1.ActiveView.Refresh();
    }
   
  
}
else
{
    pFeatureWorkspace = (IFeatureWorkspace)pWorkspace;
    pFeatureLayer = new FeatureLayerClass();
    pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset.Name);
    pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
    axMapControl1.Map.AddLayer(pFeatureLayer);
    axMapControl1.ActiveView.Refresh();
}
复制代码
 
 
没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。





    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/6109929.html ,如需转载请自行联系原作者


相关实践学习
MySQL基础-学生管理系统数据库设计
本场景介绍如何使用DMS工具连接RDS,并使用DMS图形化工具创建数据库表。
相关文章
|
4月前
|
物联网 数据管理 Apache
拥抱IoT浪潮,Apache IoTDB如何成为你的智能数据守护者?解锁物联网新纪元的数据管理秘籍!
【8月更文挑战第22天】随着物联网技术的发展,数据量激增对数据库提出新挑战。Apache IoTDB凭借其面向时间序列数据的设计,在IoT领域脱颖而出。相较于传统数据库,IoTDB采用树形数据模型高效管理实时数据,具备轻量级结构与高并发能力,并集成Hadoop/Spark支持复杂分析。在智能城市等场景下,IoTDB能处理如交通流量等数据,为决策提供支持。IoTDB还提供InfluxDB协议适配器简化迁移过程,并支持细致的权限管理确保数据安全。综上所述,IoTDB在IoT数据管理中展现出巨大潜力与竞争力。
113 1
|
5月前
|
SQL NoSQL 数据管理
数据管理DMS使用问题之如何批量导入MongoDB的数据文件
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
|
1月前
|
关系型数据库 分布式数据库 数据库
云栖大会|从数据到决策:AI时代数据库如何实现高效数据管理?
在2024云栖大会「海量数据的高效存储与管理」专场,阿里云瑶池讲师团携手AMD、FunPlus、太美医疗科技、中石化、平安科技以及小赢科技、迅雷集团的资深技术专家深入分享了阿里云在OLTP方向的最新技术进展和行业最佳实践。
|
2月前
|
存储 人工智能 安全
【荣誉奖项】荣获2024数据治理优秀产品!瓴羊Dataphin联合DAMA发布数据管理技能认证
瓴羊Dataphin连续俩年获得DAMA年度优秀数据治理产品奖,本次与DAMA联合发布“DAMA x 瓴羊 数据管理技能认证”,助力提升全民数据素养。
157 0
【荣誉奖项】荣获2024数据治理优秀产品!瓴羊Dataphin联合DAMA发布数据管理技能认证
|
2月前
|
数据采集 安全 数据管理
通信行业数据治理:如何实现高效、安全的数据管理?
在未来的发展中,通信行业的企业应加强数据治理意识,提高数据治理能力;同时,积极开展跨行业的合作创新,共同推动行业的繁荣与发展。相信在不久的将来,通信行业将迎来更加美好的明天。
|
4月前
|
JSON 数据管理 关系型数据库
【Dataphin V3.9】颠覆你的数据管理体验!API数据源接入与集成优化,如何让企业轻松驾驭海量异构数据,实现数据价值最大化?全面解析、实战案例、专业指导,带你解锁数据整合新技能!
【8月更文挑战第15天】随着大数据技术的发展,企业对数据处理的需求不断增长。Dataphin V3.9 版本提供更灵活的数据源接入和高效 API 集成能力,支持 MySQL、Oracle、Hive 等多种数据源,增强 RESTful 和 SOAP API 支持,简化外部数据服务集成。例如,可轻松从 RESTful API 获取销售数据并存储分析。此外,Dataphin V3.9 还提供数据同步工具和丰富的数据治理功能,确保数据质量和一致性,助力企业最大化数据价值。
198 1
|
4月前
|
Java 测试技术 容器
从零到英雄:Struts 2 最佳实践——你的Web应用开发超级变身指南!
【8月更文挑战第31天】《Struts 2 最佳实践:从设计到部署的全流程指南》深入介绍如何利用 Struts 2 框架从项目设计到部署的全流程。从初始化配置到采用 MVC 设计模式,再到性能优化与测试,本书详细讲解了如何构建高效、稳定的 Web 应用。通过最佳实践和代码示例,帮助读者掌握 Struts 2 的核心功能,并确保应用的安全性和可维护性。无论是在项目初期还是后期运维,本书都是不可或缺的参考指南。
52 0
|
4月前
|
SQL 存储 数据管理
掌握SQL Server Integration Services (SSIS)精髓:从零开始构建自动化数据提取、转换与加载(ETL)流程,实现高效数据迁移与集成——轻松上手SSIS打造企业级数据管理利器
【8月更文挑战第31天】SQL Server Integration Services (SSIS) 是 Microsoft 提供的企业级数据集成平台,用于高效完成数据提取、转换和加载(ETL)任务。本文通过简单示例介绍 SSIS 的基本使用方法,包括创建数据包、配置数据源与目标以及自动化执行流程。首先确保安装了 SQL Server Data Tools (SSDT),然后在 Visual Studio 中创建新的 SSIS 项目,通过添加控制流和数据流组件,实现从 CSV 文件到 SQL Server 数据库的数据迁移。
256 0
|
5月前
|
运维 数据管理 数据库
数据管理DMS操作报错合集之数据归档时,遇到报错:"DMS获取内容为空,无须备份",该怎么办
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
|
6月前
|
SQL 关系型数据库 数据管理
数据管理DMS产品使用合集之归档数据至其它MySQL数据库时,如何指定目的库
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
76 1

热门文章

最新文章