`
dinghy
  • 浏览: 34944 次
  • 性别: Icon_minigender_1
  • 来自: 京广之间
社区版块
存档分类
最新评论

[转]ArcGIS Engine 8种数据

阅读更多

ArcGIS Engine中的8种数据访问数据是GIS的基础,访问数据也是进行任何复杂的空间分析及空间可视化表达的前提。ArcGIS支持的数据格式比较丰富,对不同的数据格式支持的程度也有很大差异。本文主要介绍一下以下八种数据格式在ArcGIS Engine中如何访问。对ArcGIS桌面应用有一定了解的读者更适合阅读本文。本文的示例代码是用C#编写。
•        Shapefile
•        Coverage
•        Personal Geodatabase
•        Enterprise Geodatabase
•        Tin
•        Raster
•        CAD
•        RDBMS
在通过ArcGIS访问数据之前,需要首先明确一下什么是"工作空间"。在ArcGIS中工作空间指存放数据的位置,ArcGIS访问数据的机制是先打开数据对应的工作空间,然后用工作空间访问数据。对于不同的数据格式,工作空间的具体情况也是不一样的,下面分别进行阐述。


Shapefile

Shapefile是文件型的空间数据格式,以文件的形式在磁盘上进行存储空间数据和属性数据。下面的示例代码是打开位于D:\Data文件夹下的文件名为Cities的Shapefile要素类。对于Shapefile来说工作空间就是它所在的文件夹,打开工作空间需要使用对应的工作空间工厂,即ShapefileWorkspaceFactoryClass,然后再调用IWorkspaceFactory的OpenFromFile方法就可以得到一个工作空间了,这也是设计模式中工厂方法的体现。工作空间工厂的打开方法返回的是一般意义的工作空间,根据具体数据还需要进行接口转换,因为Shapefile是矢量数据,所以把工作空间接口跳转到IFeatureWorkspace,从而读取其中的要素类,这一点对于接下来的几个数据格式也是同样的打开方式。
IWorkspaceFactory pWorkspaceFactory;
pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
IFeatureWorkspace pFeatWS;
pFeatWS = pWorkspaceFactory.OpenFromFile(@"D:\Data\", 0) as IFeatureWorkspace;
//打开一个要素类
IFeatureClass pFeatureClass = pFeatWS.OpenFeatureClass("Cities");

Coverage

Coverage是ArcInfo workstation的原生数据格式。该格式是基于文件夹存储的,是因为在windows资源管理器下,它的空间信息和属性信息是分别存放在两个文件夹里。coverage是一个非常成功的早期地理数据模型,二十多年来深受用户欢迎,很多早期的数据都是coverage格式的。ESRI不公开coverage的数据格式,但是提供了coverage格式转换的一个交换文件(interchange file,即E00),并公开数据格式。但是ESRI为推广其第三代数据模型geodatabase,从ArcGIS 8.3版本开始,屏蔽了对coverage的编辑功能。如果需要使用coverage格式的数据,可以安装ArcInfo workstation,或者将coverage数据转换为其他可编辑的数据格式。Coverage是一个集合,它可以包含一个或多个要素类。 Coverage数据的工作空间也是它所在的文件夹;由于Coverage可以包含多个要素类,得到工作空间后在打开具体的要素类时可以用"Coverage名称:要素类名称",例如下面代码中的"basin:polygon"。
IWorkspaceFactory pFactory = new ArcInfoWorkspaceFactoryClass();
IWorkspace pWorkspace = pFactory.OpenFromFile(@"D:\ArcTutor\TopologyData", 0);
IFeatureWorkspace pFeatWorkspace = pWorkspace as IFeatureWorkspace;
IFeatureClass pFeatureClass = pFeatWorkspace.OpenFeatureClass("basin:polygon");

Personal Geodatabase

Geodatabase作为ArcGIS的原生数据格式,体现了很多第三代地理数据模型的优势。Personal Geodatabase基于Microsoft Access一体化存储空间数据和属性数据。Enterprise Geodatabase通过大型关系数据库+ArcSDE实现,ArcSDE作为中间件把关系数据库中的普通表转化为空间对象。Personal Geodatabase数据的工作空间指的是扩展名为mdb的文件。以下是打开位于Monto.mdb中的Water要素类的代码。
IWorkspaceFactory pFactory = new AccessWorkspaceFactoryClass();
IWorkspace pWorkspace = pFactory.OpenFromFile(@"D:\ArcTutor\Monto.mdb", 0);
IFeatureWorkspace pFeatWorkspace = pWorkspace as IFeatureWorkspace;
IFeatureClass pFeatureClass = pFeatWorkspace.OpenFeatureClass("Water")


Enterprise Geodatabase

ArcSDE(Enterprise Geodatabase)对应的工作空间为数据库连接,关系数据库是Oracle时连接参数需要五个,分别是SERVER、INSTANCE、USER、PASSWORD、VERSION。SERVER指服务器的主机名,INSTANCE指服务名或端口号,USER是数据库的用户名,PASSWORD数据库对应用户的密码,VERSION指Enterprise Geodatabase多版本机制中的某个版本,默认的一个版本是"SDE.DEFAULT",如果关系数据库是SQL Server,那么连接参数还需要Database参数。下面是打开Enterprise Geodatabase中ControlPoint点要素类的代码,关系数据库为Oracle9i。
IWorkspaceFactory pWorkspaceFactory = new SdeWorkspaceFactoryClass();
IPropertySet propSet = new PropertySetClass();
propSet.SetProperty("SERVER", "actc");propSet.SetProperty("INSTANCE", "5151");
propSet.SetProperty("USER", "apdm");
propSet.SetProperty("PASSWORD", "apdm");
propSet.SetProperty("VERSION", "SDE.DEFAULT");
IWorkspace pWorkspace = pWorkspaceFactory.Open(propSet, 0);
IFeatureWorkspace pFeatWS = pWorkspace as IFeatureWorkspace;
IFeatureClass pFeatureClass= pFeatWS.OpenFeatureClass("ControlPoint");

TIN

TIN全称不规则三角网,也叫不规则三角表面,采用一系列不规则的三角点来建立表面。例如,每一个采样点有一对x,y坐标和一个表面值(z值),这些点被一组互不重叠的三角形的边所连接,从而构成一个表面。TIN数据是空间分析和三维分析重要的数据格式,以文件的形式在磁盘上存储。TIN的工作空间是所在的文件夹,下面代码是打开D:\ArcTutor\3DAnalyst文件夹下名称为mal的TIN。
IWorkspaceFactory pWSFact = new TinWorkspaceFactoryClass();
IWorkspace pWS = pWSFact.OpenFromFile(@"D:\ArcTutor\3DAnalyst\", 0);
ITinWorkspace pTinWS = pWS as ITinWorkspace;
ITin pTin = pTinWS.OpenTin("mal");

Raster

栅格数据也是GIS数据中很重要的一部分,ArcGIS中最常用的文件型有GRID、TIFF、ERDAS IMAGE等,这几种栅格数据的工作空间也是所在的文件夹。打开栅格数据时需要使用栅格工作空间工厂(RasterWorkspaceFactory),然后再使用IRasterWorkspace接口的打开栅格数据集方法即可打开一个栅格数据集。在打开栅格数据集时,如果数据格式为是ESRI GRID,那么OpenRasterDataset()方法的参数为栅格要素集的名称,如果数据格式为TIFF格式,那么该方法的参数为完整的文件名,即要加上.tif扩展名,例如OpenRasterDataset("hillshade.tif")。下面代码为打开GRID格式的栅格数据。
IWorkspaceFactory rasterWorkspaceFactory = new RasterWorkspaceFactoryClass();
IRasterWorkspace rasterWorkspace = rasterWorkspaceFactory.OpenFromFile(@"D:\data\grid", 0) as IRasterWorkspace;
IRasterDataset rasterDataset= rasterWorkspace.OpenRasterDataset("ca_hillshade")

CAD

CAD数据也可以通过AO直接访问,访问CAD数据的方式与Coverage类似,但是注意要使用CAD的工作空间工厂,以下是打开一个dxf的CAD数据,在打开要素类时使用"cad文件名:要素类名称",注意cad文件名要包含扩展名,否则会报错。以下代码是打开位于D:\ArcTutor\Editor\ExerciseData\EditingFeatures文件夹下的buildings.dxf中的多边形要素类。
IWorkspaceFactory pCadwf = new CadWorkspaceFactoryClass();
IWorkspace pWS = pCadwf.OpenFromFile(@"D:\ArcTutor\Editor\ExerciseData\EditingFeatures", 0);
IFeatureWorkspace pCadFWS = pWS as IFeatureWorkspace;
IFeatureClass pFeatClass = pCadFWS.OpenFeatureClass("buildings.dxf:polygon");

RDBMS
一般关系表中的数据也可以通过ArcGIS直接读取,这为数据的共享提供了极大的便利,对于一些业务上的非空间数据,通过使用OLE方式可以很方便的实现数据访问,业务数据可以位于各种关系数据库中,以下代码是访问位于Microsoft Access中的Custom表,当然也可以访问Oralce或SQL Server中的数据,只要变化以下连接字符串(CONNECTSTRING)就可以了。
//创建一个连接
IPropertySet pPropset;pPropset = new PropertySetClass();
pPropset.SetProperty("CONNECTSTRING",@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Company.mdbl\ersist Security Info=False");
//创建一个新的OleDB工作空间并打开
IWorkspaceFactory pWorkspaceFact;
IFeatureWorkspace pFeatWorkspace;
pWorkspaceFact = new OLEDBWorkspaceFactoryClass();
pFeatWorkspace = pWorkspaceFact.Open(pPropset, 0) as IFeatureWorkspace;
ITable pTTable = pFeatWorkspace.OpenTable("Custom");

以上为ArcGIS最常用的几种数据的访问方法,访问数据进行GIS分析、数据处理和空间可视化的,在获取到数据以后可以把数据加到图层里,也可以对数据进行检索或维护等工作。

分享到:
评论

相关推荐

    arcgisengine5种数据源加载

    在这个场景下,"arcgisengine5种数据源加载"指的是使用ArcGIS Engine来加载不同的数据源,以便在应用中进行地图展示和分析。以下是对这五种数据源及其加载方法的详细解释: 1. **Shapefile数据源**: Shapefile是...

    ArcGIS Engine中的数据操作

    接下来是“ArcEngine数据删除几种方法和性能比较”。在处理大量数据时,数据删除的效率至关重要。ArcGIS Engine提供多种删除方法,例如使用SQL查询、通过图层选择或通过图斑ID。每种方法的性能可能因数据结构和操作...

    ArcGIS Engine空间分析Sample

    结合ArcGIS Engine,开发者可以构建具有专业地图显示、数据编辑、空间查询和分析等功能的GIS应用程序。 ArcGIS Engine的核心组件之一是空间分析工具。空间分析是GIS的重要组成部分,它通过数学模型和算法对地理空间...

    ArcGIS-Engine+C#-初学者实例代码.zip_ArcGISEngine_HWE7_arcgis engine_eng

    ArcGIS Engine提供了TableControl和FieldControl,用于展示和编辑地理数据的属性。通过TableControl,你可以展示多个图层的属性表,并且可以定制列显示、排序、过滤等功能。FieldControl则用于编辑单个字段,支持...

    ArcGIS Engine开发:加载MDB中的数据(C#)

    ArcGIS Engine 是一种广泛应用于 GIS 系统开发的软件开发框架,它提供了强大的空间数据处理和分析能力。在 ArcGIS Engine 开发中,加载空间数据是非常重要的一步,这篇文章将详细介绍如何在 ArcGIS Engine 开发中...

    基于ArcGIS Engine的Excel表格数据导入为Shp数据

    在标题中提到的“基于ArcGIS Engine的Excel表格数据导入为Shp数据”,意味着我们不再需要通过ArcGIS Desktop等图形用户界面进行繁琐的数据导出步骤,而是可以直接在代码层面实现这一转换。这大大提高了工作效率,...

    Arcgis engine 数据 处理

    《ArcGIS Engine数据处理详解》 ArcGIS Engine是一款强大的地理信息系统开发工具,由Esri公司提供,用于构建桌面、Web及移动应用中的GIS功能。它提供了丰富的API和控件,使得开发者可以创建自定义的地图应用,进行...

    ArcGIS Engine 10.3下载

    1. **性能优化**:ArcGIS Engine 10.3在性能上做了很大的提升,尤其是在处理大数据集时的响应速度更快。 2. **新的工具和功能**:该版本增加了许多新工具和功能,例如增强的空间分析工具、更丰富的符号系统等。 3. *...

    ArcGIS Engine开发课程设计源码下载

    ArcGIS Engine允许开发者利用其丰富的地图、空间分析和数据管理功能来创建定制化的GIS解决方案。在这个“ArcGIS Engine开发课程设计源码下载”中,我们很可能会找到一系列的示例代码和项目,帮助学习者深入理解如何...

    发布 ArcGIS Engine应用程序_arcgisengine_发布_arcengine_

    《发布 ArcGIS Engine 应用程序》是 ESRI 官方提供的一份详细文档,主要针对使用 ArcGIS Engine 开发地图应用的用户,旨在指导他们如何成功地将应用程序推向市场或内部部署。ArcGIS Engine 是 ESRI 公司提供的一个...

    ArcGISEngine中创建属性数据表格

    本教程将深入讲解如何在ArcGISEngine中利用C#创建属性数据表格,这对于理解和掌握GIS数据管理至关重要。 首先,了解属性数据是GIS中的核心概念。属性数据存储了地理对象(如点、线、面)的相关信息,如地名、类型、...

    ArcGIS Engine10.0的开发

    开发者可以通过ArcGIS Engine创建数据导入导出工具,实现数据的交换和共享。 此外,ArcGIS Engine提供了事件驱动的编程模式,使得用户与应用的交互更加灵活。例如,MapControl的Click事件可以用于实现点击地图时...

    C# + ARCGis Engine基础教程

    ARCGIS Engine提供了大量的API和控件,用于处理地图数据、图层管理、地理处理、空间分析等功能。学习ARCGIS Engine,你需要理解以下几个关键概念: 1. 地图(Map):地图是ARCGIS Engine应用的基础,包含了一个或多...

    ArcGIS Engine实现WebGIS模型架构研究

    2. **ArcGIS Engine Runtime**:这是运行定制化ArcGISEngine应用程序的运行环境。 通过ArcGIS Engine,开发者能够实现以下功能: - 高效地创建和部署定制化的桌面ArcGIS应用程序。 - 在非GIS为中心的应用程序中...

    arcgis engine开发程序

    在IT行业中,ArcGIS Engine是一种强大的地理信息系统(GIS)开发工具,它允许程序员使用各种编程语言,如C#,来创建定制的GIS应用程序。在这个"arcgis engine开发程序"项目中,我们将深入探讨如何利用ArcGIS Engine...

    ArcGIS Engine 矢量数据的叠加分析实现及应用

    ### ArcGIS Engine 矢量数据的叠加分析实现及应用 #### 一、引言:叠加分析的意义 在地理信息系统(GIS)的应用中,“与某个要素关联的其他要素是什么?”这类问题是常见且重要的。例如,了解某地块属于哪个行政...

    ArcGIS Engine 开发技术ESRI官方代码_C#_arcgisengine_arcgisengine_gis_were

    《ArcGIS Engine开发技术——基于C#的GIS应用实践》 ArcGIS Engine是Esri公司提供的一个强大的开发工具集,用于构建地理信息系统(GIS)应用程序。它为开发者提供了丰富的地图和空间数据处理功能,使开发者能够利用...

    ArcGIS Engine入门教程

    **接口查询(QI)**是一种在ArcGIS Engine中非常重要的技术,允许开发者通过对象的IDispatch指针查询其他接口。这使得开发者能够在不知道对象完整类型的情况下,动态地访问对象的功能。 ##### 对象模型图(OMD) *...

    ArcGIS Engine删除数据几种方法和性能比较

    在ArcGIS Engine中,删除数据是一项常见的操作,通常有多种方法可以实现。下面将详细介绍几种常用的删除方法,并对比它们的性能差异。 1. **查询结果中删除**: 这种方法通过设置一个查询过滤器(`IQueryFilter`)...

    ArcGIS Engine 实现简单的投影转换

    ### ArcGIS Engine 实现简单的投影转换 在地理信息系统(GIS)领域中,...总之,《ArcGIS Engine 实现简单的投影转换》为我们提供了一个很好的起点,帮助我们理解如何利用ArcGIS Engine进行基本的地理空间数据处理。

Global site tag (gtag.js) - Google Analytics