ArcGIS Engine+拓扑操作

简介: ///  /// 建立拓扑 ///  /// 目标数据集 /// 拓扑名称  public void CreateTopology(IFeatureDataset featureDataset, string topologyName)  { // 建立一个空拓扑(拓扑名称、获得数据集的...
///   <summary>   ///  建立拓扑  ///   </summary>   ///   <param name="featureDataset"> 目标数据集 </param>   ///   <param name="topologyName"> 拓扑名称 </param>  
public void CreateTopology(IFeatureDataset featureDataset, string topologyName) 
{ // 建立一个空拓扑(拓扑名称、获得数据集的XY容差作为拓扑容差) 
ITopologyContainer topologyContainer = (ITopologyContainer)featureDataset; 
ITopology topology = topologyContainer.CreateTopology(topologyName,
topologyContainer.DefaultClusterTolerance, - 1""); 
//  获得“Roads”线状要素类加入到拓扑当中,拓扑等级为1 
IFeatureClassContainer featureclassContainer = (IFeatureClassContainer)featureDataset;
 IFeatureClass featureClass = featureclassContainer.get_ClassByName("Roads");
 topology.AddClass(featureClass, 5, 1, 1, false);  //  建立一个拓扑规则(线丌重合) 
ItopologyRuleContainer topologyRuleContainer = (ITopologyRuleContainer)topology; 
ITopologyRule topologyRule = new TopologyRuleClass();
 topologyRule.TopologyRuleType = esriTopologyRuleType.esriTRTLineNoOverlap;
 topologyRule.OriginClassID = featureClass.ObjectClassID; 
topologyRule.AllOriginSubtypes = true; topologyRule.Name = "Roads No Overlap";  //  把建立好的拓扑规则添加到拓扑中 
if (topologyRuleContainer.get_CanAddRule(topologyRule)) 
{ topologyRuleContainer.AddRule(topologyRule); } 
//  验证拓扑 IGeoDataset geoDataset = (IGeoDataset)topology; 
// 根据拓扑对象获得范围 IPolygon searchArea = new PolygonClass(); 
ISegmentCollection segmentCollection = (ISegmentCollection)searchArea; 
segmentCollection.SetRectangle(geoDataset.Extent);  //  获得整个拓扑中的“脏区” 
IPolygon dirtyArea = topology.get_DirtyArea(searchArea);  //  验证“脏区” 
IEnvelope dirtyAreaEnvelope = dirtyArea.Envelope; topology.ValidateTopology(dirtyAreaEnvelope);
相关文章
|
9月前
|
数据可视化 定位技术
ArcGIS应用基础3 属性表的操作-以人口密度分布图为例
😀在本文中,作者以人口密度分布图为例,详细讲解了属性表的连接、字段添加和计算等功能,最终将人口密度可视化到地图上进行了底图整饰输出。
167 0
|
4月前
|
算法 定位技术 Python
ArcGIS中ArcMap栅格重采样操作与算法选择
ArcGIS中ArcMap栅格重采样操作与算法选择
|
9月前
|
存储 C语言
ArcGIS:Excel/Txt 文件生成点图层、属性表编辑的基本方法、属性表之间的连接(合并)和关联的操作、属性表的字段计算器的使用
ArcGIS:Excel/Txt 文件生成点图层、属性表编辑的基本方法、属性表之间的连接(合并)和关联的操作、属性表的字段计算器的使用
179 0
|
9月前
|
SQL 开发框架 数据可视化
ArcGIS Engine学习系列1 AE基础介绍
市面上AE教程大致到ArcGIS10.2,ESRI宣布从ArcGIS10.5开始便停止AE的更新,使用AO做开发,初学者可以在学习C#语言后,从AE入门,逐渐过度到AO。不同版本下AE数据类型数量Enums:枚举类型,用于实现一些定义的内容Structs:结构体Interfaces:接口Classes:类AE开发中,为了更好地管理COM对象,ESRI将这些COM对象放到不同的组件库中。
202 0
|
定位技术
ArcGIS Engine中的Symbols详解
本文由本人翻译ESRI官方帮助文档。尊重劳动成果,转载请注明来源。 Symbols     ArcObjects用了三种类型的Symbol(符号样式)来绘制图形特征:marker symbols(标记符号),line symbols(线符号),和fill symbols(填充符号)。
832 0
|
定位技术 C# C++
VC2010+ArcGIS Engine 10.1 开发(一)
                      使用MFC(VS2010)开发ArcGIS Engine 10.1 网上C#结合ArcGIS Engine的资料简直太多了,多的都无法形容,但是C++的却很少,前一段时间不断的有人问在VC中如何开发ArcGI...
1086 0
|
C# 定位技术
VC2010+ArcGIS Engine 10.1 开发(二)
采用ActiveX控件插入的方式 上面我们是通过代码直接将地图控件放到界面上,这种有一个不好的地方就是,如果我们要设置控件的一些样式和视觉效果,我们要自己写很多代码,在C#中我们就很容易,其实在VC中也可以采用这种方式,下来我介绍下: 插入控件 在Vi...
824 0
|
C++ 容器
Qt+ArcGIS Engine 10.1 开发(二)
ArcGIS Engine+Qt(GUI开发,使用Qt提供的方法) 上面的这种方法,因为不能调试,所以我相信你不会喜欢,其实我也不喜欢,那我们就用这种方式吧,这种方式不需要上面提到的dll,因此也不需要额外的配置。
903 0
|
C++
ArcGIS Engine 10报错:ArcGIS version not specified...
        ArcGIS Engine 10桌面应用程序第一次开发,于是使用VS创建一个简单的AE应用程序,然后拖放一个toolbar、LicenseControl以及MapControl控件。
761 0
|
分布式数据库 数据库
ArcGIS Engine+分布式数据库操作
我们知道Geodatabase的分布式数据库可以在线也可以离线,而在线和离线的接口是不同的,这是因为两者的操作过程不一样,我们看一下两者的区别:                                                                             ...
728 0