ArcGIS中的拓扑修改

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ArcGIS中的拓扑

1、先看看在ArcInfo里面的拓扑的实现:

其中在ArcGIS 8以后,Geodatabase成为一种全新的空间数据模型。它采用一种开放的结构将空间数据(包括:矢量、栅格、影像、三维地形等)及其相关的属性数据统一存放在工业标准的数据库管理系统DBMS中。空间要素类(Feature Class),如:河流、国界、宗地、电杆等,对应了DBMS中的表,而具体的一个要素(Feature)则是表中的一条记录。具有共同空间参考的一组空间要素类又可以组成更大的结构,称为要素数据集合(Feature Data Set)。除了空间要素类以外,Geodatabase中还可以建立关系类、几何网络、定义要素子类型、值域及规则等。所有的要素类均可以借助通用的CASE工具(如:Visio、Rational Rose等)进行模型定义和扩展。

Geodatabase引入了拓扑关系规则。拓扑关系规则可作用于同一要素数据集中的不同要素类或者同一要素类中的不同要素。用户可以指定空间数据必须满足的拓扑关系约束,譬如:要素之间的相邻关系、连接关系、覆盖关系、相交关系、重叠关系等。所有这些关系都对应相应的规则。比如在土地调查规划应用中,两个相邻的地块之间不能有"飞地",我们可以有一条对应的规则:"相邻多边形间不能存在间隙"。再如,当以河流作为国界、省界、或者任何边界时,河流(线状)与界线必须一致,可用规则:"线必须被多边形边线覆盖"。用户通过选择若干规则的组合构成对空间数据必须满足的拓扑关系的灵活指定。为了检查和维护空间数据的拓扑关系正确性,在ArcGIS Desktop中给出了一组(编辑)工具,用于对空间数据根据用户指定的拓扑关系规则进行编辑,并帮助用户及时发现可能存在的拓扑关系错误。

Geodatabase中并不实际保存拓扑关系。不同要素类之间的公共点、公共边等要素是在拓扑编辑过程中动态地检测到的。例如,我们选择一条线并对其进行编辑,此时Geodatabase将自动检测到与此线要素具有公共几何元素的所有其它要素,当我们修改该线要素时,系统自动对所有的公共边和公共点进行维护,以保持其应有的拓扑关系。这种实现方式的好处在于,可以局部、有选择的维护拓扑关系,效率很高。

在拓扑关系类中,除了拓扑关系规则外,还要指定:参与拓扑约束的各要素类,容限值(cluster tolerance),精度等级(coordinate accuracy rank)。其中:容限值指落在以此值为半径的圆形区域内的所有点被看成是一致的,会被捕捉(snap)到一起。精度级别表示每个参与拓扑约束的要素类都可以人为地赋予一

个精度级别,精度级别越高,在容限值范围内需要移动时就越稳定,即:级别低的要向级别高的靠拢。当不同的要素类数据精度不一致时,通常应将精度较高者设定为较高级别。

2、再看看在ArcEngine中实现拓扑的过程和接口函数:

首先,拓扑作为比较高级的功能,需要在程序里首先注册相应的功能代码。实现这一必要步骤的接口是:IAoInitialize,它有Initialize 方法,必须在任何的其他组件前面使用,它可以初始化一个产品代码。这是C#的方法声明格式:public esriLicenseStatus Initialize (esriLicenseProductCode ProductCode);

esriLicenseProductCode有六个常量,我们在这里要用到的是esriLicenseProductCodeEngineGeoDB。

下面看其拓扑实现的结构流程:首先需要获取工作空间,定义IWorkspaceFactory接口,它的作用是打开相应的数据库文件,然后赋予IFeatureWorkspace接口,然后获取相应的数据集接口IFeatureDataset,将IFeatureDataset赋予ITopologyContainer以获取属于这个数据集的拓扑集合,然后利用ITopologyContainer的CreateTopology方法创建具体的拓扑类,这样就创建了属于相应数据集的拓扑了。然后就是通过一些接口和函数来设置这个拓扑的特性:图层、容限值、精度等级以及拓扑关系规则,最后通过ValidateTopology 方法执行这个拓扑即可。可以看到它的实现过程跟上面的是一样的。

3、有关geodatabase的topology规则

多边形topology

1.must not overlay:单要素类,多边形要素相互不能重叠

2.must not have gaps:单要素类,连续连接的多边形区域中间不能有空白区(非数据区)

3.contains point:多边形+点,多边形要素类的每个要素的边界以内必须包含点层中至少一个点

4.boundary must be covered by:多边形+线,多边形层的边界与线层重叠(线层可以有非重叠的更多要素)

5.must be covered by feature class of:多边形+多边形,第一个多边形层必须被第二个完全覆盖(省与全国的关系)

6.must be covered by:多边形+多边形,第一个多边形层必须把第二个完全覆盖(全国与省的关系)

7.must not overlay with:多边形+多边形,两个多边形层的多边形不能存在一对相互覆盖的要素

8.must cover each other:多边形+多边形,两个多边形的要素必须完全重叠

9.area boundary must be covered by boundary of:多边形+多边形,第一个多边形的各要素必须为第二个的一个或几个多边形完全覆盖

10.must be properly inside polygons:点+多边形,点层的要素必须全部在多边形内

11.must be covered by boundary of:点+多边形,点必须在多边形的边界上

线topology

1.must not have dangle:线,不能有悬挂节点

2.must not have pseudo-node:线,不能有伪节点

3.must not overlay:线,不能有线重合(不同要素间)

4.must not self overlay:线,一个要素不能自覆盖

5.must not intersect:线,不能有线交叉(不同要素间)

6.must not self intersect:线,不能有线自交叉

7.must not intersect or touch interrior:线,不能有相交和重叠

8.must be single part:线,一个线要素只能由一个path组成

9.must not covered with:线+线,两层线不能重叠

10.must be covered by feature class of:线+线,两层线完全重叠

11.endpoint must be covered by:线+点,线层中的终点必须和点层的部分(或全部)点重合

12.must be covered by boundary of:线+多边形,线被多边形边界重叠

13.must be covered by endpoint of:点+线,点被线终点完全重合

14.point must be covered by line:点+线,点都在线上

常见拓扑错误的修改

内容非常全面,转载:地理中国/thread-640-1-1.html 一、面不能相互重叠(must not overlap)

相关文档
最新文档