欢迎来到天天文库
浏览记录
ID:57686483
大小:23.00 KB
页数:7页
时间:2020-09-01
《ARCGIS常见拓扑错误的修改方法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一、先看看在ArcInfo里面的拓扑的实现: 其中在ArcGIS8以后,Geodatabase成为一种全新的空间数据模型。它采用一种开放的结构将空间数据(包括:矢量、栅格、影像、三维地形等)及其相关的属性数据统一存放在工业标准的数据库管理系统DBMS中。空间要素类(FeatureClass),如:河流、国界、宗地、电杆等,对应了DBMS中的表,而具体的一个要素(Feature)则是表中的一条记录。具有共同空间参考的一组空间要素类又可以组成更大的结构,称为要素数据集合(FeatureDataSet)。除了空间要素类以外,Geodatabase中还可以建立关系类、
2、几何网络、定义要素子类型、值域及规则等。所有的要素类均可以借助通用的CASE工具(如:Visio、RationalRose等)进行模型定义和扩展。 Geodatabase引入了拓扑关系规则。拓扑关系规则可作用于同一要素数据集中的不同要素类或者同一要素类中的不同要素。用户可以指定空间数据必须满足的拓扑关系约束,譬如:要素之间的相邻关系、连接关系、覆盖关系、相交关系、重叠关系等。所有这些关系都对应相应的规则。比如在土地调查规划应用中,两个相邻的地块之间不能有"飞地",我们可以有一条对应的规则:"相邻多边形间不能存在间隙"。再如,当以河流作为国界、省界、或者任何边界
3、时,河流(线状)与界线必须一致,可用规则:"线必须被多边形边线覆盖"。用户通过选择若干规则的组合构成对空间数据必须满足的拓扑关系的灵活指定。为了检查和维护空间数据的拓扑关系正确性,在ArcGISDesktop中给出了一组(编辑)工具,用于对空间数据根据用户指定的拓扑关系规则进行编辑,并帮助用户及时发现可能存在的拓扑关系错误。 Geodatabase中并不实际保存拓扑关系。不同要素类之间的公共点、公共边等要素是在拓扑编辑过程中动态地检测到的。例如,我们选择一条线并对其进行编辑,此时Geodatabase将自动检测到与此线要素具有公共几何元素的所有其它要素,当我们
4、修改该线要素时,系统自动对所有的公共边和公共点进行维护,以保持其应有的拓扑关系。这种实现方式的好处在于,可以局部、有选择的维护拓扑关系,效率很高。 在拓扑关系类中,除了拓扑关系规则外,还要指定:参与拓扑约束的各要素类,容限值(clustertolerance),精度等级(coordinateaccuracyrank)。其中:容限值指落在以此值为半径的圆形区域内的所有点被看成是一致的,会被捕捉(snap)到一起。精度级别表示每个参与拓扑约束的要素类都可以人为地赋予一个精度级别,精度级别越高,在容限值范围内需要移动时就越稳定,即:级别低的要向级别高的靠拢。当不同的
5、要素类数据精度不一致时,通常应将精度较高者设定为较高级别。二、再看看在ArcEngine中实现拓扑的过程和接口函数: 首先,拓扑作为比较高级的功能,需要在程序里首先注册相应的功能代码。实现这一必要步骤的接口是:IAoInitialize,它有Initialize方法,必须在任何的其他组件前面使用,它可以初始化一个产品代码。这是C#的方法声明格式:publicesriLicenseStatusInitialize(esriLicenseProductCodeProductCode); esriLicenseProductCode有六个常量,我们在这里要用到的是
6、esriLicenseProductCodeEngineGeoDB。 下面看其拓扑实现的结构流程:首先需要获取工作空间,定义IWorkspaceFactory接口,它的作用是打开相应的数据库文件,然后赋予IFeatureWorkspace接口,然后获取相应的数据集接口IFeatureDataset,将IFeatureDataset赋予ITopologyContainer以获取属于这个数据集的拓扑集合,然后利用ITopologyContainer的CreateTopology方法创建具体的拓扑类,这样就创建了属于相应数据集的拓扑了。然后就是通过一些接口和函数来设
7、置这个拓扑的特性:图层、容限值、精度等级以及拓扑关系规则,最后通过ValidateTopology方法执行这个拓扑即可。可以看到它的实现过程跟上面的是一样的。三、有关geodatabase的topology规则 多边形topology 1.mustnotoverlay:单要素类,多边形要素相互不能重叠 2.mustnothavegaps:单要素类,连续连接的多边形区域中间不能有空白区(非数据区) 3.containspoint:多边形+点,多边形要素类的每个要素的边界以内必须包含点层中至少一个点 4.boundarymustbecoveredby:
8、多边形+线,多边形层的边
此文档下载收益归作者所有