读取和访问数据是进行任何复杂的空间分析及空间可视化表达的前提,ArcGIS支持的数据格式比较丰富,下面就这些格式Shapefile、Coverage、Personal Geodatabase、Enterprise Geodatabase、Tin、Raster
、CAD、RDBMS等类型。

一 Shapefile

Shapefile是ESRI提供的一种无拓扑信息的矢量数据格式,一个 Shape file由一组文件组成,其中必要的基本文件包括坐标文件(主文件)(*.shp )、索引文件(*.shx )和属性文件(*.dbf )三个文件。主文件每个记录描述构成一个地理特征(Feature)的所有vertices坐标值;索引文件(.shx)主要包含坐标文件的索引信息;属性文件包含SHP文件中每一Feature的特征属性;

方法1:

//打开工作空间需要使用对应的工作空间工厂,即ShapefielWorkspaceFactoryClass

IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass() ;

//打工作空间工厂的打开方法返回的是一般意义的工作空间,根据具体数据还需要进行接口转换

IWorkspace pWorkSpace= pWorkspaceFactory.OpenFromFile(@"D:\Data" , 0) ;

IFeatureWorkspace pFeatWorkSpace = pWorkSpaceas IFeatureWorkspace

//打开一个要素类

IFeatureClass pFeatureClass = pFeatWorkSpace.OpenFeatureClass("Cities") ;

方法2:

string strShpFile=@"D:\Data\Cities.shp";

IWorkspaceName pWorkspaceName = new WorkspaceNameClass();

pWorkspaceName.WorkspaceFactoryProgIDle="esriDataSourcesFile.ShapefileWorkspaceFactory";

pWorkspaceNamePathName = System.IO.Path.GetDirectoryName(strShpFile);

IName pName = (IName)pWorkspaceNamePathName;

IWorkspace pWorkspace =(IWorkspace)pName.Open();

IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;

IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass(System.IO.Path.GetFileNameWithoutExtension(strShpFile));

二 Coverage

Coverage是ArcInfo workstation的原生数据格式。该格式是基于文件夹存储的,Coverage文件夹可能存储lab.adf、arc.adf、sec.adf、pal.adf、cnt.adf、tic.adf、lnk.adf、bnd.adf等坐标文件,arx.adf、pax.adf等索引文件和pat.adf、aat.adf等属性文件。(.Lab) 表示标识点坐标数据文件 (.Prj) 表示投影信息文件 (.Tol) 表示记录坐标距离容限和悬挂长度的值的文件 (.Arx) 表示弧段索引文件 (.Cnx) 表示多边形中心点索引文件 (.Pax)表示标识点索引文件 (.arf)表示弧坐标和拓扑关系表 (.cnt)表示多边形中心表 (.log)表示工作空间的日志文件(.msk)表示记录修改过的geometry的信息,重建拓扑时用到。(.pal)表示多边形图形文件 (.pat)表示多边形属性文件 (.arc)表示弧线图形文件 (.aat)表示弧线属性文件 (.bnd)表示边框文件 (.tic)表示控制点文件。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 要素类的代码。

方法1:

IWorkspaceFactory pFactory = new AccessWorkspaceFactoryClass() ;

IWorkspace pWorkspace = pFactory.OpenFromFile(@"D:\ArcTutor\Monto.mdb" , 0) ;

IFeatureWorkspace pFeatWorkspace = pWorkspace as IFeatureWorkspace;

IFeatureClass pFeatureClass = pFeatWorkspace.OpenFeatureClass("Water")

方法2:

string strMdbFile = @"D:\ArcTutor\Monto.mdb";

IWorkspaceName pWorkspaceName = new WorkspaceNameClass();

pWorkspaceName.WorkspaceFactoryProgIDle="esriDataSourcesFile.AccessWorkspaceFactory";

pWorkspaceNamePathName = strMdbFile;

IName pName = (IName)pWorkspaceNamePathName;

IWorkspace pWorkspace =(IWorkspace)pName.Open();

IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;

IFeatureClass pFeatureClass = pFeatureWorkspace.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.mdb;Persist 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 分析、数据处理和空间可视化的,在获取到数据以后可以把数据加到图层里,也可以对数据进行检索或维护等工作。

转载于:https://www.cnblogs.com/lxGIS/p/3725753.html

(转)ArcEngine读取数据(数据访问)相关推荐

  1. ArcEngine读取数据(数据访问)-转载

    原文地址: 读取和访问数据是进行任何复杂的空间分析及空间可视化表达的前提,ArcGIS支持的数据格式比较丰富,下面就这些格式Shapefile.Coverage.Personal Geodatabas ...

  2. java 打开url连接访问不了,android 应用Java自带的HttpURLConnection 连接网络 读取返回数据...

    android 使用Java自带的HttpURLConnection 连接网络 读取返回数据 @Override protected void onCreate(Bundle savedInstanc ...

  3. 操作系统学习:Linux0.12初始化详细流程-进程1调度与读取硬盘数据

    本文参考书籍 1.操作系统真相还原 2.Linux内核完全剖析:基于0.12内核 3.x86汇编语言 从实模式到保护模式 4.Linux内核设计的艺术 ps:基于x86硬件的pc系统 Linux0.1 ...

  4. python读数据-如何用Python读取开放数据?

    当你开始接触丰富多彩的开放数据集时,CSV.JSON和XML等格式名词就会奔涌而来.如何用Python高效地读取它们,为后续的整理和分析做准备呢?本文为你一步步展示过程,你自己也可以动手实践. 需求 ...

  5. python如何读取excel数据-python怎么读取excel中的数值

    最近测试过程中需要用到python读取excel用例数据,于是去了解和学习了下xlrd库,这里只记录使用过程中读取excel数据相关操作. 安装xlrd库(推荐学习:Python视频教程) 可以下载x ...

  6. python 读取二进制数据到可变缓冲区中

    想直接读取二进制数据到一个可变缓冲区中,而不需要做任何的中间复制操作.或者你想原地修改数据并将它写回到一个文件中去. 为了读取数据到一个可变数组中,使用文件对象的readinto() 方法.比如 im ...

  7. readfile读取串口数据_西门子PLC-1200-串口Modbus RTU通讯实例

    西门子PLC-1200的基于232串口的Modbus RTU通讯实例 这里先讲一下Modbus和232,232和485串口是一种串口接法,这种接法实际能实现十几种的协议通讯,有基于串口的Modbus ...

  8. 树莓派 rfid_树莓派工控机做Modbus RTU主站读取RFID数据

    KUNBUS Revpi Core 3是工业级的树莓派,可作为小型的工业PC用,外观十分小巧,操作简单,DIN导轨模块化安装,RevPi core 3能与RevPi IO连接,能实时对这些IO的控制. ...

  9. 如何在QT中读取串口数据

    总是能在别人的博客中学到太多太多,谢谢各位对知识的无私共享,谢谢大家 前言 去年我使用Qt编写串口通信程序时,将自己的学习过程写成了教程(Qt编写串口通信程序全程图文讲解),但是由于时间等原因,我只实 ...

最新文章

  1. 计算约化重叠积分氟化氢HF
  2. 基于Shibbloet实现的SSO单点登录
  3. DCMTK:测试VR类的compare()运算符
  4. ActiveMovie属性说明,使用资料。
  5. vs2019 更新安装错误_本月Windows 10累积更新再出BUG:安装时跳出错误代码
  6. L1正则化与嵌入式特征选择(稀疏性)
  7. 数据结构(C++版) 栈的链接存储结构及实现
  8. 异域linux内核漏洞,Linux内核再现漏洞!这次11年后才发现
  9. Thread与Runnable的区别
  10. Java中的类加载器ClassLoader
  11. 联网时浏览器跳出MSN中国网页
  12. 架构之美 | 按图索骥,就能做好架构图!
  13. 微信小程序毕业设计 基于微信共享小程序系统开题报告
  14. PR 2019 快速入门(8)
  15. 有什么简单办法从格式复杂的 Excel中提取数据
  16. 读《啤酒与尿布》——大型超市购物篮中商品关联性分析
  17. 不使用插件,小程序也能完整的渲染富文本(视频展现,图片自适应)
  18. 苹果手机微信中打开app下载链接跳转不到app store怎么办
  19. 【Linux】僵尸进程(Z状态)和孤儿进程
  20. 【Windows7系统装什么浏览器好用】

热门文章

  1. 字节跳动学习笔记:javaweb商城项目
  2. python【蓝桥杯vip练习题库】ALGO-120 学做菜
  3. Android移动开发之【Android实战项目】DAY9-LineChart的使用
  4. atoi() //把字符串转换成整型数
  5. 开发连接mysql_VC连接Mysql及开发详细指南
  6. java 回调模式_总结!!!总结!!!java回调以及future模式
  7. 网络推广外包之下“真我”徐起表示今年中国区定下进军2000万销量目标
  8. 网络推广专员浅析如何在日常网络推广过程中增加网站转化率?
  9. 网络营销外包专员浅析网络营销外包站内关键词优化技巧(不外传)
  10. 如何有效建设网站外链?