文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>ArcEngine点滴2(C#读取Coverage数据)

ArcEngine点滴2(C#读取Coverage数据)

时间:2011-04-24  来源:liuyh208

1、Coverage简要说明:
Coverage 是ArcInfo workstation 的原生数据格式,是ESRI的一种地理关系数据模型,它利用分离的系统来存储空间数据和属性数据,它是一个集合,它可以包含一个或多个要素类,支持三种基本拓扑关系:连接性、面定义、邻接性。一般的GIS原理书中都有它的原理论述。数据结构复杂,属性缺省存储在Info表中。目前ArcGIS中仍然有一些分析操作只能基于这种数据格式进行操作。coverage 是一个非常成功的早期地理数据模型,二十多年来深受用户欢迎,很多早期的数据都是 coverage 格式的。ESRI 不公开 coverage 的数据格式,但是提供了 coverage 格式转换的一个交换文件(interchange file,即 E00),并公开数据格式,这样就方便了 coverage 数据与其他格式的数据之间的转换。
2、读取coverage数据
///
///
///
///
路径 ///
图层名称 ///
public IList OpenFeatureClass(string stringPath,string layerName)
{
//判断路径是否存在,不存在创建
bool bl = Directory.Exists(stringPath);
if (!bl)
{
Directory.CreateDirectory(stringPath);
}

IWorkspaceFactory pFactory = new ArcInfoWorkspaceFactoryClass();
IPropertySet pPropertySet = new PropertySetClass();
pPropertySet.SetProperty("DATABASE", stringPath);

//打开工作空间
IWorkspace pWorkspace = pFactory.Open(pPropertySet, 0);
//获得所有的要素集
IEnumDataset pEnumDataSet = pWorkspace.get_Datasets(esriDatasetType.esriDTAny);
pEnumDataSet.Reset();

IDataset pds = pEnumDataSet.Next();
while (pds != null)
{
//判断要素集的名称
if (pds.Name.ToLower() == layerName.ToLower())
{
return getFeatureClass(pds, coverageType);
}
pds = pEnumDataSet.Next();
}

throw new Exception(string.Format("不存在名称为 {0} 的图层!",layerName));

}

///
///
///
///
要素类 ///
private IList getFeatureClassList(IDataset ds)
{
if (ds==null)
{
return null;
}
IList pFeatureClassList=new List ();
IEnumDataset pEnumDataSet = ds.Subsets;
pEnumDataSet.Reset();
IDataset pds = pEnumDataSet.Next();
while (pds != null)
{
IFeatureClass pFeatureClass=pds as IFeatureClass;

if (pFeatureClass!=null)
{
pFeatureClassList.Add(pFeatureClass);
}
pds = pEnumDataSet.Next();
}

return pFeatureClassList;

}

相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载